2011-12-28 39 views
1

我在一臺新計算機上安裝了android SDK後導入了一個較老的項目。在eclipse中的「問題」窗口中出現以下錯誤。Android - proguard.cfg錯誤

Obsolete proguard file; use -keepclasseswithmembers instead of -keepclasseswithmembernames proguard.cfg /MyApplication line 1 

這是文件。我試圖用-keepclasseswithmembers替換這個文件中的-keepclasseswithmembernames,但它沒有幫助。

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

-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 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

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

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

你正在使用什麼proguard版本? 'java -jar android-sdk/tools/proguard/lib/proguard.jar'? – 2011-12-28 00:35:36

+0

我正在使用版本4.4 – james 2011-12-28 00:58:56

回答

2

這是一個示例配置文件,我用於proguard 4.4,JDK 1.6,目標android 2.1。通過雙擊 檢查jar文件的proguard的版本或java -jar android-sdk/tools/proguard/lib/proguard.jar(使用Android SDK中的安裝路徑)

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

-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 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

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

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

-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 *; 
} 
+0

我正在使用版本4.4。我會試一試你的示例代碼。謝謝 – james 2011-12-28 00:59:22

+0

我收到一個錯誤:轉換爲Dalvik格式失敗,錯誤代碼爲1.使用上面的代碼時。 – james 2011-12-28 01:05:16

+0

好的,看起來好多了,儘管仍然有錯誤。你可以嘗試使用谷歌上第一對鏈接上的一些建議來解決這個問題嗎?都是SO鏈接。 https://www.google.com/search?ix=heb&sourceid=chrome&ie=UTF-8&q=Conversion+to+Dalvik+format+failed+with+error+code+1 – 2011-12-28 01:09:21

2

這似乎是一個Eclipse/Android的SDK錯誤 我建議

1)關閉項目是給錯誤給你 2)從日食刪除(不刪除文件夾或源) 3)導入您刪除 4)乾淨的項目,並再次建立

最好的問候 斯特凡諾

+0

在我的情況下,這不起作用(你也建議複製方法)。我已經從JavaEE Indigo + ADTetc升級(更改了?)到使用JDK1運行的最新ADT軟件包(v21.0.0-531062,帶有eclipse 3.7.2)。7在windowsxp下。 thanx的努力,可能會幫助其他類似的,但稍有不同的環境中的其他人,也會遇到這種症狀。 – 2013-01-02 16:19:50

1

如果Previous answer didnt help

然後,只需在Eclipse中創建和複製的空Android項目/替換創建「proguard.cfg」文件到您的項目。

0

這是對我的幫助;右鍵點擊項目名稱,然後點擊「Android項目」。然後選擇「Clear Lint Markers」。似乎我意外地運行「Lint」來檢查一些常見問題,之後我開始看到那些proguard.cfg錯誤。有趣的是,即使我在調試模式下編譯,eclipse仍然會抱怨proguard(只在發佈模式下編譯時纔會使用)。

+0

沒有爲我工作(系統規格在我的評論斯特凡諾在這篇文章中)。 – 2013-01-02 16:20:45

0

proguard.cfg將在您項目的根目錄下。編輯,替換:

-keepclasseswithmembernames class * { 

-keepclasseswithmembers class * { 

爲我工作運行ADT束(v21.0.0-531062與Eclipse 3.7.2使用WindowsXP下JDK1.7)。

0

在eclipse問題窗口中選擇了錯誤。它適用於我。