阿里热修复——sophix

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

阿里后台管理

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对应信息)

<application
android: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)调试成功,选择全量发布或灰度发布


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值