Я использую Ant
скрипт для создания своего APK с Proguard
. Если я вручную создаю свои APK с помощью функции экспорта Eclipse, все работает нормально, но если я использую свой Ant-скрипт, я получаю исключение «не удалось найти вызов 'com.google.ads.Adview'», которое заносится в журнал с Принудительное закрытие.
Это мой файл proguard.cfg, в котором я говорю сохранить com.google.ads:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-libraryjars C:\Workspace\JARs\CWAC-WakefulIntentService-0.4.5.jar;C:\Workspace\JARs\GoogleAdMobAdsSdk-6.0.0.jar;C:\Workspace\JARs\android-support-v4.jar
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-dontwarn **CompatHoneycomb
-dontwarn **CompatHoneycombMR2
-dontwarn **CompatCreatorHoneycombMR2
-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.Fragment
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class com.actionbarsherlock.** { *; }
-keep interface com.actionbarsherlock.** { *; }
-keep public class com.google.ads.** { *; }
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
# This will avoid all the onClick listeners referenced from XML Layouts from being removed
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * implements android.os.Parcelable {
static android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-dontwarn android.support.**
Это мой файл build.xml, в котором я создаю APK, а затем копирую его в каталог.
<?xml version="1.0" encoding="UTF-8"?>
<project name="master" default="build">
<target name="build">
<ant dir="../Project" antfile="build.xml" inheritAll="false" inheritRefs="false" target="release" />
<copy todir="../APKs">
<fileset dir="../Project/bin" includes="*release.apk" />
</copy>
</target>
</project>
ОБНОВИТЬ:
Поработав над этим, я думаю, что эта проблема не связана с Proguard, а связана с Ant
скриптом и внешними jar-файлами.