Android APK 可支持 APK lib/ 文件夹中 .so 文件(本地库)规定的七种不同架构。 如果 对应 Android 上支持的架构,则为: armeabi、armeabi-v7a、x86、mips、arm64-v8a、mips64、x86_64。

如果 APK 中没有 .so 文件,将自动支持所有架构,但 Visual Studio* 2015 项目例外。 Visual Studio* 2015 Android* 应用项目的 APK 可生成特定于 CPU 的 APK,无论是 C# (Xamarin) 或 Visual C++ 项目。

通过单个 APK 支持所有供 Android* 运行的架构是一条不错的实践。 如果这样导致 APK 太大或无法简单地通过特定工具链完成,应用可以在 Play* Store 上包含多个 APK,分别针对不同的架构。

大家必须遵循一条简单的规则以准确打包和分发多个 APK: 版本代码必须保持不同,最好以下列方式安排:

x86_64 versionCode > arm64-v8a > mips64 > x86 > mips > armeabi-v7a > armeabi

之所以要遵循这条规则,是因为 Play Store 将分发包含最高版本代码的 APK,从可与客户端设备兼容的开始。x86(_64) 设备也可以运行 ARM APK,因此最高版本代码需要依次前往 x86_84 和 x86 APK,以确保 APK 准确分发给能够供它们顺畅运行的设备。

对于 Visual C# (Xamarin) 项目

在调试模式下,面向所有架构的 .so 文件均在默认状态下嵌入。 在开发过程中,这样看似一切正常。但实际上,在发布模式下,只有 armeabi 库在默认状态下集成。

如要改变这种状态,请打开应用属性,在 Android Options,Advanced 下方勾选所有你希望支持的架构:

visual studio JAVA安卓开发环境 android visual studio_vs2015新建android

运行发布构建时的输出将是包含所有已选架构的库的 APK:

visual studio JAVA安卓开发环境 android visual studio_vs2015新建android_02

如果你想缩小 APK,可以启用构建,以为每个架构生成一个 APK(版本代码将在默认状态下正确处理):

visual studio JAVA安卓开发环境 android visual studio_Android_03

如要查看多个 APK 如何上传至 Play Store 的单个应用,你需要采取本文末尾部分的步骤。

关于 Visual C++ 项目

默认启用 Visual C++ 项目可实现两个目的: ARM (armeabi-v7a) 和 x86。

visual studio JAVA安卓开发环境 android visual studio_vs2015新建android_04

但面向 x86 或 ARM 的构建生成仅包含 x86 或 ARM .so 文件的 APK。 这样可以,但这些 APK 包含完全相同的 versionCode,它在 AndroidManifest.xml 中设置。 这意味着它们均无法上传至面向同一应用的 Play Store。

为解决这一问题,你可以添加自定义 ant 规则,让 Visual Studio 2015 生成带有不同版本代码的 ARM 和 x86 APK。

采用以下内容创建名为 “custom_rules.xml” 的文件:

prefixing version code with 5 (for x86 ABI).

replace='android:versionCode="5\1"'/>

prefixing version code with 3 (for armeabi-v7a ABI).

replace='android:versionCode="3\1"'/>

并将它放在 Packaging 项目根目录的 build.xml 文件旁边:

visual studio JAVA安卓开发环境 android visual studio_上传_05

完成后,版本代码的前缀将分别为 5(面向 x86 APK)和 3(面向 ARM APK)。 这样生成的 APK 就可直接上传至 Play Store,如下一节所述。

在 Play Store 中发布多个 APK

如果需要,请前往 APK 上传页面,点击 “Switch to advanced mode”:

visual studio JAVA安卓开发环境 android visual studio_Android_06

然后上传带有不同 ABI 支持和版本代码的 APK。 这样它们将出现在 APK 管理屏幕上,并带有差异与版本代码汇总,如下所示:

visual studio JAVA安卓开发环境 android visual studio_上传_07

如果存在错误,你可以使用 Android 构建工具的 aapt 检查 APK 支持的 versionCode 和 native-code。

>C:\Android\sdk\build-tools\23.0.0-preview\aapt.exe dump badging App1.apk

package: name='com.xhallade.test versionCode='81' versionName='1.0' platformBuildVersionName='5.1.1-1819727'

native-code: 'x86_64'

>

如果想直接通过 Android 设备执行同样的操作,并同时检查安装的 .so 文件,你可以使用 Native Libs Monitor。

参考资料