阿里Sophix问题记录
接入过程并不难,按照官方文档操作即可,碰到的主要问题就是生成补丁那里,可能只会在windows平台出现,mac平台未测试,现在针对碰到的问题做个记录。
生成补丁一直卡在“开始构建补丁”
根据官方的回复,这个问题主要是7-zip抽取失败导致的,所以首先可以尝试下用7-zip解压apk看有没有报错,如果有报错,就是apk包有问题,需要先解决这个。
官方提供的解决方案
- 使用gradle plugin版本高于4.2时,可能会自动开启资源优化。开启资源优化后,资源名称被混淆,会导致补丁工具在生成补丁时一直卡在”开始构建补丁…..”,无法正常解析apk包。解决方案:在gradle.properties 中新增android.enableResourceOptimizations=false,重新生成基线包和修复包,然后再生成补丁。
- Windows设备上,7-zip官方下载地址,下载对应架构最新的21版本,先进行安装,在安装后的安装目录中复制7z.exe到补丁工具目录里,改名为7za.exe(也就是替换原有的7za.exe),再试试看。
- 上述两个步骤操作后还是卡在开始构建,Windows设备上右击apk,使用安装好的7zip提取文件,看提取过程是否有任何弹窗。所有设备上,看看apk解压结果,res下文件名是否被混淆。
7-zip解压报错解决方案
- 打包前先clean下项目,不然可能就会遇到问题
- 使用v1签名,不要开启v2签名
查看apk是v1签名还是v2签名
//apksigner在sdk/build-tools/x.x.x 目录下,直接执行需要配置环境变量
apksigner verify -v xxx.apk
//执行后看到类似这样的结果,代表使用了v1签名未使用v2签名,默认是v1和v2同时存在
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): false
Number of signers: 1
如何只开启v1签名关闭v2签名
app module下的build.gradle文件添加,注意target30的项目必须开启v2,否者无法安装
android{
signingConfigs {
release {
v1SigningEnabled true
v2SigningEnabled false
**其它签名信息**
}
}
}