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

阿里热更新最新集成

作者: 冰尚花开 | 来源:发表于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