2017-12-12 20 views
0

Google, stackoverflow 등에서 많이 검색했지만 아직 완벽한 해결책이 없습니다. 사실 저는 리버스 엔지니어링을받지 못하도록하고 싶습니다.이를 위해 프로 가드를 사용하고 프로젝트에 몇 가지 규칙을 정의했습니다. 위의 규칙 집합을 정의한 후에는 서명 된 APK가 스플래시 화면을 넘지 않습니다. Proguard 이외의 솔루션이 있으면 환영합니다.ProGuard는 내 서명 된 APK가 실행되지 않도록합니다

proguard-rules.pro

-keep public class com.bbpos.emvswipe.* { 
public *** get*(); 
public void set*(***); 
} 


-keep public class com.bbpos.wisepad.* { 
public *** get*(); 
    public void set*(***); 
} 

-dontwarn com.bbpos.** 

-keep class com.github.mikephil.charting.** { *; } 
-dontwarn io.realm.** 

-keep public class * extends org.xmlpull.v1.XmlPullParser 
-dontwarn org.xmlpull.** 

-keep public class                 com.google.android.gms.cast. 
framework.media.TracksChooserDialogFragment 
-dontwarn com.google.android.gms.cast.framework.** 

-keep class com.google.android.gms.internal.** { *; } 
-dontwarn com.google.android.gms.internal.zznv 

-keep class org.codehaus.jackson.map.ObjectMapper 
-dontwarn org.codehaus.jackson.** 

-keep class okhttp3.internal.huc.HttpURLConnectionImpl 
-dontwarn okhttp3.** 

-keep class java.nio.file.* 
-dontwarn java.nio.file.* 

-keep class org.codehaus.mojo.animal_sniffer.* 
-dontwarn org.codehaus.mojo.animal_sniffer.* 

-keep public class org.simpleframework.**{ *; } 
-keep class org.simpleframework.xml.**{ *; } 
-keep class org.simpleframework.xml.core.**{ *; } 
-keep class org.simpleframework.xml.util.**{ *; } 
-dontwarn org.simpleframework.xml.stream.** 

로그 캣

W/dalvikvm: Failed processing annotation value 
W/System.err: java.lang.NoSuchFieldError: APP_PREFERENCE 
W/System.err:  at java.lang.reflect.Field.getAnnotation(Native Method) 
W/System.err:  at java.lang.reflect.Field.getAnnotation(Field.java:209) 
W/System.err:  at cbm.a(Unknown Source) 
W/System.err:  at cbk.i(Unknown Source) 
W/System.err:  at com.sparken.echallan.activity.SplashActivity.onCreate(Unknown Source) 
W/System.err:  at android.app.Activity.performCreate(Activity.java:5264) 
W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302) 
W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
W/System.err: java.lang.NullPointerException 
W/System.err:  at com.sparken.echallan.activity.SplashActivity.onCreate(Unknown Source) 
W/System.err:  at android.app.Activity.performCreate(Activity.java:5264) 
W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302) 
W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
+0

'내 프로젝트에 몇 가지 규칙을 정의했다. '-> 코드베이스를 거치지 않고 어떤 파일이 영향을 받는지보기가 어렵다. 나의 첫 번째 제안은 추가 한 모든 사용자 정의 규칙을 비활성화하고 github 페이지에 지정된 각 라이브러리에 대해 표준 프로 가드 규칙 만 추가하고 결과 빌드를 확인하는 것입니다. 그 후에 추가 맞춤 설정을 진행합니다. – blizzard

답변

-1

당신의 progaurd-규칙 파일에서 모든 공공 워드 발행 수를 제거하십시오.