2012-05-11 106 views
0

我想用Proguard使用Android SDK来混淆我的代码。 .pro文件中出现语法错误。我试图更新proguard jar文件,但没有任何帮助。我搜查了一下,发现了一个问题,但没有任何答案有帮助。Android Proguard语法错误

我已经包含控制台日志和我的proguard.cfg。我该如何解决这个问题?

我的控制台日志:

[2012-05-11 20:12:09 - WrtsMobile] Proguard returned with error code 1. See console 
[2012-05-11 20:12:09 - WrtsMobile] Error: @C:\Users\SEBAST~1\AppData\Local\Temp\android_5842287394885430823.pro (De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist) 
[2012-05-11 20:14:19 - WrtsMobile] Proguard returned with error code 1. See console 
[2012-05-11 20:14:19 - WrtsMobile] Error: @C:\Users\SEBAST~1\AppData\Local\Temp\android_5684176843163078198.pro (De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist) 
[2012-05-11 20:15:47 - WrtsMobile] Proguard returned with error code 1. See console 
[2012-05-11 20:15:47 - WrtsMobile] Error: @C:\Users\SEBAST~1\AppData\Local\Temp\android_9001247977726315753.pro (De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist) 
[2012-05-11 20:16:55 - WrtsMobile] Proguard returned with error code 1. See console 
[2012-05-11 20:16:55 - WrtsMobile] Error: @C:\Users\SEBAST~1\AppData\Local\Temp\android_3864890478425790438.pro (De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist) 
[2012-05-11 20:21:14 - WrtsMobile] Proguard returned with error code 1. See console 
[2012-05-11 20:21:14 - WrtsMobile] Error: @C:\Users\SEBAST~1\AppData\Local\Temp\android_7512228833969245252.pro (De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist) 

我proguard.cfg:

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-keepattributes LineNumberTable 

-keep public class * extends android.app.Activity 
-keep public class * extends android.support.v4.app.FragmentActivity 
-keep public class * extends android.app.Application 


#To remove debug logs: 
-assumenosideeffects class android.util.Log { 
    public static *** d(...); 
    public static *** v(...); 
    public static *** w(...); 
} 

#Maintain java native methods 
-keepclasseswithmembernames class * { 
    native <methods>; 
} 


#To maintain custom components names that are used on layouts XML: 
-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
} 
-keep public class * extends android.view.View { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 
-keep public class * extends android.view.View { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

#Maintain enums 
-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

#To keep parcelable classes (to serialize - deserialize objects to sent through Intents) 
-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

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

回答

0

通过最新版本(4.8)更换Proguard的解决了这一问题,在文件名中@只是错误说的一部分:“看来这里”

1

你的构建过程中出现多加一个“@”,在文件名前面,导致文件名那是找不到的。如果您使用Android SDK,请确保您拥有最新版本。

+0

当然我有最新版本的Android SDK的, Proguard和其他一切。也许我可以修改我的构建过程。 –