2011-07-06 5 views
1

몇 가지 다른 라이브러리를 사용하는 Android 애플리케이션을 내보내려고합니다. 라이브러리 중 두 개는 jar 파일이지만 다른 라이브러리는 프로젝트에 링크되어 있습니다. 예를 들어 도서관 중 하나는지도 뷰 풍선보기입니다. 라이브러리를 사용하려면 프로젝트를 내 작업 공간에 추가하고 프로젝트 속성으로 이동 한 다음 Android에서 프로젝트를 "라이브러리로 사용"으로 표시했습니다. 그런 다음 애플리케이션을 빌드 할 때 경로 (Android 메뉴)를 사용하여 프로젝트 라이브러리를 연결했습니다. 응용 프로그램이 올바르게 내 휴대폰에서 다음 오류로 인해 응용 프로그램을 실행하려고하면 오류가 발생합니다.Android Proguard에서 연결된 프로젝트 라이브러리가있는 APK를 실행하는 데 문제가 있습니다.

07-06 13:50 : 00.238 : 오류/AndroidRuntime (3282) : 원인 : java.lang. ClassNotFoundException : 로더의 com.markupartist.android.widget.ScrollingTextView dalvik.system.PathClassLoader [/system/framework/com.google.android.maps.jar:/data/app/com.alltrails-1.apk]

-dontwarn -dontnote -dontskipnonpubliclibraryclasses -libraryjars libs와/osmdroid - 안드로이드-3.0.4.jar:

내 난독 파일에는 다음이 포함되어-libraryjars libs/osmdroid-google-3.0.4.jar -libraryjars libs/slf4j-android-1.5.8.jar -libraryjars/Applications/android-sdk-mac_x86/add-ons/addon_google_apis_google_inc_4/libs/maps. 병

미리 감사드립니다 !!

답변

0

클래스 com.markupartist.android.widget.ScrollingTextView가 응용 프로그램에서 누락되었습니다. 라이브러리 jar 중 하나에 있으면 라이브러리 jar의 내용이 출력 jar로 복사되지 않으므로 jar를 프로그램 jar (-injars)로 지정해야합니다.

+2

에릭에게 답장을 보내 주셔서 감사합니다. 사실 문제가 해결되었습니다. markupartist 패키지는 "라이브러리 프로젝트"(내 작업 공간의 프로젝트이고 실제로 프로젝트를 링크했습니다) 그래서 proguard.cfg에 다음을 추가해야했습니다. -keep public class com.markupartist.android. ** { public로 보호 된 *; } – kevin78925

+0

그런 경우에는 클래스 ScrollingTextView (및 기본이 아닌 일부 생성자)를 유지하면 충분할 수 있습니다. 라이브러리 코드는 ProGuard에 관한 한 일반적인 프로그램 코드입니다. 모든 공공 도서관 클래스와 클래스 멤버를 유지하는 것은 처리 된 코드를 일반 라이브러리로 사용하는 경우에만 필요합니다. –

관련 문제