2013-05-31 2 views
0

이클립스에서 서명 된 패키지를 내 보낸 후 활동 중 하나가 호출 될 때 응용 프로그램이 충돌하기 시작했습니다.proguard 난독 화 후 java.lang.NoClassDefFoundError

05-30 23:05:43.814: E/AndroidRuntime(11578): FATAL EXCEPTION: main 
05-30 23:05:43.814: E/AndroidRuntime(11578): java.lang.NoClassDefFoundError: com.encryptomatic.alockbin.ItemListActivity 

나는 모든 멤버와 함께 난독 화에서 그 클래스를 완전히 배제했으며 seeds.txt에 나열된 것을 본다.

다른 활동과의 차이점은 SherlockFragmentActivity를 확장한다는 것입니다.

-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep interface com.actionbarsherlock.** { *; } 
-keepattributes *Annotation* 

여기에 무엇이 잘못 될 수있다 : 나는 모두 사용 종속성을 제외? 수업이 apk로 끝났는지 어떻게 확인할 수 있습니까?

+0

시도해보십시오. -keep public class * extends package_of_SherlockFragmentActivity.SherlockFragmentActivity' –

+0

이것은 오래된 프로젝트이며 최근 Android 개발자를 업데이트 한 것입니다. 도구? ProGuard를 비활성화하면 어떻게되는지보십시오. – Robert

답변

0

안드로이드 지원-v4.jar이 프로젝트 속성에서 빌드 경로 자바에서 내보낼 설정되지 않은 :

오른쪽 클릭을 프로젝트에 -> 속성 -> 자바 빌드 경로 -> 주문 및 수출 -> 확인란을 선택합니다 " Android private libraries "(android-support-v4.jar가 라이브러리 탭에있는 노드)

+0

이것이 문제의 해결책입니까? 다른 사람이 같은 문제가있는 경우이 대답은 이해할 수 없으므로 많은 도움이되지 않습니다. – Robert

+0

그것은 나를 위해 일했다 : 내 수업 중 하나는 "Android 개인 라이브러리"를 확인한 후 android.support.v4.app.FragmentActivity에서 확장됩니다. 그것은 작동합니다. – shily

1

신속한 답변 : ProGuard는 코드에 의해 com.encryptomatic.alockbin.ItemListActivity 클래스가 사용되고 있으므로이를 제거하지 못했습니다. 이것은 동적으로 또는 다른 비정상적인 방법으로로드되는 경우 발생할 수 있습니다. 당신이 ProGuard를 사용하는 경우

따라서 당신은 간단하게 "유지"하는 클래스로 언급 된 클래스를 추가해야합니다

-keep class com.encryptomatic.alockbin.ItemListActivity { public *; } 

는 그 다음 APK를 다시 구축하고 그것을 시도. 유지해야 할 다른 클래스가있을 가능성이 높기 때문에 앱의 모든 기능을 테스트하십시오. 모든 클래스를 확인한 경우 ProGuard 경고는 일반적으로 유지해야하는 다른 클래스가 포함되어 있으므로 확인하십시오.

+0

이렇게로드 된 클래스는 다음과 같습니다. Intent intent = new Intent (this, ItemListActivity.class); 프로 가드가 탐지하지 못했습니까? 빨리 시도하고 다시 연락하자. –

+0

그게 작동하지 않습니다. proguard cfg를 보았을 때 이미 클래스를 다음과 같이 유지했습니다. -keep public class *는 com.actionbarsherlock.app.SherlockFragmentActivity {*;}를 확장합니다. 그리고 그것이 처리되지 않았 음을 의미하는 씨앗에 나열되어 있습니다. 또한 의도 이전에 같은 방법으로로드 된 3 가지 활동이 있습니다. –

+0

이미 구성한 경우 질문에 질문을 적지 마십시오. 제시된 ProGuard 구성에는 이와 같은 내용이 포함되어 있지 않습니다. – Robert

관련 문제