2016-12-08 6 views
-1

불필요한 코드를 차단하기 위해 ProGuard를 구현했습니다. 하지만 앱이 시작된 후 다음과 같은 오류가 표시됩니다. -java.lang.NoClassDefFoundError : 실패한 해결 방법 : Ljavax/naming/ldap/LdapName

java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/naming/ldap/LdapName; 
at b.a.b.e.d.a.b(Unknown Source) 
at b.a.b.e.d.a.a(Unknown Source) 
at b.a.b.e.d.a.a(Unknown Source) 
at b.a.b.e.d.a.a(Unknown Source) 
at b.a.b.e.d.f.a(Unknown Source) 
at b.a.b.e.d.f.a(Unknown Source) 
at b.a.b.e.d.f.a(Unknown Source) 
at b.a.b.h.c.h.a(Unknown Source) 
at b.a.b.h.c.p.a(Unknown Source) 
at b.a.b.h.b.o.a(Unknown Source) 
at b.a.b.h.b.o.a(Unknown Source) 
at b.a.b.h.b.a.a(Unknown Source) 
at b.a.b.h.b.h.a(Unknown Source) 
at b.a.b.h.b.h.a(Unknown Source) 
at b.a.b.h.b.h.execute(Unknown Source) 
at com.c.a.ae.a(Unknown Source) 
at com.c.a.b.a(Unknown Source) 
at com.c.a.aa.run(Unknown Source) 
at java.lang.Thread.run(Thread.java:818) 
Caused by: java.lang.ClassNotFoundException: Didn't find class "javax.naming.ldap.LdapName" on path: DexPathList[[zip file "/data/app/bd.com.chalo-1/base.apk"],nativeLibraryDirectories=[/data/app/bd.com.chalo-1/lib/arm64, /data/app/bd.com.chalo-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]] 
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
... 19 more 
Suppressed: java.lang.ClassNotFoundException: javax.naming.ldap.LdapName 
    at java.lang.Class.classForName(Native Method) 
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
    ... 20 more 
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 

이제 어떻게해야합니까? 내 도서관과 관련이 있습니까? ,

는 "ProGuard에서 도구를 축소 최적화하고, 사용하지 않는 코드를 제거하고 의미 상 모호한 이름으로 클래스, 필드, 메소드 이름을 변경하여 코드를 난독 화 : 난독

+0

가 어디 확인 후 mapping.txt으로 트레이스를 사용하고 있습니다 오류가 발생합니다. 그런 다음 프로 가드 규칙을 조정하십시오. – EarlOfEgo

답변

0

안드로이드의 문서과 같이 그것을 설명합니다. 그 결과 작은 크기의 .apk 파일이 리버스 엔지니어링하기가 더 어렵습니다 .... ProGuard를 실행하는 것은 완전히 선택 사항이지만 권장됩니다. "

앱에 타사 라이브러리, 브로드 캐스트 수신기, 사용자 정의 위젯 등이 포함되어있는 경우 문제가 발생할 수 있습니다.이 클래스를 추가하려면 프로 가드 규칙을 추가해야합니다. 런타임 그렇지 않으면 클래스는 APK 버전에서 컴파일되지 않으며 오류를

난독 화에 대한 자세한 내용은

를 얻을 것이다 그것은 사용이 링크를 볼 수있다 :

: http://omgitsmgp.com/2013/09/09/a-conservative-guide-to-proguard-for-android/

규칙은 당신이 사용할 수있는 양식 표준 난독있다

# Add any project specific keep options here: 

# If your project uses WebView with JS, uncomment the following 
# and specify the fully qualified class name to the JavaScript interface 
# class: 
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { 
# public *; 
#} 

# Obfuscation parameters: 
#-dontobfuscate 
-useuniqueclassmembernames 
-keepattributes SourceFile,LineNumberTable 
-allowaccessmodification 

# Ignore warnings: 
#-dontwarn org.mockito.** 
#-dontwarn org.junit.** 
#-dontwarn com.robotium.** 
#-dontwarn org.joda.convert.** 

# Ignore warnings: We are not using DOM model 
-dontwarn com.fasterxml.jackson.databind.ext.DOMSerializer 
# Ignore warnings: https://github.com/square/okhttp/wiki/FAQs 
-dontwarn com.squareup.okhttp.internal.huc.** 
# Ignore warnings: https://github.com/square/okio/issues/60 
-dontwarn okio.** 
# Ignore warnings: https://github.com/square/retrofit/issues/435 
-dontwarn com.google.appengine.api.urlfetch.** 

# Keep the pojos used by GSON or Jackson 
-keep class com.futurice.project.models.pojo.* { ; } 

# Keep GSON stuff 
-keep class sun.misc.Unsafe { *; } 
-keep class com.google.gson.* { ; } 

-keep public class Socket 

# Keep Jackson stuff 
-keep class org.codehaus.* { ; } 
-keep class com.fasterxml.jackson.annotation.* { ; } 

# Keep these for GSON and Jackson 
-keepattributes Signature 
-keepattributes Annotation 
-keepattributes EnclosingMethod 

# Keep Retrofit 
-keep class retrofit.* { ; } 
-keepclasseswithmembers class * { 
    @retrofit.** *; 
} 
-keepclassmembers class * { 
    @retrofit.** *; 
} 
-keep public class com.mikhaellopez:circularimageview:2.1.1.* { ; } 
# Keep Picasso 
-keep class com.squareup.picasso.* { ; } 
-keepclasseswithmembers class * { 
    @com.squareup.picasso.** *; 
} 
-keepclassmembers class * { 
    @com.squareup.picasso.** *; 
} 
(210)

은 참조 표준 양식의 내용은 ... 당신의 난독 파일에 을이 규칙을 추가하기 : https://github.com/futurice/android-best-practices/blob/master/templates/rx-architecture/app/proguard-rules.pro

을이 : https://gist.github.com/Jackgris/c4a71328b1ae346cba04