【问题标题】:How can I disable loading of libraries when running the Android Emulator?运行 Android 模拟器时如何禁用库的加载?
【发布时间】:2013-08-07 21:00:15
【问题描述】:

所以我开始为 Bump 开发,但由于他们的短视,他们不支持基于 x86 的 Android 设备/模拟器。只有 ARM。

好吧,撇开小市场不谈,这对我来说是个大问题,因为出于性能原因,我非常喜欢使用基于 x86 的模拟器进行开发。

那么,(因为无论如何 Bump 在模拟器上毫无意义)我如何在模拟器中运行时禁用 Bump 库的加载?

import com.bump.api.IBumpAPI;
import com.bump.api.BumpAPIIntents;

错误:

08-06 17:58:30.895: E/AndroidRuntime(1799): java.lang.UnsatisfiedLinkError: 无法从加载器加载 android-api dalvik.system.PathClassLoader[dexPath=/data/app/com.xxxxxxxx-2.apk,libraryPath=/data/app-lib/com.xxxxxxxxx-2]: findLibrary 返回 null 08-06 17:58:30.895: E/AndroidRuntime(1799): 在 java.lang.Runtime.loadLibrary(Runtime.java:365) 08-06 17:58:30.895:E/AndroidRuntime(1799):在 java.lang.System.loadLibrary(System.java:535) 08-06 17:58:30.895: E/AndroidRuntime(1799):在 com.bump.api.BumpAPI.(BumpAPI.java:122) 08-06 17:58:30.895: E/AndroidRuntime(1799):在 java.lang.Class.newInstanceImpl(Native 方法)08-06 17:58:30.895:E/AndroidRuntime(1799):在 java.lang.Class.newInstance(Class.java:1319)

【问题讨论】:

    标签: android android-x86 bump


    【解决方案1】:

    虽然有些复杂,但您可以通过使用 android 库项目将项目拆分为多个相关项目来实现此目的。目前你可能有这样的东西

    1. 主项目 - 包括所有代码、bump 库等。这是您在设备上运行的内容

    您需要将您的应用拆分为 3 个单独的项目:

    1. 库项目 - 这将包括原始主项目中的几乎所有代码,除了凹凸库和相关代码。

    2. 设备项目 - 这将取决于库项目并添加凹凸库和相关活动。这就是您在设备上运行的内容。

    3. 模拟器项目 - 这取决于库项目。 包括凹凸库和活动。这就是您在模拟器中运行的内容。

    原理同having a paid and a free version of your app。除了付费和免费之外,您还有颠簸和非颠簸。

    【讨论】:

      【解决方案2】:

      唯一的方法是在模拟器上运行时从您的应用程序中临时删除 Bump 库和 Bump 相关代码,或者制作一个已删除 Bump 的重复应用程序(特别是在 x86 上运行)。即使您能够禁用凹凸库,android 仍然会尝试执行使用这些库的任何代码,例如 import com.bump.api.IBumpAPI; 这无论如何都会导致崩溃 =(

      【讨论】:

        【解决方案3】:

        为什么不使用 JNI 在 C 中创建一个自定义库,以满足链接依赖性,并在您的项目中使用它以模拟器为目标?

        它类似于创建伪包装器或 shim - 例如:Java 中的一个名为 fooBar 的函数,由面向 ARM 的真实库使用,它可能有参数等并返回一些东西。在伪人工库中,使用相同的参数创建一个fooBar,并返回零或虚拟对象,以模拟器为目标。

        考虑到 API 和参数、函数名称等,这听起来可能非常尴尬,这是我的头等大事。请注意,通过这条路线,任务将取决于 Bump 库使用和管理的 API 有多大,我说的是原生 .so 编译的 ARM 版本。

        【讨论】:

          猜你喜欢
          • 2012-09-25
          • 2017-03-24
          • 1970-01-01
          • 2015-02-28
          • 1970-01-01
          • 1970-01-01
          • 2018-03-16
          • 1970-01-01
          • 2014-10-17
          相关资源
          最近更新 更多