我希望为每个架构单独构建,并分别分发它们。所以我做了一些研究,例如查看了Android - 为不同的处理器架构构建单独的APK和链接文章https://androidbycode.wordpress.com/2015/06/30/android-ndk-version-code -scheme-for-publishing-apks-per-architecture/ 据我所知,我似乎遵循了这些步骤。根据这些资源,我将以下内容添加到我的
build.gradle
:
...
android {
...
splits {
abi {
enable true
reset()
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
universalApk false
}
}
}
...
通过这些更改,我确实获得了每个架构的单独 APK。但是,生成的文件是相同的:
$ md5sum *
9673c9c50c3d2d8dbe02b073676b90d4 app-arm64-v8a-release-unsigned.apk
9673c9c50c3d2d8dbe02b073676b90d4 app-armeabi-v7a-release-unsigned.apk
9673c9c50c3d2d8dbe02b073676b90d4 app-x86_64-release-unsigned.apk
9673c9c50c3d2d8dbe02b073676b90d4 app-x86-release-unsigned.apk
这怎么可能?我做错了什么?不幸的是,我没有针对每种架构的设备进行测试。但在我看来,构建应该为每个架构产生相同的校验和是错误的。
如果相关,这是我的完整内容
build.gradle
:https://pastebin.com/v6Ya3Kan
APK 文件只是 zip 文件。您可以解压它们进行检查。您还可以使用 APK 分析器 查看它们包含的内容。
如果您的 Android 项目仅包含 Java/Kotlin 代码,该代码将被编译成 dex 文件,这不依赖于设备的 CPU 架构。
如果您有 C/C++ 代码(用于游戏、性能计算、跨平台库),将通过 Android 本机开发套件 (NDK) 处理到 CPU 架构库中,需要将其包含在相应的 APK 文件中。