Saturday, January 26, 2013

AdMob 中 AdView 在 Proguard 之下的 "Proguard returned with error code 1"

多手升級一下 App 中的 Proguard version 同 AdMob SDK 立即出了:


Proguard returned with error code 1. See console
Note: there were 160 duplicate class definitions.
Warning: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
Warning: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
You should check if you need to specify additional program jars.
Warning: there were 2 unresolved references to classes or interfaces.
 You may need to specify additional library jars (using '-libraryjars').

先在 Project -> Build Path -> Export 中手動加入了
GoogleAdMobAdsSdk-6.2.1.jar
但那Error老在
又修改了一下 proguard-project.txt:
加入了:


-keepattributes *Annotation*
-keep public class com.google.ads.** {*;}
-libraryjars /libs/GoogleAdMobAdsSdk-6.2.1.jar

都无功而返:
只好學一下AdView 中的example 加入一些

-dontpreverify -repackageclasses '
-allowaccessmodification 
-optimizations !code/simplification/arithmetic


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

-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}


但是............
所以話AdMob 是 Google API 中最失敗的一個
次次要Update 都要花費一些時間.
最後只好問問全能的Google.


This problem started with AdMob SDK 6.1.0 and 6.2.1 (for Android). To fix the error, add this to your proguard.cfg file:
中文是叫大家加下會的一句在 proguard.cfg:

-dontwarn com.google.ads.**



Case Close.



No comments: