[英]What is the difference between app-arm64-v8a-release.apk,app-armeabi-v7a-release.apk and app-x86_64-release.apk in flutter?
[英]flutter build apk --split-per-abi: what is the difference between app-armeabi-v7a-release.apk and app.apk
当我运行flutter build apk --split-per-abi
,我在目录flutter-apk
中得到 4 个文件:
我已经知道前三个 apk 是由于不同的 cpu 架构/指令集。 在我的安卓手机上,我可以安装 app-armeabi-v7a-release.apk和app.apk 。 那么它们是一样的吗? 区别在哪里?
我想你首先运行flutter build apk生成 apk app.apk ,这个 apk 将运行几乎所有架构(由它自己决定)。 然后您再次运行命令flutter build apk --split-per-abi 。 这意味着您同时获得了两个命令结果。 只需尝试删除所有 apk output 文件并重新运行命令flutter build apk --split-per-abi ,我希望你只会得到三个文件。
我对与您相同问题的答案的搜索没有得到令人满意的结果。
然后我想到了使用 SHA-256 校验和进行文件相等性验证的想法。
如果您知道原始文件的校验和,则可以对其运行校验和或哈希实用程序。 如果生成的校验和匹配,您就知道您拥有的文件是相同的。 [从这里]
我们可以从哈希结果中看出,基于所有 apk 的哈希,文件app.apk
等于文件app-armeabi-v7a-staging-release.apk
。
13:10:25 qrcode_keeper master +1 ~1 ﮫ 39ms Path
➜ Get-FileHash build\app\outputs\flutter-apk\app.apk ----
C:...
Algorithm Hash
--------- ----
SHA256 4349EF321BDE25DB32FED4D3C8E0BB265BF5BF6595767F20C2D43B8BBD5BDF13
13:10:26 qrcode_keeper master +1 ~1 ﮫ 80ms Path
➜ Get-FileHash build\app\outputs\flutter-apk\app-armeabi-v7a-staging-release.apk ----
C:...
Algorithm Hash
--------- ----
SHA256 4349EF321BDE25DB32FED4D3C8E0BB265BF5BF6595767F20C2D43B8BBD5BDF13
13:10:31 qrcode_keeper master +1 ~1 ﮫ 72ms Path
➜ Get-FileHash build\app\outputs\flutter-apk\app-arm64-v8a-staging-release.apk ----
C:...
Algorithm Hash
--------- ----
SHA256 AE4DDBBCFDD5A0AF273DDBE2A1CF4C56513D63C1D5A2F151EF973855FA190E0B
13:10:38 qrcode_keeper master +1 ~1 ﮫ 82ms
➜ Get-FileHash build\app\outputs\flutter-apk\app-x86_64-staging-release.apk
Algorithm Hash
--------- ----
SHA256 1D6EBAAA82DF6984C352E4B06D0300386A26EF19A7DE4CB476105060FC74938B
在调试模式下运行 flutter 应用程序时,dart 代码会即时编译 (JIT),从而可以使用热重载/重启等功能。 在发布模式下,代码提前 (AOT) 编译为本机代码。 这种模式更适合在较小的应用程序中进行性能和结果; 它还删除了仅在开发模式下使用的内容。 app-debug.apk 文件只是您在调试模式下运行/编译应用程序时获得的构建。
应用程序.apk -> AOT
app-debug.apk -> JIT
当您使用 --split-per-abi 参数构建您的应用程序时,它会生成 3 个单独的文件,如文档中所述,位于 PROJECT_SRC/build/app/outputs/apk/prod/release/。 这些文件是每个 android 架构的优化构建
正如答案中提到的,您可以看到不同之处在于使用的编译概念(如果您想阅读更多相关信息,我认为这是一个好的开始)。
我假设app.apk
和app-debug.apk
然后用于针对其特定目标平台进一步优化,因此保留为必要的副产品。 我不认为有任何特别的理由保留这些。
应用程序.apk
不重要,并且是其中之一,但名称不同:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.