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

时间:2015-12-29 05:17:15

标签: android-ndk android-emulator

这是these instructions,当我尝试使用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)

2 个答案:

答案 0 :(得分:5)

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

  • 创建jni / Application.mk,编写&#34; APP_ABI:= x86 armeabi armeabi-v7a&#34;
  • NDK-构建
  • 在genymotion中调试应用

答案 1 :(得分:0)

使用Visual Studio for Mac我在构建应用程序的发行版本时使用ARM转换在Genymotion上运行时会出现类似的错误。 {{1}}

  1. 我通过以下步骤解决了这个问题:

  2. 右键单击项目名称

  3. 选择选项

  4. 选择构建

  5. 选择 Android Build

  6. 配置更改为发布(有效)

  7. 转到高级标签,在支持的ABI

  8. 下添加 x86