所以我已经开始为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 = /数据/应用/ com.xxxxxxxx-2.apk,libraryPath = /数据/ 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):at java.lang.System.loadLibrary(System.java:535)08-06 17:58:30.895: E / AndroidRuntime(1799):at com.bump.api.BumpAPI。(BumpAPI.java:122)08-06 17:58:30.895: E / AndroidRuntime(1799):at java.lang.Class.newInstanceImpl(Native 方法)08-06 17:58:30.895:E / AndroidRuntime(1799):at java.lang.Class.newInstance(Class.java:1319)
答案 0 :(得分:0)
唯一的方法是在模拟器上运行时临时从应用程序中删除Bump Libraries和Bump相关代码,或者创建一个从Bump中删除Bump的重复应用程序(特别是在x86上运行)。即使您能够禁用凹凸库,android仍然会尝试执行使用这些库的任何代码,例如import com.bump.api.IBumpAPI;
,这会导致崩溃=(
答案 1 :(得分:0)
虽然有点复杂,但您可以通过使用android库项目将项目拆分为多个相关项目来实现此目的。目前你可能有这样的东西
您需要将应用分成3个单独的项目:
图书馆项目 - 这将包括原始主项目中的几乎所有代码,但凹凸库和相关代码除外。
设备项目 - 这将取决于库项目并添加凹凸库和相关活动。这就是您在设备上运行的内容。
模拟器项目 - 这取决于库项目。凹凸库和活动包含不。这是您在模拟器中运行的内容。
该理论与having a paid and a free version of your app相同。除了付费和免费之外,你有碰撞和无碰撞。
答案 2 :(得分:0)
为什么不使用JNI在C中创建自定义库,以满足链接依赖性,并在目标模拟器的项目中使用它?
它类似于创建伪包装器或填充程序 - 例如:Java中的一个名为fooBar
的函数,它由目标ARM的实际库使用,它可能有参数等并返回一些东西。在伪人工库中,使用fooBar
创建一个,使用相同的参数并返回零或虚拟对象,目标是模拟器。
考虑到API和参数,功能名称等,这可能听起来非常尴尬。只是要注意,通过沿着这条路线走下去,任务将取决于Bump库使用和控制的API有多大,我在谈论本地.so
编译的ARM版本。