美文网首页
阿里热更新最新集成

阿里热更新最新集成

作者: 冰尚花开 | 来源:发表于2019-11-29 11:10 被阅读0次

前言:希望帮助不会的小伙伴们!

一:阿里官方文档

阿里热修复文档

二:集成步骤:

1.先注册:

先创建应用 选择管理控制平台
添加产品
json拷贝到根目录下面

2.查看Appkey,RSA,AppSecret:


点击热修复
查看Appkey,RSA,Appsecret

3.AS(android studio)配置

  • gradle远程仓库依赖, 打开项目找到app的build.gradle文件,添加如下配置:

添加maven仓库地址:
代码块

repositories {
   maven {
       url "http://maven.aliyun.com/nexus/content/repositories/releases"
   }
}

添加gradle坐标版本依赖:

compile 'com.aliyun.ams:alicloud-android-hotfix:3.2.8' 
  • 添加权限
<! -- 网络权限 -->
<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"/>

READ_EXTERNAL_STORAGE权限属于Dangerous Permissions,仅调试工具获取外部补丁需要,不影响线上发布的补丁加载,调试时请自行做好android6.0以上的运行时权限获取。

  • 配置AndroidManifest文件
    在AndroidManifest.xml中间的application节点下添加如下配置:
<meta-data
android:name="com.taobao.android.hotfix.IDSECRET"
android:value="App ID" />
<meta-data
android:name="com.taobao.android.hotfix.APPSECRET"
android:value="App Secret" />
<meta-data
android:name="com.taobao.android.hotfix.RSASECRET"
android:value="RSA密钥" />

备注:appid啥的都是上面图片显示的,记得到上面找哦,记得填写进去哦。

  • 新建SophixStubApplication
package com.doublez.stock;

import android.app.Application;
import android.content.Context;
import android.util.Log;

import androidx.annotation.Keep;

import com.taobao.sophix.PatchStatus;
import com.taobao.sophix.SophixApplication;
import com.taobao.sophix.SophixEntry;
import com.taobao.sophix.SophixManager;
import com.taobao.sophix.listener.PatchLoadStatusListener;


public class SophixStubApplication  extends SophixApplication {


    private final String TAG = "SophixStubApplication";
    // 此处SophixEntry应指定真正的Application,并且保证RealApplicationStub类名不被混淆。
    @Keep
    @SophixEntry(Myapplaction.class)
    static class RealApplicationStub {
//Myapplaction 是自己applaction哦,记得替换
}
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
//         如果需要使用MultiDex,需要在此处调用。
//         MultiDex.install(this);
        initSophix();
    }
    private void initSophix() {
        String appVersion = "1.03";
        try {
            appVersion = this.getPackageManager()
                    .getPackageInfo(this.getPackageName(), 0)
                    .versionName;
        } catch (Exception e) {
        }
        final SophixManager instance = SophixManager.getInstance();
        instance.setContext(this)
                .setAppVersion(appVersion)
                .setSecretMetaData(null, null, null)
                .setEnableDebug(true)
                .setEnableFullLog()
                .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(TAG, "sophix load patch success!");
                        } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
                            // 如果需要在后台重启,建议此处用SharePreference保存状态。
                            Log.i(TAG, "sophix preload patch success. restart app to make effect.");
                        }
                    }
                }).initialize();
    }
}
  • AndroidManifest.xml 文件中引用 SophixStubApplication ,做如下配置:
<application
        android:name=".SophixStubApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">
        <meta-data
            android:name="com.taobao.android.hotfix.IDSECRET"
            android:value="xxx" />
        <meta-data
            android:name="com.taobao.android.hotfix.APPSECRET"
            android:value="xxx" />
        <meta-data
            android:name="com.taobao.android.hotfix.RSASECRET"
            android:value="xxx" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
  • 查询补丁包

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //查询并加载补丁包
        SophixManager.getInstance().queryAndLoadNewPatch();
    }
}

备注:集成As配置集成基本完成。(没有拉,现在要打补丁了哦)


打补丁
四 :打补丁
  • 补丁下载工具

备注:我用的是mac版,要注意哦,mac版本的
MAC下需要把本工具移到“应用程序”(/Applications/)目录下,否则可能有异常问题。

  • mac 版就是将这个软件拖到应用程序里面就可以啦。


  • 点击应用打开, 主对话框


旧包:<必填> 选择基线包路径(有问题的APK)。
新包:<必填> 选择新包路径(修复过该问题APK)。
日志:打开日志输出窗口。
高级:展开高级选项,见1.2.2。
设置:配置其他信息。
GO!:开始生成补丁。

  • 设置对话框


  • 都配置好就GO吧,就可以打出补丁包拉!

五 补丁包上传发布

image.png
  • 补丁发布
image.png
  • 灰色测试,可以选更新几台设备
image.png
  • 通知成功,用户已经热跟新,后台显示


    image.png

重启app,就可以看到我们热跟新的效果拉!

相关文章

    本文标题:阿里热更新最新集成

    本文链接:https://www.haomeiwen.com/subject/mfeructx.html