0

スクリプトを使用しAntて APK を生成していProguardます。Eclipse エクスポート機能を使用して APK を手動でビルドすると、すべて正常に動作しますが、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 に何か関係があると思います。

4

1 に答える 1

0

プロジェクトの libs ディレクトリに jar があることを確認してください。Eclipse を使用すると、それらを他のフォルダーに配置して、ビルド環境を設定するだけです。ただし、ant はそれらが libs フォルダーにあることを期待しています。

于 2012-04-25T20:23:59.290 に答える