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