2

実行中Eclipse Kepler。私のアプリには次のプロジェクトがあります。

  1. FacebookSDK(図書館)
  2. com.myapp.main(図書館)
  3. com.myapp.main.free(応用)
  4. com.myapp.main.pro(応用)

その他の注意事項:

  • すべてのプロジェクトは に依存していAndroid Support Library v4ます。
  • どちらのアプリも 2 つのライブラリに依存しています。
  • Proguard はすべてのプロジェクトで無効になっています。
  • ターゲットは、私のプロジェクトではandroid-19、FacebookSDKではandroid-8です。

2 つのアプリのいずれかをリリースする場合は、アプリケーション プロジェクトを右クリックして、次の項目を選択します。

Android Tools->Export Signed Application Package...

問題

APK は正しくインストールされますが、アプリはすぐにクラッシュします。ここで、コマンドを使用して署名付き APKをもう一度Export Application Package...ビルドすると、アプリは完全に機能します。私のプロジェクトのセットアップが何らかの形でコンパイラを欺いて破損したファイルを作成していることは明らかです。私はこれをググった。何もない!

この奇妙な動作の原因は何でしょうか?

このエクスポート ウィザードの実行時に実行される正確なコマンドを知っておくと役立ちます。

アップデート

ProGuard を有効にすると、問題を示している可能性のある警告が表示されます。

 [proguard] Preparing output jar [C:\App\com.myapp.main.pro\bin\proguard\obfuscated.jar]
 [proguard]   Copying resources from program jar [C:\App\com.myapp.main.pro\bin\proguard\original.jar]
 [proguard]   Copying resources from program jar [C:\App\com.myapp.main\bin\classes.jar]
 [proguard] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [classes.jar:META-INF/MANIFEST.MF])
 [proguard]   Copying resources from program jar [C:\App\facebook-android-sdk-3.0.1\facebook\bin\classes.jar]
 [proguard] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [classes.jar:META-INF/MANIFEST.MF])
 [proguard]   Copying resources from program jar [C:\App\facebook-android-sdk-3.0.1\facebook\libs\android-support-v4.jar]
 [proguard] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [android-support-v4.jar:META-INF/MANIFEST.MF])

更新 2

私はこれを一日中グーグルで検索しました。私が見つけることができる唯一の関連情報はこれです: http://code.google.com/p/android/issues/detail?id=27612

ファイルには次の行が含まれていproject.propertiesます (この行を削除しても元の問題は解決しないことに注意してください)。

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt

にはproguard-project.txt、次の追加パラメータが含まれています。

-keepattributes Signature
-keep class com.facebook.** {
   *;
}

-dontwarn android.support.**
-keep class android.support.v4.** {
    *;
}
4

2 に答える 2