6

私は Eclipse で開発された Android アプリケーションを公開しています。タイトルに記載されているように、特に署名付きアプリをエクスポートするために、Proguard の難読化をビルドに統合したいと考えています。

アリの道を行かずに運が良かった人はいますか?

4

3 に答える 3

4

また、Ant やコマンド ライン アプローチを使用せずにこれを実行したいと考えていました。これが機能したものです(Eclipse + Windowsのみ):

  • (Proguard をダウンロードする必要があります。スクリプトは、C:\android-sdk_r04-windows\proguard\lib\proguard.jar で見つけることを想定しています)。

  • Windows バッチ ファイル「C:\android-sdk_r04-windows\obfusc.bat」を作成します。


    DEL /S /Q obfuscated
    MKDIR obfuscated

    java -jar C:\android-sdk_r04-windows\proguard\lib\proguard.jar @android.pro

    DEL /S /Q bin\com\
    DEL /S /Q bin\org\

    ROBOCOPY obfuscated\com bin\com /S
  • Eclipse で、Android プロジェクトのプロパティ ページを表示し、[ビルダー] ペインを選択して、[プログラム] タイプの新しいビルダーを追加します。メイン タブの [場所] フィールドに、前の手順のスクリプトの絶対パスを入力します。「作業ディレクトリ」フィールドに変数 ${build_project} を入力します。[ビルド オプション] タブで、[ビルダーの実行] の下の [クリーン後] を選択します。

  • このビルド ツールは、最後から 2 番目、Android パッケージ ビルダーの直前に配置してください。

  • Android プロジェクトのルート フォルダーに proguard 構成ファイルを作成します。これらを少しカスタマイズしてリビジョン管理に含めますが、それはあなた次第です。私が使用するファイルは、スクリプトで名前が付けられているように「android.pro」と呼ばれ、開発ブログの構成に似ていますが、injar、outjar、および libraryjar ステートメントを含むヘッダーが含まれています。次に例を示します。


    -injars      bin(!.svn/**)
    -outjars     obfuscated
    -libraryjars C:\android-sdk_r04-windows\android-sdk-windows\platforms\android-1.6\android.jar
    -libraryjars C:\GoogleAnalyticsAndroid_0.7\libGoogleAnalytics.jar

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

    -printmapping proguard.map
    -keepattributes SourceFile,LineNumberTable

    -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 com.android.vending.licensing.ILicensingService

    -keepclasseswithmembernames class * {
        native ;
    }

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

    -keepclasseswithmembernames class * {
        public (android.content.Context, android.util.AttributeSet, int); 
    }

    -keepclassmembers enum * {
        public static **[] values();
        public static ** valueOf(java.lang.String);
    }
  • ほとんどの場合、この Builder をオフにしておく必要があります。難読化された APK をテストまたはエクスポートするときは、それをオンにしてから、プロジェクトとそれが依存するライブラリ プロジェクトを含め、Eclipse から「プロジェクト > クリーン」を実行します。

それくらいだと思います。

于 2010-09-22T19:40:39.700 に答える
3

わかりました。これは、このトピックに関する最も関連性の高い最近の投稿です。

http://android-developers.blogspot.com/2010/09/proguard-android-and-licensing-server.html

Antを使用しますが、難しい部分はすべてあなたのために行われ、指示に従う限り、それは機能します。注:更新をスキップしないでください。これはSDK r7 +でのみ機能します。また、AVD更新についても、Eclipseの更新を実行することは悪い考えではありません。

また、外部jarを追加する場合は、ProGuards procfg.txtをセットアップして、以下を追加します。

-libraryjars {path} {file_name} .jar

于 2010-09-22T04:35:30.833 に答える
1

Eclipseを使用している場合は、project.properties行のコメントを外してください

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
于 2014-10-26T18:26:48.813 に答える