换了一台电脑,使用AS打包生成APK时抛出这两个问题,按顺序抛出的:
1、Android Studio Gradle sync failed: Illegal char <?> at index...
字面解析一看就是非法的字符集抛出的异常,在Gradle脚本编译时,确实有用动态生成中文APK包的命名,但是在前一台电脑里面打包是没有问题,证明不是字符集的问题,但是为了解决这个问题,于是把Gradle动态编译时的中文字符集换成英文,于是就抛出了第二个问题....
2、Get Key failed: getSecretKey failed: Password is not ASCII...
获取秘钥key时,密码不是ASCII码,AS版本4.0以后,APK生成.jks秘钥文件,是需要PCKS二次加密生成,以保证.jks文件的安全性,在前一台电脑上已经生成过了,所以可以排除生成秘钥的问题。
从两个问题分析出,都是字符集编码出了问题,于是去看AS的编码问题,右下角也是正常的编码,setting里面也是正常的UTF-8编码,
AS的编码也没有问题,那么再看看系统的字符集,通过win+r后cmd,输入java(前提是配置了java系统变量,不然命令不生效),确实看到了cmd里面展示出来,有关中文都变成了乱码,确认了系统字符集已经被更改,需要把系统字符集改成中国简体中文后重启。
这样就解决了上述两个问题,再次打包就通过了~
最终得出结果:不论是项目git/svn导出,拷贝,需要系统编码、AS编码跟之前的项目编码一样,否则在工作区域显示会乱码,或者在打包编译时,会抛出非法的字符集异常。