Sophix在Android studio中集成
首先在app的build.gradle文件中添加maven仓库地址
Repositories{
Maven{
url “http://maven.aliyun.com/nexus/content/repositories/releases”
}
}
然后在dependencies中添加gradle版本依赖
compile‘com.aliyun.ams:alicloud-android-hotfix:3.1.1’
打开AndroidManifest.xml清单文件中加入网络权限和外部存储权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
然后重写Application的onCreate方法,在里面对Sophix进行初始化设置
下面代码是判断当前引用是否在后台和获取引用的版本号
定义常量,设置ali提供的appid,secret, rsa,用于代码混淆,提高安全性
然后在MainActivity的onStop方法中判断引用在后台的时候并且需要杀死进程进行更新补丁
Sophix热更新休要将老版的apk与新版apk文件通过阿里提供的软件产生插件包的形式进行更新。支持方法的替换、增加减少和反射调用,在方法的替换可以即时生效,可以更新资源文件,So库等,支持已有的全部机型,通过加密传输和签名校验提高安全。
Sophix由classLoader加载补丁类,在native层直接memcpy(smeth, dmth,sizeof(ArtMethod))替换整个ArtMethod的结构,AllocArtMethodArray会跟着new出来放入art中的方法数组中,通过计算机辅助类的前后两个方法的起始地址计算出artMethod结构大小.