运行Eclipse Kepler
。我的应用程序有以下项目:
FacebookSDK
(图书馆)com.myapp.main
(图书馆)com.myapp.main.free
(应用)com.myapp.main.pro
(应用)
补充笔记:
- 所有项目都依赖于
Android Support Library v4
. - 这两个应用程序都依赖于这两个库。
- 所有项目都禁用 Proguard。
- 我的项目的目标是android-19 ,FacebookSDK 的目标是 android -8。
当我想发布我的两个应用程序中的任何一个时,我右键单击应用程序项目并选择:
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.** {
*;
}