前言:最近項(xiàng)目需要進(jìn)行APP內(nèi)預(yù)覽文檔灌曙,看網(wǎng)上說了一堆雕什,發(fā)現(xiàn)沒幾個(gè)可用的,Android對(duì)這個(gè)方便的支持真的太少了苹粟,最后鎖定了騰訊的TBS X5內(nèi)核有滑,有興趣的同學(xué)可以去官網(wǎng)看看。官方文檔過于簡潔~對(duì)于新手來說真的太痛苦了嵌削,這里做一下總結(jié)吧毛好,針對(duì)文檔預(yù)覽的功能,因?yàn)槲椰F(xiàn)在主要涉及到這部分苛秕。~希望可以對(duì)大家集成TBS有點(diǎn)幫助肌访。
集成TBS的坑:大概的集成就不說了 網(wǎng)上一堆的集成方式,官網(wǎng)也有說明:(這里集成的是最新版的 43903版本? 2020-07-21)
然后在Application里初始化:
在AndroidManifest.xml中增加內(nèi)核首次加載時(shí)優(yōu)化Service聲明:
以上步驟就完成了X5的初始化操作艇劫,然后你就可以使用強(qiáng)大的X5內(nèi)核了吼驶。
加載文檔使用到 TbsReaderView,這里TbsReaderView要?jiǎng)討B(tài)添加不能直接寫在XML里店煞,否則會(huì)報(bào)錯(cuò)蟹演。而且容器最好使用Fragment
然后就是獲取文檔路徑 傳進(jìn)去
“filePath”傳的是文件的全路徑, "tempPath"傳的是目錄路徑,preOpen方法第一個(gè)參數(shù)傳的是文件后綴就是文件的類型顷蟀。
然后在界面結(jié)束的時(shí)候調(diào)用
這樣文件的加載代碼就結(jié)束了酒请。本以為這個(gè)需求就是這么的簡單的,但是我還是太年輕了.........
經(jīng)測(cè)試發(fā)現(xiàn)當(dāng)你的項(xiàng)目添加了 'arm64-v8a' 后在多數(shù)的手機(jī)里發(fā)現(xiàn)了TBS初始化時(shí)失敗鸣个,雖然官網(wǎng)也陳述說有失敗率羞反,但是這個(gè)失敗的概率真的是太高了哮兰,嚴(yán)重影響到了這塊功能的使用。這是我的項(xiàng)目添加的
發(fā)現(xiàn)了問題后就開始一步步排查苟弛,找原因~首先要知道它的初始化流程,X5內(nèi)核是支持共享和動(dòng)態(tài)下發(fā)的阁将,在你手機(jī)里如果有app(微信膏秫、QQ等)已經(jīng)安裝了X5內(nèi)核的話 那你的app就會(huì)共享它的內(nèi)核,否則就調(diào)用下載做盅,去下載支持的內(nèi)核缤削。
那么調(diào)試開始吧:
首先我判斷是不是下載出錯(cuò)了,對(duì)下載進(jìn)行了監(jiān)聽
發(fā)現(xiàn)下載進(jìn)度是會(huì)到100? 下載完成先顯示100后又跳到其他碼去了 安裝的回調(diào)是失敗的吹榴。這里就大概的知道了原因亭敢。
估計(jì)是X5對(duì)目前64的兼容不是很好,在第一次初始化的時(shí)候失敗率特別的高图筹。
這里卡了我很久帅刀,網(wǎng)上收集了一堆的資料,官網(wǎng)也看了远剩,但沒有文檔扣溺,最后在簡書看到了一個(gè)大佬靜態(tài)集成的帖子,這里給各大網(wǎng)友參考一下瓜晤,(靜態(tài)集成會(huì)增大包30M左右)
靜態(tài)集成騰訊TBS X5內(nèi)核WebView锥余,從微信提取新版30M瀏覽器內(nèi)核打包進(jìn)apk
按上面的帖子靜態(tài)集成進(jìn)去后發(fā)現(xiàn)在64位的時(shí)候,初始化還是會(huì)失敗痢掠。就是?'arm64-v8a' 的引入驱犹。不得不放棄~
難道就沒有辦法了嗎?堂堂的騰訊不可能沒考慮到失敗的情況呀~于是又苦扎api文檔中~請(qǐng)?jiān)徫业牟俗慊N壹热簧抖紱]發(fā)現(xiàn)雄驹,難道真的要放棄'arm64-v8a'了嗎? 正當(dāng)我毫無頭緒锌云,而一旁產(chǎn)品又在催的雙重壓力下荠医,我抱著我最后的一絲希望,打開了簡書APP桑涎,搜索著騰訊TBS彬向,一篇一篇的看,最后蒼天不負(fù)有心人攻冷。我既然發(fā)現(xiàn)一線生機(jī)(文章已經(jīng)找不到了娃胆,在這里真的謝謝那作者)
這里解決的思路是:在首次初始化失敗后 調(diào)用手動(dòng)下載內(nèi)核方法。重新下載內(nèi)核等曼。
實(shí)測(cè)里烦,調(diào)用這個(gè)方法會(huì)重新下載內(nèi)核凿蒜,并且基本都會(huì)成功安裝。解決了引入了'arm64-v8a'初始化失敗的問題胁黑。這里為了保險(xiǎn)起見废封,建議可以把TBS的調(diào)試界面也加進(jìn)去,給失敗的用戶多一種修復(fù)的選擇丧蘸,這里直接貼代碼
這樣問題總算解決了漂洋,雖然不完美。但是還好這個(gè)不常調(diào)用力喷,用戶初始化成功后再之后只要不卸載app那就會(huì)一直成功的了刽漂。希望后期官方可以優(yōu)化一下吧。文章最后希望可以幫助到您