باستخدام بروغارد مع Android.
سؤال
أحاول استخدام Proguard مع Android. لقد وجدت العديد من رسائل البرامج التي يجب استخدامها ، مع وجود ما يلي مثال (لقد وجدت العديد من الآخرين متشابهين أو متشابهين للغاية). ومع ذلك ، عندما أحاول تشغيل Proguard باستخدام هذا البرنامج النصي ، أحصل على الخطأ:
"توقع نوع جافا قبل" ؛ " في السطر 23 من الملف ... "
أنا جديد تمامًا على بروغوارد. هل يمكن لأي شخص أن يشرح ما يحدث هنا
شكرًا.
-injars bin(!.svn/**)
-outjars obfuscated
-libraryjars C:\android-sdk_r04-windows\android-sdk-windows\platforms\android-1.6\android.jar
-libraryjars C:\GoogleAnalyticsAndroid_0.7\libGoogleAnalytics.jar
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-printmapping proguard.map
-keepattributes SourceFile,LineNumberTable
-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 com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native ;
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
المحلول
المشكلة هنا:
native ;
حاول تغييره إلى:
native <methods>;
نصائح أخرى
كما علقت أعلاه ، يبدو أن المشكلة تنبع من حقيقة أن المدونة التي حصلت عليها من البرامج النصية تبدو وكأنها "تأكل" أي شيء بأقواس الزاوية. قررت أنه سيكون من الجيد نشر الرمز المصحح ، في حالة بحث أي شخص آخر عنه. الرمز المصحح كما يلي:
-injars bin(!.svn/**)
-outjars obfuscated
-libraryjars C:\android-sdk\platforms\android-4\android.jar
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-printmapping proguard.map
-keepattributes SourceFile,LineNumberTable
-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 com.android.vending.licensing.ILicensingService
-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);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
من النظر إلى رسالة الخطأ التي قدمها برنامج التحويل البرمجي الخاص بك ، يبدو أن المترجم يخبرك عمليا ما هي المشكلة.
"Expecting java type before ';' in line 23 of file ..."
لقد فقدت العد ، لكن يبدو أن هذا الخط هو السطر 23:
native ;
لا أعرف عنك ، لكن هذا لا يبدو وكأنه جافا صالح على الإطلاق.