文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android接入热修复的示例分析

2023-06-29 01:04

关注

Android接入热修复的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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

AndroidManinifest.xml里application中加入以下,在AS中打开在第五步下载的文件
App ID:"hotfix.idSecret"
App Secret:"emas.appSecret"
RSA密钥:"hotfix.rsaSecret"

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

在app的build.gradle中加入依赖等

plugins { id 'com.android.application'}//加载文件apply plugin: 'com.aliyun.ams.emas-services'android {    compileSdkVersion 30    buildToolsVersion '30.0.3'    defaultConfig {        applicationId "com.wb.hotfixdemo"        minSdkVersion 16        targetSdkVersion 30        versionCode 1        versionName "1.0"        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'        }        debug {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'        }    }    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }}dependencies {    implementation 'androidx.appcompat:appcompat:1.1.0'    implementation 'com.google.android.material:material:1.1.0'    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'    testImplementation 'junit:junit:4.+'    androidTestImplementation 'androidx.test.ext:junit:1.1.1'    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'//阿里云依赖    api 'com.aliyun.ams:alicloud-android-hotfix:3.3.0'}

SophixStubApplication
目前集成已经完毕了,下面就是代码的实现,新建一个类SophixStubApplication继承SophixApplication

public class SophixStubApplication extends SophixApplication {    private final String TAG = "SophixStubApplication";    // 此处SophixEntry应指定真正的Application,并且保证RealApplicationStub类名不被混淆。    @Keep    @SophixEntry(MyRealApplication.class)    static class RealApplicationStub {}    @Override    public void onCreate() {        super.onCreate();        SophixManager.getInstance().queryAndLoadNewPatch();    }    @Override    protected void attachBaseContext(Context base) {        super.attachBaseContext(base);//         如果需要使用MultiDex,需要在此处调用。//         MultiDex.install(this);        initSophix();    }    private void initSophix() {        String appVersion = "0.0.0";        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();    }}

MyRealApplication

public class MyRealApplication extends Application {}

AndroidManinifest.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/Theme.HotFixDemo">

关于Android接入热修复的示例分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