gpt4 book ai didi

android - 导出 Android 应用程序究竟有什么作用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:29 25 4
gpt4 key购买 nike

说明位于 http://developer.android.com/tools/publishing/preparing.html表明我应该在将它发布给公众之前导出我的 android 应用程序。导出中执行的步骤是什么?

这是我所知道的:

  1. 中的 android:debuggable 在 AndroidManifest.xml 中设置为 false
  2. APK 是由开发者的(我的) key 签名的,而不是内置的调试 key
  3. 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

    所以我想我可以在这个列表中添加第四个项目:

  4. 在类 BuildConfig (gen/.../BuildConfig.java) 中,DEBUG 设置为 false。

最佳答案

除了您列出的内容之外,proguard 还在导出期间运行。

如果您对 classes.dex 中差异的本质非常好奇,您可以获取 baksmali , 解压缩你的 apk 并反编译 classes.dex 文件:

java -jar baksmali-1.3.3.jar classes.dex

这将创建一个 out/文件夹,其中包含您可以在新旧之间进行区分的内容。

BuildConfig.DEBUG 标志不同的原因是因为您导出的是发布版本与调试版本,如 SDK Release Notes Revision 17 中所述。 :

Added a feature that allows you to run some code only in debug mode. Builds now generate a class called BuildConfig containing a DEBUG constant that is automatically set according to your build type. You can check the (BuildConfig.DEBUG) constant in your code to run debug-only functions.

关于android - 导出 Android 应用程序究竟有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11351562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com