sophix集成指南

Sophix接入指南

|版本號|日期|修改人|
|-----|----|---------------|-----|
V3.2.13|2020-4-27|陳鑫飛

1、應用配置

1)

https://mhub.console.aliyun.com/?spm=5176.13194971.0.0.53cbcb3cvDCnNo#/productList

下載配置文件 'aliyun-emas-services.json'將下載的文件放置到工程根路徑下

  1. 修改項目級目錄下build.gradle({project}/build.gradle)
buildscript {
  repositories {
    maven {
      url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
    }
  dependencies {
    // 添加emas-services插件
    classpath 'com.aliyun.ams:emas-services:1.0.1'
  }
}
allprojects {
  repositories {
    ...
    maven {
      url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
    }
  }  
  

3)修改應用級build.gradle({project}/<app-module>/build.gradle):

// 在 apply plugin: 'com.android.application' 下添加
apply plugin: 'com.aliyun.ams.emas-services'

4)修改應用目錄下json文件({project}/<app-module>/ aliyun-emas-services.json)以现,將不需要使用的產(chǎn)品service對應的status狀態(tài)置為0(status=0或1時,分別表示不加載或加載該產(chǎn)品SDK)

2箕速、應用權限

Sophix SDK使用到以下權限(6.0以上需要手動獲取讀寫權限)

<! -- 網(wǎng)絡權限 -->
<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朋譬、SophixStubApplication

 public class SophixStubApplication extends SophixApplication {
    private final String TAG = "Sophix";
 
    // 此處SophixEntry應指定真正的Application盐茎,并且保證RealApplicationStub類名不被混淆。
    @Keep
    @SophixEntry(GowildApplication.class)
    static class RealApplicationStub {
    }
 
    @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("appkeyXXX","secret","rsaXXX")
               //注意上線必須改成false徙赢,否則會跳過校驗字柠,風險較大
                .setEnableDebug(false)
                .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保存狀態(tài)狡赐。
                            Log.i(TAG, "sophix preload patch success. restart app to make effect.");
                        }
                    }
                }).initialize();
    }
 
    @Override
    public void onCreate() {
        super.onCreate();
        SophixManager.getInstance().queryAndLoadNewPatch();
    }
}

4窑业、生成補丁

下載打包工具
patch補丁包生成需要使用到打補丁工具SophixPatchTool, 如還未下載打包工具,請前往下載Android打包工具枕屉。

Mac版本打包工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_macos.zip

Windows版本打包工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_windows.zip

Linux版本打包工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_linux.zip

調試工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/hotfix_debug_tool-release.apk

該工具提供了Windows和macOS和Linux版本常柄,Windows下運行SophixPatchTool.exe,macOS下運行SophixPatchTool.app搀擂,Linux下(Ubuntu 16.04 64bit最佳)運行SophixPatchTool西潘。并且需要安裝Java環(huán)境且在JDK7或以上才能正常使用。

1.2 生成Patch
1.2.1 主對話框


image

舊包:<必填> 選擇基線包路徑(有問題的APK)哨颂。
新包:<必填> 選擇新包路徑(修復過該問題APK)喷市。
日志:打開日志輸出窗口。
高級:展開高級選項威恼,見1.2.2品姓。
設置:配置其他信息。
GO!:開始生成補丁箫措。
1.2.2 主對話框 - 高級選項


avatar

強制冷啟動:勾選的話強制生成補丁包為需要冷啟動才能修復的格式腹备。默認不選的話,工具會根據(jù)代碼變更情況自動選擇即時熱替換或者冷啟動修復斤蔓。
不比較資源:打補丁時不比較資源的變化植酥。
不比較SO庫:打補丁時不比較SO庫的變化。
1.2.3 設置對話框

avatar

補丁輸出路徑:<必填> 指定生成補丁之后補丁的存放位置附迷,必須是已存在的目錄惧互。
Key Store Path:<選填>本地的簽名文件的路徑,不輸入則不做簽名喇伯。目前只支持jks的簽名文件喊儡。
Key Store Password:<選填>證書文件的密碼。
Key Alias:<選填>Key的別名稻据。
Key Passwrod:<選填>Key的密碼艾猜。
AES Key:<選填>自定義aes秘鑰, 必須是16位數(shù)字或字母的組合。必須與setAesKey中設置的秘鑰一致捻悯。
Filter Class File:<選填>本地的白名單類列表文件的路徑匆赃,放進去的類不會再計算patch,文件格式: 一行一個類名今缚。
1.3 命令行方式
SophixPatchTool 3.1.6之后支持以命令行的方式生成補丁包算柳。

采用命令行方式前,需要準備以下json格式的配置文件:

放大查看
{
"AesKey": "",
"ClassFilterFilePath": "",
"KeyAlias": "",
"KeyPassword": "",
"KeyStorePassword": "",
"KeyStorePath": "",
"NewApkPath": "/path/to/new.apk",
"OldApkPath": "/path/to/old.apk",
"OutputDirPath": "/path/to/output/dir/",
"isForceColdFix": false,
"isIgnoreRes": false,
"isIgnoreSo": false
}
其中姓言,必填的項目是NewApkPath瞬项、OldApkPath、OutputDirPath何荚。其他的配置與圖形界面所對應項一致囱淋。然后把它存為profiles.json文件即可。

接下來餐塘,可以用下面的命令進行打包:

放大查看
SophixPatchTool --profiles profiles.json
執(zhí)行完畢后就可以在OutputDirPath下輸出補丁文件了妥衣。

SophixPatchTool在windows平臺下為SophixPatchTool.exe,mac平臺下為SophixPatchTool.app/Contents/MacOS/SophixPatchTool

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末戒傻,一起剝皮案震驚了整個濱河市税手,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稠鼻,老刑警劉巖冈止,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異候齿,居然都是意外死亡熙暴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門慌盯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來周霉,“玉大人,你說我怎么就攤上這事亚皂【阆洌” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵灭必,是天一觀的道長狞谱。 經(jīng)常有香客問我乃摹,道長,這世上最難降的妖魔是什么跟衅? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任孵睬,我火速辦了婚禮,結果婚禮上伶跷,老公的妹妹穿的比我還像新娘掰读。我一直安慰自己,他們只是感情好叭莫,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布蹈集。 她就那樣靜靜地躺著,像睡著了一般雇初。 火紅的嫁衣襯著肌膚如雪拢肆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天靖诗,我揣著相機與錄音善榛,去河邊找鬼。 笑死呻畸,一個胖子當著我的面吹牛移盆,可吹牛的內容都是我干的。 我是一名探鬼主播伤为,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼咒循,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绞愚?” 一聲冷哼從身側響起叙甸,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎位衩,沒想到半個月后裆蒸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡糖驴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年僚祷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贮缕。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辙谜,死狀恐怖,靈堂內的尸體忽然破棺而出感昼,到底是詐尸還是另有隱情装哆,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蜕琴,受9級特大地震影響萍桌,放射性物質發(fā)生泄漏。R本人自食惡果不足惜凌简,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一梗夸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧号醉,春花似錦、人聲如沸辛块。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽润绵。三九已至线椰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尘盼,已是汗流浹背憨愉。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卿捎,地道東北人配紫。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像午阵,于是被迫代替她去往敵國和親躺孝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內容