從一個(gè)聚合SDK的Bug解決所展開(kāi)的人生思考

最近,公司有個(gè)做聚合SDK的老鐵要離職了韩脏,然后它的鍋就甩給我了,話(huà)說(shuō)铸磅,本來(lái)開(kāi)會(huì)的時(shí)候說(shuō)和另一個(gè)同事一人負(fù)責(zé)半個(gè)月


哎赡矢,我是一個(gè)落魄的小開(kāi)發(fā)

那好吧,App這邊目前也沒(méi)有啥需求阅仔,然后就接手了這位老鐵的聚合SDK的項(xiàng)目吹散,本來(lái)是一個(gè)月的項(xiàng)目交接時(shí)間,非常奇葩的一個(gè)禮拜就走人了八酒,一點(diǎn)都不夸張的空民,代碼都還沒(méi)有看完就已經(jīng)要去和CP對(duì)接游戲了,直接上手開(kāi)干羞迷,啰嗦了這么多界轩,還沒(méi)有扯到正題,好吧衔瓮,我的鍋浊猾,必須通過(guò)文字來(lái)小小的抱怨一下。
由于這個(gè)Bug是在對(duì)接聚合SDK時(shí)發(fā)生的热鞍,但是很多小伙伴對(duì)SDK其實(shí)接觸的不多与殃,這里就先簡(jiǎn)單的介紹一下什么是SDK,什么是聚合SDK碍现。SDK的英文全名是:software development kit幅疼,翻譯成中文的意思就是“軟件開(kāi)發(fā)工具包”。SDK通俗點(diǎn)說(shuō)就是第三方提供了一個(gè)實(shí)現(xiàn)了某些功能的工具包提供給你調(diào)用這里面的代碼昼接,然后就可以實(shí)現(xiàn)功能爽篷,以下是傳統(tǒng)的接入SDK的缺點(diǎn)。
1慢睡,已經(jīng)接入的渠道不定期的升級(jí)逐工、更新
2,和其他公司的技術(shù)漂辐、商務(wù)的溝通協(xié)調(diào)
3泪喊,重復(fù)的動(dòng)作,無(wú)限循環(huán)
主流渠道SDK有 AnySDK髓涯、易接袒啼、棱鏡,這些SDK已經(jīng)接入了主流的幾十家SDK,但是缺陷也很大蚓再。他們的技術(shù)原理就是安卓反編譯滑肉、回編,利用apktool.jar
1摘仅,收費(fèi)靶庙,渠道一方要收大頭,第三方也要收娃属,那么留給游戲公司的利潤(rùn)就非常低了
2六荒,安全,數(shù)據(jù)要通過(guò)第三方SDK的服務(wù)器
3矾端,死板不自由恬吕,他們只接入了主流的,如果游戲公司和一些小的渠道有合作须床,這就需要重復(fù)的工作
客戶(hù)端解決方案
1铐料,一個(gè)抽象的SDK接入層
2,一鍵自動(dòng)化打包工具
3豺旬,多個(gè)平臺(tái)支持钠惩,Java、Unity3D族阅、Cocos2D
服務(wù)器解決方案
1篓跛,統(tǒng)一的登陸認(rèn)證中心
2,統(tǒng)一的支付中心
3坦刀,支持多款游戲
聚合SDK就相當(dāng)于一個(gè)工具愧沟,通過(guò)這個(gè)工具可以一次性批量接入大量游戲,然后快速分發(fā)給更多渠道鲤遥,比一款一款游戲接入渠道沐寺,省去了大量時(shí)間、人力盖奈、財(cái)力混坞。渠道的意思就是指可以上線(xiàn)應(yīng)用和游戲的平臺(tái),比如奇虎360钢坦、華為究孕、小米、魅族等等爹凹。聚合SDK的實(shí)現(xiàn)原理是游戲母包集成一個(gè)抽象的SDK框架厨诸,并且把一些常見(jiàn)的動(dòng)作比如初始化、支付禾酱、登陸微酬、切換登陸绘趋、分享等等實(shí)現(xiàn)放到框架的回調(diào)方法里,然后聚合這邊再寫(xiě)一個(gè)AndroidLib項(xiàng)目得封,它實(shí)現(xiàn)了這個(gè)抽象框架,在這個(gè)抽象框架內(nèi)實(shí)現(xiàn)具體的渠道SDK所需要去實(shí)現(xiàn)的方法指郁。但是CP那邊集成實(shí)現(xiàn)抽象框架后生成的apk文件怎么和渠道的資源進(jìn)行合并呢忙上,答案就是反編譯和匯編原理,這里簡(jiǎn)單的說(shuō)下會(huì)用到的一些技術(shù)闲坎。
1疫粥,apktool.jar
編譯和反編譯的工具
apktool d -f <file.apk> <dir>
--->將apk文件反編譯到指定文件夾
apktool b -f <dir> <newFile.apk>
--->將修改后的反編譯資源文件夾編譯成新的apk文件
2,dx.bat
將class文件轉(zhuǎn)換成dex文件
3腰懂,smali.jar
用apktool.jar對(duì)apk文件進(jìn)行反編譯的時(shí)候會(huì)生成一個(gè)smali目錄梗逮,smali是安卓虛擬機(jī)Dalvik所使用的一種.dex文件的匯編和反匯編器
baksmaki 可以將dex文件轉(zhuǎn)換成smali的形式
4,java運(yùn)行環(huán)境
5绣溜,python2.7
用py寫(xiě)的腳本來(lái)自動(dòng)化打包慷彤,本質(zhì)就是用這些工具去一步步反編譯和回編,避免開(kāi)發(fā)人員去敲命令行
6,aapt.exe
可以對(duì)壓縮文件內(nèi)的資源進(jìn)行操作
7怖喻,jarsigner
簽名工具
8底哗,zipalign
對(duì)安卓項(xiàng)目中的資源進(jìn)行優(yōu)化讀取,將項(xiàng)目資源映射成4個(gè)字節(jié)方便讀取锚沸,避免顯式讀取跋选。
好的,關(guān)于SDK介紹到這里哗蜈,下面開(kāi)始介紹遇到的Bug前标。

