1

AirWatch 认为最新版本的 apk 上的版本代码自上一版本以来没有增加。

我们最近将 Android Studio 构建工具从 25.0.0.0 升级到了 26.0.0.2,问题似乎与此更改有关。

版本代码存储在 AndroidManifest.xml 文件中的 apk(它是一个 zip 文件)中。AndroidManifest.xml 是一个二进制文件。

我需要更改哪些内容才能强制 Android Studio 将版本代码写入 apk AndroidManifest.xml 以使 AirWatch 能够识别它?

我的应用程序正在使用 SDK 26 的功能,这意味着恢复到构建工具 25.0.0.0 支持的早期版本会非常痛苦。

4

1 回答 1

1

Android 的二进制 XML 格式支持 2 种字符串编码,UTF8 和 UTF16。

看来当前版本的 AirWatch 只支持 UTF16 格式。

在早期版本的 Android 构建工具(特别是 Gradle)中,字符串以 UTF16 编码,因此 AirWatch 能够提取版本代码。

但是,在使用 Gradle 3.0.0 时,编码更改为 UTF8。

幸运的是,您可以通过 gradle.properties 文件中的设置更改构建选项以将编码恢复为 UTF16(参见这篇文章)。

# AirWatch currently requires strings in the apk binary AndroidManifest.xml to be UTF16 encoded
# When using Gradle 3.0.0, Aapt2 defaults to UTF8 encoding and setting this to false reverts to UTF16
# NB: At some time in the future, the
#     systemProp.file.encoding=UTF-16
#     may be required to achieve the same outcome (but at the moment android.enableAapt2 is required)
android.enableAapt2=false
于 2018-04-12T22:17:44.840 回答