ProGuard not working with AdMob 6.2.1

737 views
Skip to first unread message

I.D.E.

unread,
Oct 29, 2012, 6:53:23 AM10/29/12
to Google AdMob Ads Developers
Ever since I upgraded to AdMob 6 (6.1.0 or 6.2.1) I cannot get
ProGuard to work with it, when I try to export the APK using Eclipse.

I am now getting this error everytime, even if I use an empty
proguard.cfg file:

------------------------------
org.eclipse.core.runtime.CoreException: Proguard returned with error
code 1. See console
at
com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:
280)
at
com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:
296)
at
com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access
$0(ExportWizard.java:233)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard
$1.run(ExportWizard.java:218)
at org.eclipse.jface.operation.ModalContext
$ModalContextThread.run(ModalContext.java:121)
Caused by: Proguard Error 1
Output:
Note: there were 150 duplicate class definitions.
Warning: com.google.ads.ag$a: can't find referenced field
'android.net.Uri b' in class com.google.ads.af
Warning: com.google.ads.ag$a: can't find referenced field
'java.lang.String[] d' in class com.google.ads.af
Warning: com.google.ads.ag$b: can't find referenced field
'android.net.Uri a' in class com.google.ads.af
Warning: com.google.ads.ag$b: can't find referenced field
'java.lang.String[] c' in class com.google.ads.af
Warning: com.google.ads.ag$c: can't find referenced method 'void
a(android.webkit.WebView,boolean)' in class com.google.ads.ag
Warning: com.google.ads.ai: can't find referenced field
'com.google.ads.util.i$d e' in class com.google.ads.m
Warning: com.google.ads.ai: can't find referenced method 'void
a(android.app.Activity,android.webkit.WebView,java.lang.String)' in
class com.google.ads.ag
Warning: com.google.ads.ai: can't find referenced method 'void
a(android.webkit.WebView,java.lang.String)' in class
com.google.ads.ag
Warning: com.google.ads.ai: can't find referenced method 'boolean
a(android.content.Intent,android.content.Context)' in class
com.google.ads.ah
Warning: com.google.ads.internal.c$2: can't find referenced field
'com.google.ads.internal.c$d a' in class com.google.ads.internal.c$d
Warning: com.google.ads.internal.c$2: can't find referenced field
'com.google.ads.internal.c$d b' in class com.google.ads.internal.c$d
Warning: com.google.ads.internal.c$2: can't find referenced field
'com.google.ads.internal.c$d c' in class com.google.ads.internal.c$d
Warning: com.google.ads.internal.c$2: can't find referenced field
'com.google.ads.internal.c$d d' in class com.google.ads.internal.c$d
Warning: com.google.ads.internal.c$2: can't find referenced method
'int ordinal()' in class com.google.ads.internal.c$d
Warning: com.google.ads.internal.c$2: can't find referenced method
'com.google.ads.internal.c$d[] values()' in class
com.google.ads.internal.c$d
You should check if you need to specify additional program
jars.
Warning: there were 15 unresolved references to program class
members.
Your input classes appear to be inconsistent.
You may need to recompile them and try again.
Alternatively, you may have to specify the option
'-dontskipnonpubliclibraryclassmembers'.
java.io.IOException: Please correct the above warnings first.
at proguard.Initializer.execute(Initializer.java:321)
at proguard.ProGuard.initialize(ProGuard.java:211)
at proguard.ProGuard.execute(ProGuard.java:86)
at proguard.ProGuard.main(ProGuard.java:492)
at
com.android.ide.eclipse.adt.internal.build.BuildHelper.runProguard(BuildHelper.java:
571)
at
com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:
244)
... 4 more
----------------------------------

This is my proguard.cfg file:
------------------------
-optimizationpasses 5
-dontskipnonpubliclibraryclassmembers
-dontskipnonpubliclibraryclasses
-dontusemixedcaseclassnames
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/
*
-keepattributes SourceFile,LineNumberTable
-keepattributes *Annotation*

-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

-keep class com.google.ads.** {*;}

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

---------------------------------
I'm using Android SDK Tools: revision 20, and Android SDK Platform-
tools: revision 12.

Could someone please send me their proguard.cfg file?

I.D.E.

unread,
Oct 29, 2012, 10:28:21 AM10/29/12
to Google AdMob Ads Developers
I managed to get it working again. It was fairly tricky but here's my
proguard.cfg file below.

It would be useful if Google provided a tutorial page on how to setup
ProGuard with the AdMob SDK.
Somewhere here: https://developers.google.com/mobile-ads-sdk/docs/
The tutorial could include an example proguard.cfg file that people
can download.

------- proguard.cfg -----------------

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclassmembers
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/
*
-keepattributes SourceFile,LineNumberTable
-keepattributes *Annotation*

-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

-keep class com.google.ads.** {*;}
-dontwarn com.google.ads.** # http://stackoverflow.com/questions/13040226

-keep class com.google.ads.internal.** {*;}
-keep class com.google.ads.internal.state.AdState {*;}
-keep class com.google.ads.mediation.** {*;}
-keep class com.google.ads.mediation.adfonic.** {*;}
-keep class com.google.ads.mediation.admob.** {*;}
-keep class com.google.ads.mediation.adfonic.util.** {*;}
-keep class com.google.ads.mediation.customevent.** {*;}
-keep class com.google.ads.searchads.** {*;}
-keep class com.google.ads.util.** {*;}
-keep class com.adfonic.android.** {*;}
-keep class com.adfonic.android.api.** {*;}
-keep class com.adfonic.android.ormma.** {*;}
-keep class com.adfonic.android.utils.** {*;}
-keep class com.adfonic.android.view.** {*;}
-keep class com.google.ads.internal.** {*;}
-keep class com.mobfox.** {*;}
-keep class com.mobfox.adapter.** {*;}
-keep class com.mobfox.sdk.** {*;}
-keep class com.mobfox.sdk.data.** {*;}
-keep class com.mobfox.video.** {*;}

Emanuel Moecklin

unread,
Oct 29, 2012, 11:03:35 PM10/29/12
to google-adm...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages