Как отключить загрузку библиотек при запуске эмулятора Android?

Поэтому я начал разработку для Bump, и из-за своей недальновидности они не поддерживают Android-устройства/эмуляторы на базе x86. Только АРМ.

Ну, если оставить в стороне небольшой рынок, для меня это большая проблема, поскольку мне очень нравится разрабатывать с использованием эмулятора на базе 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 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(собственный метод) 08-06 17:58: 30.895: E/AndroidRuntime(1799): в java.lang.Class.newInstance(Class.java:1319)


person Magnus Johansson    schedule 06.08.2013    source источник


Ответы (3)


Хотя это несколько сложно, вы можете добиться этого, разделив свой проект на несколько связанных проектов, используя проект библиотеки Android. В настоящее время у вас, вероятно, есть что-то вроде этого

  1. Основной проект – включает весь код, библиотеки Bump и т. д. Это то, что вы запускаете на устройствах.

Вам нужно будет разделить ваше приложение на 3 отдельных проекта:

  1. Библиотечный проект. Он будет включать почти весь код исходного основного проекта, за исключением библиотеки Bump и связанного кода.

  2. Проект устройства. Это зависит от проекта библиотеки и добавляет библиотеку рельефов и связанные с ней действия. Это то, что вы запускаете на устройствах.

  3. Проект эмулятора. Это зависит от проекта библиотеки. Библиотека ударов и действия не включены. Это то, что вы запускаете в эмуляторе.

Теория такая же, как и у платной и бесплатной версии вашего приложения. За исключением того, что вместо платного и бесплатного у вас есть удар и не удар.

person Luke Sleeman    schedule 14.08.2013

Единственный способ — временно удалить библиотеки Bump и код, связанный с Bump, из вашего приложения при работе на эмуляторе или создать дубликат приложения, из которого удален Bump (специально для работы на x86). Даже если вы сможете отключить библиотеки Bump, Android все равно попытается выполнить любой код, использующий эти библиотеки, например import com.bump.api.IBumpAPI;, что в любом случае приведет к сбою =(

person Gatekeeper    schedule 11.08.2013

Почему бы не создать пользовательскую библиотеку на C с использованием JNI, чтобы удовлетворить зависимость от ссылки, и использовать ее в своем проекте, ориентированном на эмулятор?

Это похоже на создание псевдооболочки или прокладки - например: функция в Java с именем fooBar, которая используется реальной библиотекой, ориентированной на ARM, она может иметь параметры и т. д. и что-то возвращает. В псевдоискусственной библиотеке создайте один с fooBar, используя те же параметры и верните нулевой или фиктивный объект, нацеленный на эмулятор.

Это может показаться ужасно неудобным, учитывая API и параметры, имена функций и т. д., которые приходят мне в голову. Просто чтобы знать, что при выборе этого пути задача будет зависеть от того, насколько большой API используется и управляется библиотекой Bump, я говорю о нативной .so скомпилированной версии ARM.

person t0mm13b    schedule 17.08.2013