天啟 2018/06/21 15:18:34
qihoo360_{buildNum}.apk
2,檢測(cè)出SDK錯(cuò)誤,請(qǐng)修正后重新提交距潘。
sdk幫助文檔和自檢工具炼列,點(diǎn)擊查看。
錯(cuò)誤信息:
(文件 qihoo_game_sdk_sync_adapter.xml中的android:contentAuthority屬性必須為包名+.cx.accounts.syncprovider 
-- c523227b8455779fd82e745bb575a2c6.apk中缺少文件:lib/arm64-v8a/
liblegend.soc523227b8455779fd82e745bb575a2c6.apk中缺少文件:lib/arm64-v8a/
libonlywechat_plugin.soc523227b8455779fd82e745bb575a2c6.apk中缺少文件:lib/arm64-v8a/
libqhsdk.soc523227b8455779fd82e745bb575a2c6.apk中缺少文件:lib/
mips64/liblegend.soc523227b8455779fd82e745bb575a2c6.apk中缺少文件:lib/
mips64/libonlywechat_plugin.soc523227b8455779fd82e745bb575a2c6.apk中缺少文件:lib/
mips64/libqhsdk.soc523227b8455779fd82e745bb575a2c6.apk中缺少文件:lib/
x86_64/liblegend.soc523227b8455779fd82e745bb575a2c6.apk中缺少文件:lib/
x86_64/libonlywechat_plugin.soc523227b8455779fd82e745bb575a2c6.apk中缺少文件:lib/x86_64/libqhsdk.so) 

正常情況下像這種渠道SDK的Bug百度和谷歌是找不到的音比,當(dāng)然我還是不死心唯鸭,查了一下,果然不出我所料硅确,哈哈目溉,扎心,沒(méi)有找到菱农,然后我看了一下奇虎360SDK開(kāi)發(fā)包下面有一個(gè)常見(jiàn)錯(cuò)誤文檔缭付,果然,找到了循未,根據(jù)文檔所說(shuō)陷猫。

10.Wrong com.qihoo.gamecenter.sdk.activity.ContainerActivity 
qihoo_game_sdk_sync_adapter.xml中的android:contentAuthority屬性必須為包名+.cx.accounts.syncprovider
1)配置錯(cuò)誤
編譯之后變成了n1秫舌,反編譯之后,把n1改成android再回編即可

