2013-08-06 5 views
2

그래서 Bump를 개발하기 시작했습니다. 짧은 시일 내에 x86 기반 Android 기기/에뮬레이터를 지원하지 않습니다. ARM 만.Android 에뮬레이터를 실행할 때 어떻게 라이브러리를로드하지 못하게 할 수 있습니까?

성능 측면에서 x86 기반 에뮬레이터를 사용하여 개발하는 것을 즐기기 때문에 작은 시장을 제쳐두고 큰 문제가됩니다.

(에뮬레이터에서 Bump가 무의미하기 때문에) 에뮬레이터에서 실행 중일 때 어떻게 범프 라이브러리를로드하지 못하게 할 수 있습니까?

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

오류 :

08-06 17:58:30.895: E/AndroidRuntime(1799): java.lang.UnsatisfiedLinkError: Couldn't load android-api from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.xxxxxxxx-2.apk,libraryPath=/data/app-lib/com.xxxxxxxxx-2]: findLibrary returned null 08-06 17:58:30.895: E/AndroidRuntime(1799): at 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 Method) 08-06 17:58:30.895: E/AndroidRuntime(1799): at java.lang.Class.newInstance(Class.java:1319)

답변

0

다소 복잡한 반면, . 안드로이드 라이브러리 프로젝트를 사용하여 여러 관련 프로젝트들로 투영 현재 당신은 아마이

  1. 홈페이지 프로젝트 같은이 - 모든 코드를 포함, 도서관 범프 등이이 장치에서 실행되는 것입니다
  1. 도서관 프로젝트을 -이 뜻은 범프 라이브러리 및 관련 코드를 제외하고, 원래의 주요 프로젝트의 거의 모든 코드가 포함되어 있습니다 :당신은 3 개 별도의 프로젝트로 응용 프로그램을 분리해야합니다.

  2. 장치 프로젝트 - 이것은 라이브러리 프로젝트에 따라 다르며 범프 라이브러리와 관련 활동을 추가합니다. 이것은 당신이 장치에서 실행하는 것입니다.

  3. 에뮬레이터 프로젝트 - 이것은 라이브러리 프로젝트에 따라 다릅니다. 범프 라이브러리 및 활동은 이 아니며이 포함되어 있습니다. 이것은 에뮬레이터에서 실행하는 것입니다.

이론은 having a paid and a free version of your app과 동일합니다. 대신 유료 및 무료, 범프 및 비 - 범프가 있습니다.

0

있는 유일한 방법은 일시적으로 범프 라이브러리를 제거하고 에뮬레이터에서 실행 할 때 응용 프로그램에서 관련 코드를 범프 또는 범프에서 제거했습니다 중복 응용 프로그램을 만드는 것 그것 (특히 x86에서 실행). 범프 라이브러리를 사용하지 못하게해도 안드로이드는 여전히 그 라이브러리를 사용하는 코드를 실행하려고 시도합니다. 예를 들어 import com.bump.api.IBumpAPI;은 충돌을 일으 킵니다. (

0

JNI를 사용하여 C에서 사용자 지정 라이브러리를 만들고 링크 종속성을 만족시키지 않고 왜 에뮬레이터를 대상으로하는 프로젝트에서 사용합니까?

의사 래퍼 또는 심을 만드는 것과 비슷합니다. 예를 들어 fooBar이라는 실제 라이브러리에서 ARM을 타겟으로 사용하는 Java의 함수는 매개 변수 등을 가지고있을 수 있습니다. 의사 인공 라이브러리에서 동일한 매개 변수를 사용하여 fooBar으로 하나를 만들고 에뮬레이터를 대상으로 제로 또는 더미 개체를 반환합니다.

API 및 매개 변수, 함수 이름 등을 고려하면 머리가 아프다. 이 경로를 따라 가면 Bump 라이브러리가 사용하고 관리하는 API의 크기에 따라 태스크가 달라질 것이라는 것을 알고 있기 때문에 기본 .so 컴파일 된 ARM 버전에 대해 이야기하고 있습니다.