例外Ljava / lang / UnsatisfiedLinkError;在AOSP Build中初始化时抛出

时间:2017-09-16 16:58:57

标签: android java-native-interface android-source android.mk jniwrapper

大家好我正在使用jni代码在我的应用程序中生成一些数字。当我在我的设备上安装并运行它时,它正如预期的那样使用jni代码正常工作,但是当我在设备中创建 AOSP 构建闪烁system.imgboot.img时{ {1}}在运行时为UnsatisfiedLinkError代码。

  

我的项目结构,代码段和logcat如下所示

enter image description here

  

下面的代码适用于JNI Wrapper类

RandomGenerator.java

jni

Android.mk

public final class RandomGenerator {
private RandomGenerator() {}


public static native String getNumber(String code);

/***
 * load native library in static initializer
 */
 static 
  {
    System.loadLibrary("code-generator");
  }
}

Application.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := code-generator
LOCAL_SRC_FILES := $(call all-cpp-files-under, samplecode/src/main/jni)
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)

的build.gradle

APP_ABI := armeabi armeabi-v7a arm64-v8a
  

以下主要应用程序defaultConfig { applicationId "com.jni.test.service" minSdkVersion project.ext.minSdkVersion targetSdkVersion project.ext.targetSdkVersion versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" signingConfig signingConfigs.config multiDexEnabled true ndk{ moduleName "code-generator" } } sourceSets.main.jniLibs.srcDirs = ['./src/main/jni/'] externalNativeBuild { // Encapsulates your CMake build configurations. cmake { // Provides a relative path to your CMake build script. path "/src/main/jni/CMakeLists.txt" } } 代码段。

Android.mk

Android.mk
  

现在的问题是,当我使用此代码运行android应用程序时,它正常工作正常的jni代码,甚至AOSP构建成功完成。但当我闪现AOSP构建时,我得到了   <{1}}在运行时。

#Building JNI library for Code generator
include $(CLEAR_VARS)
LOCAL_MODULE := code-generator
LOCAL_SRC_FILES := $(call all-cpp-files-under, samplecode/src/main/jni)
include $(BUILD_SHARED_LIBRARY)
#Build JNI library end

#Building sample application
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS :=optional
LOCAL_SRC_FILES := $(call all-java-files-under, samplecode/src/main/java)
LOCAL_RESOURCE_DIR :=$(LOCAL_PATH)/samplecode/src/main/res
LOCAL_ASSET_DIR := $(LOCAL_PATH)/samplecode/src/main/assets
LOCAL_MANIFEST_FILE := samplecode/src/main/AndroidManifest.xml
LOCAL_PACKAGE_NAME := samplecode
LOCAL_SHARED_LIBRARIES := code-generator
LOCAL_SDK_VERSION := current
LOCAL_CERTIFICATE :=platform
LOCAL_PROGUARD_ENABLED := disabled
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := j2xx:mylib/libs/j2xx.jar
include $(BUILD_MULTI_PREBUILT)
#Building sample application end
  

注意: 在AOSP构建.so文件创建后与UnsatisfiedLinkError相关但是   在申请中找不到路径,我相信出了问题    09-16 20:32:09.780 10782-10782/com.jni.test.service W/dalvikvm: Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lcom/jni/test/service/sample/RandomGenerator; 09-16 20:32:09.780 10782-10782/com.jni.test.service D/AndroidRuntime: Shutting down VM 09-16 20:32:09.780 10782-10782/com.jni.test.service W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xb0cdcb20) 09-16 20:32:09.790 10782-11129/com.jni.test.service I/path: /data/data/com.jni.test.service/files/config.xml 09-16 20:32:09.800 10782-10782/com.jni.test.service E/AndroidRuntime: FATAL EXCEPTION: main Process: com.jni.test.service, PID: 10782 java.lang.UnsatisfiedLinkError: Couldn't load code-generator from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.jni.test.samplecode-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.jni.test.samplecode-2, /vendor/lib, /system/lib]]]: findLibrary returned null at java.lang.Runtime.loadLibrary(Runtime.java:358) at java.lang.System.loadLibrary(System.java:526) at com.jni.test.service.sample.RandomGenerator.<clinit>(Random.java:40) at com.jni.test.service.MainActivity.onCreate(MainActivity.java:101) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) configuartion。请有人帮我这个。

提前致谢。

0 个答案:

没有答案