Итак, я работаю над проектом Android NDK, и я получил свой код C ++ для компиляции в .so
файл с помощью Android.mk
сделать файл. Он даже собирается, но не запускается в эмуляторе. Я продолжаю получать эту ошибку:
06-22 17:01:06.374 2463-2463/com.example.SanAngeles E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.SanAngeles, PID: 2463
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.SanAngeles-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.SanAngeles-2/lib/x86_64, /vendor/lib64, /system/lib64]]] couldn't find "libsanangeles.so"
А вот и мой Android.mk:
LOCAL_PATH := $(call my-dir)
# Project
include $(CLEAR_VARS)
LOCAL_MODULE := sanangeles
FREETYPE_INCLUDE := freetype2-android/include
LOCAL_C_INCLUDES := \
$(FREETYPE_INCLUDE) \
$(FREETYPE_INCLUDE)/freetype/ \
$(FREETYPE_INCLUDE)/freetype/config \
$(FREETYPE_INCLUDE)/freetype/internal \
$(FREETYPE_INCLUDE)/freetype/internal/services
LOCAL_STATIC_LIBRARIES := freetype
LOCAL_LDLIBS := -landroid -lEGL -lGLESv2
LOCAL_CFLAGS := -DANDROID_NDK -DDISABLE_IMPORTGL
LOCAL_SRC_FILES := \
src/triangle.cpp \
src/app-android.c \
src/Helpers/ivec2.cpp \
src/Helpers/vec3.cpp \
src/Renderers/BoxRenderer.cpp \
src/Renderers/TextRenderer.cpp \
src/Renderers/Shader.cpp
include $(BUILD_SHARED_LIBRARY)
Изменить: Забыл включить структуру проекта
app/
build/
src/
main/
java/
jni/
freetype2-android/
src/
Android.mk
Application.mk
build.gradle
build
build.gradle
Edit2:
Где это загружается в Java:
приложение / SRC / главная / Java / com.example.SanAngeles / DemoActivity.java
public class DemoActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGLView = new DemoGLSurfaceView(this);
setContentView(mGLView);
}
private GLSurfaceView mGLView;
static {
System.loadLibrary("sanangeles");
}
}
Изменить 3:
build.gradle в приложении /
android {
compileSdkVersion = 23
buildToolsVersion = '23.0.2'
defaultConfig.with {
applicationId = 'com.example.SanAngeles'
minSdkVersion = 4
targetSdkVersion = 23
}
sourceSets.main {
jniLibs.srcDirs = ['src/main/jni/libs']
}
buildTypes {
release {
minifyEnabled=false
proguardFiles.add(file('proguard-rules.txt'))
}
}
}
Задача ещё не решена.
Других решений пока нет …