AirWatch抱怨应用版本代码没有改变(但它有)

时间:2018-04-12 22:01:29

标签: android mdm airwatch

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支持的早期版本会非常痛苦。

1 个答案:

答案 0 :(得分:1)

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

似乎当前版本的AirWatch仅支持UTF16格式。

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

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

幸运的是,您可以通过gradle.properties文件(see this post)中的设置更改构建选项以将编码恢复为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