阿里热修复——sophix

来源:互联网 发布:java aop编程实例 编辑:程序博客网 时间:2024/05/18 15:29

/**************************************生命不息,奋斗不止********************************/

阿里后台管理

1.登录、注册阿里云:https://www.aliyun.com/

2.依次选择:产品>移动云>移动热修复>立即开通

3.管理控制台>创建app(填写信息)>创建

移动app端

1.通过gradle依赖相应的库

1)

repositories {    maven {        url "http://maven.aliyun.com/nexus/content/repositories/releases"    }    flatDir{        dirs 'libs'    }}
2)
dependencies {compile 'com.aliyun.ams:alicloud-android-hotfix:3.0.2'}

2.添加权限(注意:android 6.0需添加权限判定)

<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"/>

3.配置application相关节点(注意:value 查询阿里后台管理填写自己创建的app对应信息)

<applicationandroid:name=".SophixApp"...<meta-data        android:name="com.taobao.android.hotfix.IDSECRET"        android:value="yours App ID" " />    <meta-data        android:name="com.taobao.android.hotfix.APPSECRET"        android:value="yours App Secret" />    <meta-data        android:name="com.taobao.android.hotfix.RSASECRET        android:value="yours RSA密钥" /></application>

4.编写Application 类代码(注意:类命名需要和application中配置的name一致)

public class SophixApp extends Application {    @Override    public void onCreate() {        super.onCreate();        initSophix();    }    private void initSophix() {        String appVersion;        try {            appVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;        } catch (PackageManager.NameNotFoundException e) {            appVersion = "1.0.0";            e.printStackTrace();        }        // initialize最好放在attachBaseContext最前面        SophixManager.getInstance().setContext(this)                .setAppVersion(appVersion)                .setAesKey(null)                .setEnableDebug(true)                .setPatchLoadStatusStub(new PatchLoadStatusListener() {                    @Override                    public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {                        // 补丁加载回调通知                        if (code == PatchStatus.CODE_LOAD_SUCCESS) {                            // 表明补丁加载成功                            Log.i("info","补丁加载成功");                        } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {                            // 表明新补丁生效需要重启. 开发者可提示用户或者强制重启;                            // 建议: 用户可以监听进入后台事件, 然后调用killProcessSafely自杀,以此加快应用补丁,详见1.3.2.3                            Log.i("info","补丁生效需要重启");                        } else {                            // 其它错误信息, 查看PatchStatus类说明                            Log.i("info","error:"+code);                        }                    }                }).initialize();        // queryAndLoadNewPatch不可放在attachBaseContext 中,否则无网络权限,建议放在后面任意时刻,如onCreate中        SophixManager.getInstance().queryAndLoadNewPatch();    }}

5.生成补丁上传到控制台

1)简单测试demo,编写如下:

public class MainActivity extends AppCompatActivity {    private TextView mTextView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mTextView = (TextView) findViewById(R.id.textView);        mTextView.setText("这是第一次运行的");    }}
2)签名打包为first.apk

3)修改textview文字为:“这是第二次运行的”,重新签名打包为second.apk

4)下载阿里补丁生成工具

5)打开补丁工具SophixPatchTool.exe,选择旧包,新包>设置(填写补丁输出路径及签名相关信息)>GO

6)将生成的补丁文件sophix-patch.jar上传到控制台

6.调试发补丁

1)下载hotfixdebug工具

2)安装旧包apk>安装sophix调试工具>打开调试工具>填写应用包名>连接应用>扫描二维码(控制台创建的app,发布补丁后生成的)

3)调试成功,选择全量发布或灰度发布