2015-01-21 2 views
0

나는 그냥 난독 화 - rule.txtProguard : 어떻게 두 가지 방법을 혼란스럽게합니까?

-keep class !com.some.package.MyActivity { 
      private void onePrivateMethod(); 
      private void twoPrivateMethod(); 
} 

그러나 오류 발생에 사용하려고합니다.

Warning:'com.google.android.gms.ads.AdRequest$Builder setLocation(android.location.Location)' in program class com.google.android.gms.ads.AdRequest$Builder 
Warning:there were 1 unresolved references to program class members. 
     Your input classes appear to be inconsistent. 
     You may need to recompile the code.  
     (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)  
:proguardRelease FAILED 
Error:Execution failed for task ':proguardRelease'. 
> java.io.IOException: Please correct the above warnings first. 

프로젝트를 다시 작성하십시오.

UPD 로그 캣 요약 -dontwarn com.google.**

java.lang.RuntimeException: Missing type parameter. 
01-21 13:24:19.191 22884-23039/ru.my.package W/System.err﹕ at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(Unknown Source) 
01-21 13:24:19.191 22884-23039/ru.my.package W/System.err﹕ at com.google.gson.reflect.TypeToken.<init>(Unknown Source) 
01-21 13:24:19.191 22884-23039/ru.my.package W/System.err﹕ at ru.my.package.util.JsonMaster$1.<init>(Unknown Source) 
01-21 13:24:19.191 22884-23039/ru.my.package W/System.err﹕ at ru.my.package.util.JsonMaster.parseListOfCity(Unknown Source) 
01-21 13:24:19.191 22884-23039/ru.my.package W/System.err﹕ at ru.my.package.api.server.AsyncCitiesListDownloader.doInBackground(Unknown Source) 
01-21 13:24:19.191 22884-23039/ru.my.package W/System.err﹕ at ru.my.package.api.server.AsyncCitiesListDownloader.doInBackground(Unknown Source)   
+0

본건을 바탕으로
는 방법을 알고 있지만, 난독 화에 입력하여 AdMob을 첫 번째 오류 당신은 방지 할 수 있습니다. -dontwarn의 com.google.gms ** – Opiatefuchs

+0

@Opiatefuchs 좋아요, 그것은 작동합니다. 하지만 지금은 다른 모든 클래스를 모호하게 만들었고 응용 프로그램이 깨졌습니다. – andreich

+0

logcat은 무엇입니까? – Opiatefuchs

답변

0

를 추가 한 후, 도움을 @Opiatefuchs 감사합니다.
외부 클래스에서 필요한 메소드를 이동 했으므로 이제 config를 사용합니다.
난독 화 클래스 com.my.pakage.SomeClass을 허용하고 앱이 완벽하게 작동합니다. https://stackoverflow.com/a/8181232/1654690

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontskipnonpubliclibraryclassmembers 
-dontpreverify 
-verbose 
-dump class_files.txt 
-printseeds seeds.txt 
-printusage unused.txt 
-printmapping mapping.txt 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-allowaccessmodification 
-keepattributes *Annotation* 
-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 
-repackageclasses '' 
-dontwarn com.google.andoird.gms.** 
-dontwarn ru.adcamp.ads.** 

## Class to obfuscate 
-keep class !com.my.pakage.SomeClass{ *; } 

-keep class ru.**{*;} 

##---------------Begin: proguard configuration for Gson ---------- 
# Gson uses generic type information stored in a class file when working with fields. Proguard 
# removes such information by default, so configure it to keep all of it. 
-keepattributes Signature 

# Gson specific classes 
-keep class sun.misc.Unsafe { *; } 
#-keep class com.google.gson.stream.** { *; } 

##---------------End: proguard configuration for Gson ---------- 

##=============== ADDITIONAL ============== 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

# Explicitly preserve all serialization members. The Serializable interface 
# is only a marker interface, so it wouldn't save them. 
-keepclassmembers class * implements java.io.Serializable { 
    static final long serialVersionUID; 
    private static final java.io.ObjectStreamField[] serialPersistentFields; 
    private void writeObject(java.io.ObjectOutputStream); 
    private void readObject(java.io.ObjectInputStream); 
    java.lang.Object writeReplace(); 
    java.lang.Object readResolve(); 
} 

-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.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class com.android.vending.licensing.ILicensingService 
-dontnote com.android.vending.licensing.ILicensingService 

# Preserve all native method names and the names of their classes. 
-keepclasseswithmembernames class * { 
    native <methods>; 
} 

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

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

# Preserve static fields of inner classes of R classes that might be accessed 
# through introspection. 
-keepclassmembers class **.R$* { 
    public static <fields>; 
} 
관련 문제