http://developer.android.com/tools/publishing/preparing.html上的说明指出,在发布Android应用程序之前,我应该先将其导出。在导出过程中执行了哪些步骤呢?
以下是我所了解的:
1. 在AndroidManifest.xml中,将中的android:debuggable设置为false。
2. APK由开发者(即我)的密钥签名,而不是内置的调试密钥。
3. 对已签名的APK运行zipalign。
我在我的AndroidManifest.xml中手动设置了android:debuggable为false,并比较了调试和导出的apk。这些是唯一不同的文件:
感谢下面Error 454的答案,我对每个apk中的classes.dex文件运行了baksmali,并发现了一个差异:
4. 在BuildConfig类(gen/.../BuildConfig.java)中,将DEBUG设置为false。
以下是我所了解的:
1. 在AndroidManifest.xml中,将中的android:debuggable设置为false。
2. APK由开发者(即我)的密钥签名,而不是内置的调试密钥。
3. 对已签名的APK运行zipalign。
我在我的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之间还有其他差异?感谢下面Error 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
因此,我想我可以将第四个项目添加到这个列表中:4. 在BuildConfig类(gen/.../BuildConfig.java)中,将DEBUG设置为false。