然而并沒(méi)有什么卵用绣檬,我檢查呢這個(gè)配置文件足陨,然后對(duì)比了原來(lái)游戲的配置方式,沒(méi)有毛病娇未,此刻Bug陷入了僵局墨缘。但是,我馬上想到了一個(gè)問(wèn)題零抬,它提示包名屬性必須為包名+.cx.accounts.syncprovider镊讼,那有沒(méi)有可能是CP那邊給的包名本身就是錯(cuò)的呢?為什么我會(huì)這么想平夜,原來(lái)就是在對(duì)接過(guò)程中游戲公司的那個(gè)技術(shù)感覺(jué)就屬于萌新蝶棋,遇到了非常多奇葩的問(wèn)題,比如支付參數(shù)傳遞null忽妒、在子線(xiàn)程操作UI玩裙,然而把錯(cuò)誤的原因告訴他了,依然還是不會(huì)解決段直,簡(jiǎn)單的問(wèn)題都能卡三四天献酗。話(huà)不多說(shuō),然后我對(duì)這個(gè)apk進(jìn)行了反編譯坷牛,果然罕偎,包名和CP給的不一樣,替換正確的包名重新反編譯回編打包京闰,apk通過(guò)颜及。


開(kāi)始了甩鍋模式

相信看到這里的朋友心里肯定也是和我一樣相當(dāng)?shù)臒o(wú)語(yǔ)了,太坑爹了啊蹂楣,沒(méi)帶這么坑人的俏站,解決這個(gè)Bug的思路首先肯定是包名配置錯(cuò)誤,根據(jù)平臺(tái)返回的數(shù)據(jù)提示痊土,但是如何定位到問(wèn)題的關(guān)鍵就在于你對(duì)整個(gè)項(xiàng)目的理解肄扎,錯(cuò)誤不可能和游戲母包有關(guān)系,問(wèn)題出在聚合SDK的配置文件里面赁酝。要想解決問(wèn)題犯祠,就必須足夠了解整個(gè)過(guò)程,然后才能定位到問(wèn)題并解決酌呆。就像生活中衡载,你連別人為什么說(shuō)這句話(huà)或者為什么生氣都不知道原因,那怎么去解決問(wèn)題呢隙袁,關(guān)鍵在于讀懂痰娱、理解這個(gè)人本身弃榨,然后結(jié)合語(yǔ)境去思考,并且對(duì)癥下藥梨睁。這里我意識(shí)到原因可能是CP包名給錯(cuò)是因?yàn)樗麄兊募夹g(shù)真的萌新鲸睛,如果他們一貫給我們的印象是很強(qiáng)很專(zhuān)業(yè),我不太可能會(huì)往這方面去想坡贺。
ps(下個(gè)禮拜估計(jì)會(huì)忙死官辈,app要寫(xiě),聚合SDK那邊還要對(duì)接游戲拴念,網(wǎng)游SDK的老鐵請(qǐng)假了钧萍,然后我需要暫時(shí)對(duì)接下褐缠,哎政鼠,一份錢(qián)三份活)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市队魏,隨后出現(xiàn)的幾起案子公般,更是在濱河造成了極大的恐慌,老刑警劉巖胡桨,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件官帘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡昧谊,警方通過(guò)查閱死者的電腦和手機(jī)刽虹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)呢诬,“玉大人涌哲,你說(shuō)我怎么就攤上這事∩辛” “怎么了阀圾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)狗唉。 經(jīng)常有香客問(wèn)我初烘,道長(zhǎng),這世上最難降的妖魔是什么分俯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任肾筐,我火速辦了婚禮,結(jié)果婚禮上缸剪,老公的妹妹穿的比我還像新娘局齿。我一直安慰自己,他們只是感情好橄登,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布抓歼。 她就那樣靜靜地躺著讥此,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谣妻。 梳的紋絲不亂的頭發(fā)上萄喳,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音蹋半,去河邊找鬼他巨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛减江,可吹牛的內(nèi)容都是我干的染突。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辈灼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼份企!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起巡莹,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤司志,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后降宅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體骂远,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年腰根,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了激才。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡额嘿,死狀恐怖瘸恼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岩睁,我是刑警寧澤钞脂,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站捕儒,受9級(jí)特大地震影響冰啃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刘莹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一阎毅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧点弯,春花似錦扇调、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)碳柱。三九已至,卻和暖如春熬芜,著一層夾襖步出監(jiān)牢的瞬間莲镣,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工涎拉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瑞侮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓鼓拧,卻偏偏與公主長(zhǎng)得像半火,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子季俩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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