【问题标题】:genymotion ARM translation: "…/lib/arm/libndk.so" has unexpected e_machine: 40genymotion ARM 翻译:“…/lib/arm/libndk.so”有意外的 e_machine:40
【发布时间】:2016-04-02 23:18:02
【问题描述】:

这里是full code,当我尝试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)

【问题讨论】:

    标签: android-ndk android-emulator


    【解决方案1】:

    使用 Visual Studio for Mac 构建应用程序的发布版本并在 Genymotion 上使用 ARM 翻译运行它时,我遇到了类似的错误。 java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/&lt;appname&gt;/lib/arm/libmonodroid.so" has unexpected e_machine: 40

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

    2. 右键项目名称

    3. 选择选项

    4. 选择构建

    5. 选择 Android 构建

    6. 配置更改为Release(Active)

    7. 转到高级选项卡并在支持的 ABI

    8. 下添加 x86

    【讨论】:

      【解决方案2】:

      我找到了解决办法,原因是我使用genymotion并安装了genymotion armtranslation,armtranslation有bug,所以我应该将c编译到x86设备,步骤是:

      • 创建 jni/Application.mk,编写“APP_ABI := x86 armeabi armeabi-v7a”
      • ndk 构建
      • 在 genymotion 中调试应用程序

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-12
        • 1970-01-01
        • 2018-10-26
        • 2015-02-25
        • 2014-05-31
        • 2016-11-27
        • 2014-06-11
        • 1970-01-01
        相关资源
        最近更新 更多