私は Eclipse で開発された Android アプリケーションを公開しています。タイトルに記載されているように、特に署名付きアプリをエクスポートするために、Proguard の難読化をビルドに統合したいと考えています。
アリの道を行かずに運が良かった人はいますか?
私は Eclipse で開発された Android アプリケーションを公開しています。タイトルに記載されているように、特に署名付きアプリをエクスポートするために、Proguard の難読化をビルドに統合したいと考えています。
アリの道を行かずに運が良かった人はいますか?
また、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);
}
それくらいだと思います。
わかりました。これは、このトピックに関する最も関連性の高い最近の投稿です。
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
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