日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里SopHix热修复框架

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里SopHix热修复框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2015年以來,Android開發領域里對熱修復技術的討論和分享越來越多,同時也出現了一些不同的解決方案,如QQ空間補丁方案、阿里AndFix以及微信Tinker(Bugly sdk也集成Tikner熱更新)和阿里最新出品Sophix.它們在原理各有不同,適用場景各異。不過從技術上來說多數熱修復框架是基于ClassLoader加載機制。下面是常見熱修復框架的比較。

開通熱修復服務

讀者可以打開Sophix熱修復的官網:Sophix官網1、注冊阿里云賬號,選擇移動熱修復服務 ,選擇之后需要開通此功能,點擊立即開通即可。

2、打開管理控制臺,點擊右上角創建APP。?

3、點擊Hoxfix列表android版本的app后面的管理即可查看基本信息(AppId、AppSecret和密鑰)。

本地接入熱修復服務

1,添加依賴庫和包
打開項目的app的build.gradle文件,添加maven倉庫地址和hotfix庫依賴:

repositories {maven {url "http://maven.aliyun.com/nexus/content/repositories/releases"} }dependencies {compile 'com.aliyun.ams:alicloud-android-hotfix:3.1.0' }

注:如果項目中也依賴其它阿里系SDK,可能會同時依賴了utdid這個SDK,為了避免沖突可以這樣。

dependencies {compile ('com.aliyun.ams:alicloud-android-hotfix:3.1.0') {exclude(module:'alicloud-android-utdid')} }

2,AndroidManifest相關配置
在AndroidManifest配置文件中添加如下配置:

<!-- 網絡權限 --> <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"/>

在application標簽下添加如下信息:

1 <meta-data 2 android:name="com.taobao.android.hotfix.IDSECRET" 3 android:value="AppId" /> 4 <meta-data 5 android:name="com.taobao.android.hotfix.APPSECRET" 6 android:value="AppSecret" /> 7 <meta-data 8 android:name="com.taobao.android.hotfix.RSASECRET" 9 android:value="RSA密鑰" />

3,在Application中初始化Sophix。
initialize的調用應該盡可能的早,必須在Application.attachBaseContext()或者Application.onCreate()的最開始進行SDK初始化操作,否則極有可能導致崩潰。而查詢服務器是否有可用補丁的操作可以在后面的任意地方。
例如:

1 public class SophixApp extends Application { 2 3 @Override 4 public void onCreate() { 5 super.onCreate(); 6 initSophix(); 7 } 8 9 private void initSophix() { 10 String appVersion; 11 12 try { 13 appVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; 14 } catch (PackageManager.NameNotFoundException e) { 15 appVersion = "1.0.0"; 16 e.printStackTrace(); 17 } 18 19 // initialize最好放在attachBaseContext最前面 20 SophixManager.getInstance().setContext(this) 21 .setAppVersion(appVersion) 22 .setAesKey(null) 23 .setEnableDebug(true) 24 .setPatchLoadStatusStub(new PatchLoadStatusListener() { 25 @Override 26 public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) { 27 // 補丁加載回調通知 28 if (code == PatchStatus.CODE_LOAD_SUCCESS) { 29 // 表明補丁加載成功 30 } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) { 31 // 表明新補丁生效需要重啟. 開發者可提示用戶或者強制重啟; 32 // 建議: 用戶可以監聽進入后臺事件, 然后調用killProcessSafely自殺,以此加快應用補丁,詳見1.3.2.3 33 } else { 34 // 其它錯誤信息, 查看PatchStatus類說明 35 } 36 } 37 }).initialize(); 38 // queryAndLoadNewPatch不可放在attachBaseContext 中,否則無網絡權限,建議放在后面任意時刻,如onCreate中 39 SophixManager.getInstance().queryAndLoadNewPatch(); 40 } 41 42 }

記得在AndroidManifest中使用我們自己的Application。

生成補丁并上傳到控制臺

1,為了簡單,我們需要生成兩個apk,兩個apk做一個簡單的內容區分即可。將第一個命名為old.apk,代碼如下:

1 public class MainActivity extends AppCompatActivity { 2 3 private TextView mTextView; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 10 mTextView = (TextView) findViewById(R.id.textView); 11 mTextView.setText("版本修復前"); 12 13 } 14 }

將第二個命名為new.apk,內容如下:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView tv= findViewById(R.id.fix_text);tv.setText("版本修復后數據...");Toast.makeText(this,"版本修復完成",Toast.LENGTH_LONG).show();} }

2,生成補丁的話需要下載阿里的打補丁工具SophixPatchTool,選擇對應的平臺,然后分別選擇兩次打包生成的apk,點擊go即可。

補丁生成后,上傳到阿里云平臺,版本信息和代碼的versionName對應。?

?

然后點擊上傳補丁即可。?

?

?

在選擇正式發布之前,官方建議您先進行本地測試。下載hotfixdebug工具安裝后,填寫包名,點擊連接應用,然后掃描補丁詳情中的二維碼下載補丁。或者將補丁包放到手機sdcard,填寫絕對路徑也是可以的。?

?

?

總結

以上是生活随笔為你收集整理的阿里SopHix热修复框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。