2014-03-03 3 views
0

Eclipse에서 앱을 내보낼 때 proguard를 사용했지만 logcat에 오류가 표시되지 않았지만 앱을 실행할 때 다음 오류가 발생합니다. Proguard 앱 오류

java.lang.NullPointerException 
    at hn.<init>(Unknown Source) 
    at hp.<init>(Unknown Source) 
    at hc.a(Unknown Source) 
    at hc.<init>(Unknown Source) 
    at hb.<init>(Unknown Source) 
    at hb.<init>(Unknown Source) 
    at com.example.musicplayer.SongManager.c(Unknown Source) 
    at com.example.musicplayer.SongManager.b(Unknown Source) 
    at com.example.musicplayer.SongManager.e(Unknown Source) 
    at jr.onClick(Unknown Source) 
    at android.view.View.performClick(View.java:4247) 
    at android.view.View$PerformClick.run(View.java:17728) 
    etc ... 

나는 (위치를 기억하지 않는 유래 여기에 그것을 발견) 따라와 난독 구성을 사용 :

-injars  bin/classes 
-injars  libs 
-outjars  bin/classes-processed.jar 
-libraryjars C:/eclipse/sdk/platforms/android-19/android.jar 

-dontpreverify 
-repackageclasses '' 
-allowaccessmodification 
-optimizations !code/simplification/arithmetic 
-keepattributes *Annotation* 

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 

-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
    public void set*(...); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.content.Context { 
    public void *(android.view.View); 
    public void *(android.view.MenuItem); 
} 

-keepclassmembers class **.R$* { 
    public static <fields>; 
} 

그리고 project.properties 난독 그 라인에 난 그냥 주석을 사용할 수 있습니다. API 19 컴파일러를 사용하고 Jelly Bean 4.3.1에서 앱을 실행하고 위의 오류가 발생했습니다. 어떤 도움을 주셔서 감사합니다.

EDIT : 알림에 문제가 표시됩니다. 버튼을 누르면 NotificationReceiver 클래스 (BroadcastReceiver 구현, 매니페스트에서 선언 됨)가 실행되고 오류는 해당 버튼에 표시됩니다. Notification.Builder를 사용하여 알림을 만들고 addAction을 사용하여 버튼을 추가했습니다.

+1

-keep class com.example.musicplayer. ** {*; } – Devrim

+0

잘 작동 했으므로 난독 화되는 데이터는 적지 만 지금은 작동합니다. 고맙습니다. – Dejan

답변

1

proguard conf 파일에이 행을 추가하면 com.example.musicplayer 패키지에있는 클래스가 난독 화되지 않습니다.

-keep class com.example.musicplayer.** { *; } 
+0

누군가 더 좋은 해결책이 있다면, 게시 해주십시오 ... – Dejan

+1

@aegean이 명시 적으로 언급하고있는 패키지를 불러 낼 수 있다고 말한 것을 이끌고 있습니다. 예 : 'com.example.musicplayer.SongManager. **' – Malachi

+0

에는 보편적 인 proguard 스크립트가 있습니다.이 스크립트가 작동하지 않으며 logcat에 아무 것도 표시되지 않는다는 것을 알았습니까? 많은 것을 난독화할 필요는 없지만 코드로 실제로 뭔가를 수행하면 좋기 때문에 디 컴파일러에서 복구 할 수 없습니다. – Dejan