解決因第三方sdk,unity打包出來的apk在android 5.0以下矢量圖兼容問題的崩潰

android一直以來,對往下低版本的兼容做的就不好,而且工具流沒事還總變,搞起來真的是讓人禿頭
android 5.0 以後開始能使用矢量圖功能了,也就是Android Vector,但是5.0以下沒這個功能呀,所以你在編譯的時候,需要增加一個編譯參數和靜態聲明來兼容這個問題。
一般這個步驟是在 android studio 下面完成的,對於開發純粹的 android 項目來說,沒什麼難度,都有比較完善的解決方案。
舉例:
https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88
https://blog.csdn.net/u010335298/article/details/51840805

隨便找找就有,但是在unity裏這個問題可能就比較複雜了。
首先我們就要更改unity的BuildSystem,因爲只有這樣,我們才能像android studio 一樣,使用gradle進行編譯。
這一步還是比較簡單的
這裏寫圖片描述
在playsetting裏可以直接進行切換,還有一定要選上 Gradle Template,有了這個模板,我們才能加上我們的編譯指令。
打開模板,根據上面的文章+入我們的指令,有一點需要注意。

這裏寫圖片描述

這個標籤如果讓unity自動生成的話,它會將StreamingAssets下我們所有的資源都給+上來,這對於本地資源多的工程可能是個災難,因爲這個地方看gradle源碼,是有長度限制的,參數不能超過255個,但是好在這裏是可以用後綴名進行過濾的,所以我們可以不依賴unity,而對這裏進行手工編輯。

以上方法就可以應對大部分的第三方sdk導入了,但是偏偏就有一些一般手段應對不了的sdk存在,就比如說我需要接入的 helpshift。
瞭解這個東西的同學肯定知道,它提供的sdk一般是這種樣子的

這裏寫圖片描述

這種東西,在unity的Internal模式下沒問題,是可以直接編譯的,但是換到 gradle下就不行了,如果是正常的android studio下沒有問題,但是unity下,helpshift的這個android子工程,是引用不到主工程底下的支持庫的包的,而且現在android支持庫的包都打包成了aar,這個東西不像以前的jar可以用路徑引用(所以有時候純自動的東西也有它不好的地方)。

所以如果我們想讓gradle編譯通過,首先第一步就是,將helpshift的這個文件夾,打包成aar的存在,幸好官方提供了一個python寫的插件工具
地址:
https://developers.helpshift.com/unity/troubleshooting-android/

最後我們將需要的支持庫,放進工程裏就ok了,26版本之後的支持庫,將不會下載到本機的android sdk目錄下了,只能是通過聯網獲得。這裏提供個網站,你可以在上面下載到自己需要的aar庫。

https://mvnrepository.com/

注意:helpshift 打包成 aar 之後,就只能用 gradle 模式進行打包了,Internal模式就徹底廢了,因爲它的aar中沒有class.jar文件,所以Internal是無法通過的(沒打成aar時它也沒有那個jar包)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章