阿里Sophix问题记录

接入过程并不难,按照官方文档操作即可,碰到的主要问题就是生成补丁那里,可能只会在windows平台出现,mac平台未测试,现在针对碰到的问题做个记录。

生成补丁一直卡在“开始构建补丁”

根据官方的回复,这个问题主要是7-zip抽取失败导致的,所以首先可以尝试下用7-zip解压apk看有没有报错,如果有报错,就是apk包有问题,需要先解决这个。

官方提供的解决方案

  1. 使用gradle plugin版本高于4.2时,可能会自动开启资源优化。开启资源优化后,资源名称被混淆,会导致补丁工具在生成补丁时一直卡在”开始构建补丁…..”,无法正常解析apk包。解决方案:在gradle.properties 中新增android.enableResourceOptimizations=false,重新生成基线包和修复包,然后再生成补丁。
  2. Windows设备上,7-zip官方下载地址,下载对应架构最新的21版本,先进行安装,在安装后的安装目录中复制7z.exe到补丁工具目录里,改名为7za.exe(也就是替换原有的7za.exe),再试试看。
  3. 上述两个步骤操作后还是卡在开始构建,Windows设备上右击apk,使用安装好的7zip提取文件,看提取过程是否有任何弹窗。所有设备上,看看apk解压结果,res下文件名是否被混淆。

7-zip解压报错解决方案

  1. 打包前先clean下项目,不然可能就会遇到问题
  2. 使用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
            **其它签名信息**
        }
    }
}