2010-04-08 6 views
6

inbuilt android app에 외부 제 3 자 jar 파일을 추가하고 싶습니다.Android.mk에 외부 jar 참조 추가하기

Android.mk에 LOCAL_CLASSPATH 변수를 추가 했으므로 컴파일이 잘 진행됩니다. 그러나 런타임 중에는 JAR에있는 클래스 정의를 찾을 수 없습니다.

.dex/.apk에 타사 JAR을 추가하기 위해 설정해야하는 변수는 무엇입니까?

TIA.

답변

12

내가 문제를 해결하는 데 사용되는 것입니다.

-2

Eclipse에서 수정 빌드 경로를 선택하고 외부 jar 추가를 선택하고 포함시킬 jar를 선택하십시오. 또한 컴파일 LOCAL_STATIC_JAVA_LIBRARIES에 라이브러리 이름을 지정해야

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := path_to_jar_file.jar 
include $(BUILD_MULTI_PREBUILT) 

Android.mk에 추가해야

include $(BUILD_PACKAGE) 후 : 여기

+1

사실, Android.mk에서이 작업을 수행하려고합니다. – Karan

+0

안드로이드 프로젝트에 lib 디렉토리를 만들고 jar 파일을 추가하십시오. –

0

LOCAL_STATIC_JAVA_LIBRARIES &플래그로 추가하십시오.

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES 사이를 포함하면, $(BUILD_PACKAGE) &을 포함한다. $(BUILD_MULTI_PREBUILT)을 포함한다.

괜찮습니다. a2ronus URL을 제공해 주셔서 감사합니다.

15

예를 들어 이야기하는 것 이상입니다.

... 

LOCAL_STATIC_JAVA_LIBRARIES := libmylibs 

LOCAL_PACKAGE_NAME := myapp 

... 

include $(BUILD_PACKAGE) 

################################################## 
include $(CLEAR_VARS) 

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libmylibs:mylib.jar 

include $(BUILD_MULTI_PREBUILT) 

참고 : 프로젝트 루트에 "mylib.jar"를 넣으십시오.

+1

단지 몇 개의 노트를 추가하고 싶습니다. "libmylibs"는 기본적으로 상징적 인 이름입니다. 두 선언에서 같은 이름을 사용하는 한 "foo"를 쉽게 사용할 수 있습니다. 또한 원하는 경우 jar 파일의 전체 경로를 사용할 수 있습니다 (예 : "libs/mylib.jar". 이것은 전형적인 일식 작업 환경과 호환되기 때문에 편리합니다. –

+1

LOCAL_PACKAGE_NAME이 무엇인지 설명해 주시겠습니까? 여기에서 사용해야하는 것은 jar 파일에 org.jivesoftwar.smack 및 org.jivesoftwar.smacks와 같은 패키지가 있습니다. 그렇다면 org.jivesoftwar를 LOCAL_PACKAGE_NAME으로 사용해야합니까? – anargund

+1

이 답변은 실제로 설명이 부족하지만 허용 된 답변보다 낫다고 생각합니다. – cwhsu

0
LOCAL_STATIC_JAVA_LIBRARIES := \ 
other libs \ 
your_jar 

include $(CLEAR_VARS) 
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := your_jar:jar_path/jar_file.jar 
include $(BUILD_MULTI_PREBUILT) 
관련 문제