genymotion ARM翻译:".../lib/arm/libndk.so"有意想不到的e_machine:40

poz*_*ndw 3 android-ndk android-emulator

这是完整的代码,当我尝试android jni示例时,我得到has unexpected e_machine,完整的步骤是:

  • $ /media/roroco/disk750/adr/android-ndk-r10e/ndk-buil
  • 在项目中,新的Android应用程序,并运行它

并得到以下输出

Process: com.mamlambo.sample.ndk1, PID: 5560
        java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.mamlambo.sample.ndk1-1/lib/arm/libndk1.so" has unexpected e_machine: 40
            at java.lang.Runtime.loadLibrary(Runtime.java:371)
            at java.lang.System.loadLibrary(System.java:988)
            at com.mamlambo.sample.ndk1.AndroidNDK1SampleActivity.<clinit>(AndroidNDK1SampleActivity.java:35)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.Class.newInstance(Class.java:1606)
Run Code Online (Sandbox Code Playgroud)

poz*_*ndw 5

我找到解决方案,原因是我使用genymotion并安装genymotion armtranslation,armtranslation有bug,所以我应该将c构建到x86设备,步骤是:

  • 创建jni/Application.mk,写"APP_ABI:= x86 armeabi armeabi-v7a"
  • NDK建造
  • 在genymotion中调试应用程序