0

Android SDK を使用して Proguard を使用してコードを難読化しようとしています。.pro ファイルで構文エラーが発生します。proguard jar ファイルを更新しようとしましたが、何も役に立ちませんでした。SOを検索して質問を見つけましたが、答えはどれも役に立ちませんでした。

コンソール ログと 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>;
}
4

2 に答える 2

1

ビルド プロセスでファイル名の前に余分な「@」が追加されているように見え、その結果、ファイル名が見つかりません。Android SDK を使用している場合は、最新バージョンであることを確認してください。

于 2012-05-11T23:33:25.780 に答える
0

Proguard を最新バージョン (4.8) に置き換えると、問題が修正されました。ファイル名の @ は、「ここに表示されました」というエラーの一部にすぎません。

于 2012-05-28T14:44:16.127 に答える