Appium安裝加固后的apk無法啟動

0x00

今天用Appium執(zhí)行UI自動化用例的時候,發(fā)現(xiàn)安裝蝸牛讀書的包之后apk無法啟動部念,啟動即掛掉,查log也無法查到有效的報錯日志。然后自己通過adb去安裝apk包的話家坎,apk可以順利啟動,正常運行吝梅。Appium安裝apk的過程中發(fā)生了什么---

0x01

我從蝸牛讀書的官網(wǎng)(https://du.163.com/)下載了最新版本apk虱疏,并將該apk拷貝到Appium UI自動化工程路徑下。此時兩個apk包是一摸一樣的憔涉。如下圖所示订框,左邊是下載路徑,右邊是UI自動化工程路徑兜叨。


然后執(zhí)行蝸牛讀書的UI自動化用例穿扳,該用例執(zhí)行前會做adb uninstall卸載蝸牛讀書app的操作,然后執(zhí)行的時候會先讓Appium執(zhí)行安裝蝸牛讀書app国旷,再進行其他UI自動化操作矛物。當執(zhí)行完UI自動化用例時,執(zhí)行報錯跪但,我們看到app啟動后馬上閃退掉履羞。工程報錯是無法找到相應(yīng)的元素。
為了更好的定位問題,我把appium執(zhí)行時要用的apk自己進行了手動adb install安裝忆首,發(fā)現(xiàn)會出現(xiàn)同樣的無法啟動的問題爱榔。然后我對比了此時apk的源文件和appium路徑下的apk文件,兩者有差異:

也就是說糙及,通過appium安裝的apk與原始apk不是一摸一樣了详幽。那么做了什么操作呢?

0x02

我們嘗試從appium的日志中找尋蛛絲馬跡浸锨。單獨的報錯日志意義一般唇聘,因為app未正常啟動,找不到指定元素也是必定的柱搜。我們查看下appium客戶端的實時日志迟郎,其中有關(guān)鍵的兩條操作:



如上圖所示,關(guān)鍵的兩條操作就是紅框中圈出所示聪蘸,分別進行了重簽名和對齊宪肖。重簽名使用的應(yīng)該是appium內(nèi)置的debug簽名,因為重簽名之前先做了debug簽名的校驗宇姚。
這樣看來就能夠解釋為什么經(jīng)過appium安裝后的apk大小發(fā)生了變化匈庭,appium對apk做了重簽名和對齊的操作。那么浑劳,為什么同樣的UI自動化設(shè)置阱持,大部分產(chǎn)品可以順利執(zhí)行,只有蝸牛讀書的apk無法正常啟動呢魔熏?

0x03

我們嘗試從蝸牛讀書apk本身入手衷咽,出問題的版本是最新版本,我們拿一個老的蝸牛讀書的版本來試蒜绽,發(fā)現(xiàn)同樣經(jīng)過appium重簽名和對齊之后的apk也能夠正常打開和操作镶骗。這個版本是有做過什么特殊處理么?
我們使用apk反編譯方法對apk進行簡單分析躲雅,發(fā)現(xiàn)新舊兩個版本的apk還是有著較大差異鼎姊。如下兩圖所示:


新版本蝸牛讀書apk反編譯結(jié)果

老版本蝸牛讀書apk反編譯結(jié)果

從上兩圖對比可以明顯的看到,雖然兩個版本都做了代碼混淆相赁,但是新版本在主包中只能看到MyApplication明顯是對apk做了加固的結(jié)果相寇。
與蝸牛讀書開發(fā)二次確認了下,確實在新版本中新增做了apk的加固钮科。經(jīng)過加固后的apk唤衫,如果被重簽名之后,外殼對簽名進行校驗通不過的話绵脯,不會正常啟動佳励。所以休里,問題的原因就比較清晰了:蝸牛讀書最新版本做了apk的加固,appium啟動apk時對apk進行了重簽名赃承,導(dǎo)致啟動時外殼校驗簽名不通過從而啟動失敗妙黍。

0x04

了解到原因后,如何解決呢瞧剖。
一種方式是不通過appium啟動apk废境。但是這種方式對于特殊的UI自動化場景是不適用的,比如想測試冷啟動的UI場景筒繁,就需要Appium進行啟動。
第二種方式是使用其他版本的apk巴元。但是這種方式治標不治本毡咏。
第三種方式是可以讓appium不進行apk的重簽名。通過添加設(shè)置capabilities.setCapability("noSign","true") 不讓appium對apk進行重簽名逮刨。沒添加這條設(shè)置的話呕缭,默認是開啟appium對apk的重簽名的。

結(jié)語

總結(jié)下Appium安裝apk后無法啟動的原因修己,是appium默認對安裝的apk都要進行重簽名恢总,而按照某種策略加固后的apk被appium重簽名后由于簽名校驗不通過從而無法啟動。解決方式則是對appium添加不進行重簽名的設(shè)置睬愤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末片仿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子尤辱,更是在濱河造成了極大的恐慌砂豌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件光督,死亡現(xiàn)場離奇詭異阳距,居然都是意外死亡,警方通過查閱死者的電腦和手機结借,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門筐摘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人船老,你說我怎么就攤上這事咖熟。” “怎么了努隙?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵球恤,是天一觀的道長。 經(jīng)常有香客問我荸镊,道長咽斧,這世上最難降的妖魔是什么堪置? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮张惹,結(jié)果婚禮上舀锨,老公的妹妹穿的比我還像新娘。我一直安慰自己宛逗,他們只是感情好坎匿,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雷激,像睡著了一般替蔬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屎暇,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天承桥,我揣著相機與錄音,去河邊找鬼根悼。 笑死凶异,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的挤巡。 我是一名探鬼主播剩彬,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矿卑!你這毒婦竟也來了喉恋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤粪摘,失蹤者是張志新(化名)和其女友劉穎瀑晒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徘意,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡苔悦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了椎咧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玖详。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖勤讽,靈堂內(nèi)的尸體忽然破棺而出蟋座,到底是詐尸還是另有隱情,我是刑警寧澤脚牍,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布向臀,位于F島的核電站,受9級特大地震影響诸狭,放射性物質(zhì)發(fā)生泄漏券膀。R本人自食惡果不足惜君纫,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芹彬。 院中可真熱鬧蓄髓,春花似錦、人聲如沸舒帮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玩郊。三九已至肢执,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間译红,已是汗流浹背蔚万。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留临庇,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓昵慌,卻偏偏與公主長得像假夺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子斋攀,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容