2013-09-26 2 views
0

난독 화 된 앱에 프로 가이드를 사용하는 방법. apk 용 애플리케이션을 내보낼 때 다음과 같은 문제가 발생합니다.eclipse에서 proguard를 사용하여 android 프로젝트를 난독 화하는 방법은 무엇입니까?

문제

[2013-09-26 13:16:53 - Fishing_log] Proguard returned with error code 1. See console 
[2013-09-26 13:16:53 - Fishing_log] proguard.ParseException: Value of system property 'init' is undefined in 'string/app_name { <init>' in line 2 of file 'C:\Users\owner\workspace8\Fishing_log\bin\proguard.txt', 
[2013-09-26 13:16:53 - Fishing_log] included from argument number 6 
[2013-09-26 13:16:53 - Fishing_log]  at proguard.ConfigurationParser.replaceSystemProperties(ConfigurationParser.java:1153) 
[2013-09-26 13:16:53 - Fishing_log]  at proguard.ConfigurationParser.file(ConfigurationParser.java:1113) 
[2013-09-26 13:16:53 - Fishing_log]  at proguard.ConfigurationParser.parseIncludeArgument(ConfigurationParser.java:242) 
[2013-09-26 13:16:53 - Fishing_log]  at proguard.ConfigurationParser.parse(ConfigurationParser.java:150) 
[2013-09-26 13:16:53 - Fishing_log]  at proguard.ProGuard.main(ProGuard.java:476) 

나는이 문제를 해결하는 방법?

나는 project.properties난독 화 - project.txt

project.properties

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 

난독 화 - project.txt

-injars lib 
-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-dontnote 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 
-dontwarn sun.misc.Unsafe, java.lang.management.ManagementFactory, org.codehaus.jackson.JsonParser, org.json.JSONObject, org.codehaus.jackson.JsonGenerator, org.codehaus.jackson.JsonFactory, com.google.common.collect.MinMaxPriorityQueue 
-keep public class * extends android.app.Application 
-keep public class com.android.vending.licensing.ILicensingService 
-keepclasseswithmembernames class * { 
    native <methods>; 
} 
-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 
-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 
-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 
#Keep the R 
-keepclassmembers class **.R$* { 
    public static <fields>; 
} 
에 다음 코드를 추가

답변

0

빌드 프로세스를 통해 도구 은 구성 파일 proguard.txt을 작성한 다음 ProGuard로 전달됩니다. 그러나 aapt의 현재 버전에는 버그가 있습니다. 올바르게 기억한다면 문자열 정의를 참조하는 클래스 이름을 가진 XML 파일을 처리하지 않습니다 (res/values/strings.xml). 당분간 그러한 문자열 정의는 피해야합니다.

proguard-project.txt 파일은 구성의 대부분이 공유 구성 파일 ${sdk.dir}/tools/proguard/proguard-android.txt에 이미 지정되어 있기 때문에 기본적으로 비어 있어야합니다. 또한 빌드 과정에서 모든 -injars, -outjars-libraryjars이 자동으로 지정됩니다.

+0

이 문제는 res/values ​​/ string.xml에서 ACRA.First android : name = ""선언으로 인해 생성되었습니다. 하드 코딩 된 문자열 및이 문제가 해결되었습니다. – mukesh

관련 문제