編輯:關於Android編程
很多團隊都有接入Android Andfix的剛性需求,但是早些版本的Andfix接入成本略高。如只支持maven工程、定制的打包插件有很多額外限制、摩天輪打包不支持普通(非bundle)App等。不過現在天空飄來五個字「這都不事兒」,這些問題都已得到很好的解決,摩天輪團隊已經提供了Andfix Gradle插件,並支持了普通(非bundle)App Andfixx打包流程。目前淘寶彩票和update4mtl項目已經接入Andfix Gradle並驗證成功,下面我會介紹一下Andfix Gradle接入的流程。
基線包:需要要被修復的app版本,同MTL的基准的容器版本。(本示例中基線包版本是1.0.7.6)
Patch包:補丁包,即基線包與增加修復代碼後版本的差量文件,MTL生成的形式如下
Andfix Gradle接入主要有兩部分:
一圖勝千言,我們看一下Andfix接入的主要步驟有哪些:
1.1 修改build.gradle
增加以下依賴:
dependencies {
compile 'com.taobao.android:securityguardsdk:6.1.33@aar'
compile 'com.taobao.android:securitybody:6.1.15@aar'
compile 'com.taobao.android:nocaptcha:6.1.13@aar'
compile 'com.taobao.android:misc:6.1.17@aar'
compile 'com.taobao.android:uatrace:6.1.13@aar'
compile 'com.taobao.android:compatible:6.1.13@aar'
compile('com.taobao.android:downloader:1.1.1') {
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.google.android', module: 'android'
}
compile('com.alibaba.mtl:app-monitor-sdk:2.3.8') {
exclude group: 'com.alibaba', module: 'fastjson'
}
compile('com.taobao.android:mtopsdk_allinone:1.5.6.11') {
exclude module: 'tnet-jni', group: 'com.taobao.android'
exclude module: 'utdid4all', group: 'com.taobao.android'
exclude module: 'umid', group: 'com.taobao.android'
exclude module: 'securityguard', group: 'com.taobao.android'
exclude module: 'app-monitor-sdk', group: 'com.alibaba.mtl'
}
compile('com.taobao.android:hotpatch:3.2.0@aar') {
transitive = true
exclude group: 'com.taobao.android', module: 'downloader'
exclude group: 'com.taobao.android', module: 'usertrack'
exclude group: 'com.taobao.android', module: 'mtopsdk_allinone'
}
}
注意踩坑地方:
1.2 接入代碼
注:目前只接入了pull的方式
1.2.1 初始化
初始化調用的接口與之前稍有不同,傳入的參數要多一個ttid,這是由於mtop升級要求,具體在HotPatchManager類中提供了初始化接口如下所示:
private void initHotpatch() {
String ttid = getResources().getString(R.string.ttid);//app渠道號
// @param app the application context.
// @param mainVersion 客戶端的主版本號
// @param ttid 渠道號
// @param contentMap 傳遞給patch的內容,通常為null
// @return the current HotPatchManger instance.
HotPatchManager.getInstance().appendInit(this, Utils.getClientVersion(this), ttid, null);
}
1.2.2 加載patch
該方法建議在盡可能早(安全保镖初始化之後)的時候調用,會自動去加載對應的patch
private void startHotPatch() {
HotPatchManager.getInstance().startHotPatch();
}
1.2.3 請求Hotpatch
根據業務需求選擇拉取andfix patch文件的時機。
//這裡的參數update4mtl是當前app在MTL定義的group字段
HotPatchManager.getInstance().queryNewHotPatch("update4mtl");
1 提交基線包到倉庫
1.1通過三方庫發布申請
三方庫發布申請地址
https://aone.alibaba-inc.com/aone2/library/upload?spm=0.0.0.0.SoII74
1.2 到倉庫查看基線包是否上傳成功
nexus倉庫地址
http://repo.alibaba-inc.com/nexus/index.html
2 代碼修復
fix bug(略)
AndFix目前不支持的case:
注:不支持的case新版有可能已經支持,請參閱海納最新文檔Hotpatch SDK接入
3 修改混淆文件
keep class com.taobao.hotpatch.patch.IPatch{*;}
-keep class com.taobao.hotpatch.patch.PatchParam{*;}
-keep class com.taobao.hotpatch.patch.PatchMain{*;}
-keep class com.taobao.hotpatch.patch.PatchResult{*;}
-keep class com.taobao.hotpatch.util.HotPatchUtils{*;}
-keep class com.com.taobao.updatecenter.query.MudpUpdateRequest{*;}
-keep class * extends java.lang.annotation.Annotation
-keepclasseswithmembernames class * {
native ;
}
4 Gradle增加andfix插件
4.1 build.gradle引入andfix插件
apply plugin: 'com.taobao.android.andfix'
4.2 build.gradle增加andfix-plugin依賴
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.taobao.android.gradle:andfix-plugin:1.0.3'
}
4.2 build.gradle增加andfix描述
andfix {
patch { //表示這個配置對應buildType:debug,只對debug的類型生效
createAPatch true
baseDependency 'com.alibaba.android:android-update4mtl-demo:1.0.7.6@apk' //通過maven坐標得到基准包,可以為ap,apk
filterPath file("filterClass.txt") //設置不做對比的白名單
preProcessManifest true //是否對manifest做預處理,解決merge tools配置不生效的問題
signOnline false //如果要使用mtl的在線簽名工程,設置在線簽名
signAppName 'android-update4mtl-demo'
}
}
注意踩坑點:
注:本樣例沒有使用在線簽名功能,需要的可以自己試試
5 接口權限申請
如果沒有申請接口權限會報{"api":"mtop.client.mudp.update","v":"1.0","ret":["FAIL_SYS_API_UNAUTHORIZED::請求API未授權"]異常,所以需要聯系mtop同學申請該接口權限。
注:申請權限需要提供線上環境app key,可以旺旺聯系「mtop問題解答」
1 產品配置
1.1 產品配置中需要勾選
1.2 增加andfix發布模板(andfix基准模板同)
1.2.1 創建
1.2.2 編輯
2 創建andfix發布區
2.1 當基線包發布成功後,在「更新推送」頁面點擊「創建Andfix發布區」,創建andfix發布單
2.2 新建發布需求
在創建好的Andfix發布區點擊「新建發布需求」創建項目
3 打包發布
3.1 打包(編譯構建)
打包時會默認使用產品配置中配置好的andfix發布模板,用戶可以根據自己需要再「編譯構建」tab裡「編輯配置」開始打包。
3.2 測試通過
掃描二維碼驗證的aptatch.jar,如果通過可以點擊「測試通過」
3.3 審核(可選)
如果產品配置中勾選了「ANDFIX自主發布審核」,需要審核人員審批,發起審核後,審核人員會收到郵件和旺旺通知。
如果審核通過,則進入下一步「發布」
3.4 發布
點擊「發布」,開始配置發布信息
「確認發布」後patch發布完成
今天又開始我的App開發,因為之前一直做的是SDK,所以涉及到界面UI很少,剛開始做Android應用的時候,沒有對dp,px,sp等概念有一個深入的了解,只知道他們之間
不少網友對VIVO X5Pro的評價是:外觀漂亮、手感舒適而且音色音質好。不知你對VIVO X5Pro又有什麼特別的看法呢?VIVO X5Pro是不是一款性
Android 中與 Touch 事件相關的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEv
本文演示如何在Android中實現ListView圓角效果。無論是網站,還是APP,人們都愛看一些新穎的視圖效果。直角看多了,就想看看圓角,這幾年刮起了一陣陣的圓角設計風