http://developer.android.com/tools/publishing/preparing.html上的说明表明我应该先导出我的 android 应用程序,然后再将其发布给公众。导出中执行的步骤是什么?
以下是我所知道的:
- <Application> 中的 android:debuggable 在 AndroidManifest.xml 中设置为 false
- APK 由开发者的(我的)密钥签名,而不是内置的调试密钥
zipalign 在该签名的 APK 上运行
我在我的 AndroidManifest.xml 中手动将 android:debuggable 设置为 false,并比较了调试和导出的 apk。这些是唯一不同的文件:
Binary files ../../release/x//classes.dex and x/classes.dex differ
Binary files ../../release/x//META-INF/CERT.RSA and x/META-INF/CERT.RSA differ
diff -r ../../release/x//META-INF/CERT.SF x/META-INF/CERT.SF
diff -r ../../release/x//META-INF/MANIFEST.MF x/META-INF/MANIFEST.MF
那么我上面的清单是否包括所有内容?或者不同的 classes.dex 是否表明调试和导出的 apk 之间存在其他一些差异?
感谢下面错误 454 的回答,我在每个 apk 中的 classes.dex 文件上运行了 baksmali,我发现了一个不同之处:
diff -r out/xx/xx/xx/BuildConfig.smali ../../../release/x/out//xx/xx/xx/BuildConfig.smali
7c7
< .field public static final DEBUG:Z = true
---
> .field public static final DEBUG:Z
所以我想我可以在这个列表中添加第四项:
在 BuildConfig 类 (gen/.../BuildConfig.java) 中,DEBUG 设置为 false。