踩坑記錄
踩了快一個星期的坑,希望能幫助到有需要的人
項目使用的是unity2019版本,由于很多新的插件和功能都已經(jīng)不支持2019了,所以升級unity的版本
在升級版本的過程中遇到了很多的問題,因為本身基礎(chǔ)較差,加之比較新,網(wǎng)上能找到的解決辦法少之又少,當(dāng)然也存在不希望外露保持技術(shù)神秘感的大神…
扯遠(yuǎn)了,在這里記錄一下踩坑的過程以及解決辦法
使用環(huán)境
Androidstudio 2022.3 - - -最好是比較新的像4.11左右或者一下的就盡量不要用了,老版本在打包的時候會彈出異常,提示某些以前在build.gradle里的關(guān)鍵字已經(jīng)失效了,要用新的去代替
unity 2023 - - -安卓打包相關(guān)的工具
windows10 sdk 10.0.1314 - - - 后面會說是干嘛的
ndk r23b - - - 后面會上傳附件
sdk 28及以上- - -后面會上傳附件,也可以在as官網(wǎng)里下
gradle 7.6.0 - - - 這個在安卓工程里的gradle-wrapper.properties里可以修改
gradle插件 7.4.1 - - - 這個需要和gradle進(jìn)行匹配,網(wǎng)上可以根據(jù)gradle找到對應(yīng)的版本 在項目根目錄下的build.gradle里
Unity的準(zhǔn)備工作
在unityhub下載unity2023 我的是2023.1.12f
下載對應(yīng)的安卓環(huán)境(同事親測它幫我們下的安卓環(huán)境是有問題的,比如unit2023打包安卓至少是jdk11,但是它幫我們下的jdk還是8的)
下載之后選擇安卓環(huán)境打開項目,然后制作你的項目
寫完代碼后可以現(xiàn)在unity打包成apk看看能不能正常打包運行
如果要打包的話,需要自己安裝jdk11
然后在
上圖的位置去掉勾勾,選擇你安裝好的jdk11的路徑
后面的sdk和ndk,gradle都是一樣的道理,當(dāng)然你可以先用默認(rèn)的打包看看有沒有問題,有的話再去下載我上面說的sdk和ndk版本,然后在上圖修改對應(yīng)的路徑
到這里應(yīng)該就能正常打包了
為什么說可以先試一下官方默認(rèn)給你的環(huán)境路徑去打包呢,因為這個2023可能太新了,官方還沒有適配還是什么的,后面可能就發(fā)現(xiàn)了這個問題,指不定后面的你們?nèi)ゴ虬臅r候他已經(jīng)適配好了呢是吧?
打包的設(shè)置
我使用的是il2cpp的打包模式,mono的還沒試過,不過估計比il2cpp簡單很多
記得在playersettings里確定下面兩個都勾上了
然后unity的工作就基本結(jié)束了
Windows10 SDK
在unity工程集成到Androidstudio之前還需要確保一個工具已經(jīng)準(zhǔn)備好了
就是window10 SDK
這個可以在vs installer里點擊修改
然后點擊
確保你的電腦已經(jīng)至少又一個Windows10 sdk了,否則在集成之后打包的過程中會出現(xiàn)異常
具體的說就是il2cpp在打包的時候會調(diào)用c++這類比較底層的代碼,而在Androidstudio中調(diào)用的時候會需要用到系統(tǒng)里的c++部分代碼,其中的內(nèi)容就是在這個Windows10 sdk里,如果你沒有的話,打包的時候就會提示你error # include <string.h>類似的字樣,導(dǎo)致打包失敗
Androidstudio
這里的部分比較復(fù)雜,我盡量剪短一點說明
因為是在Androidstudio里進(jìn)行整體打包的,所以這里的打包環(huán)境一定要確定是正確的(也就是說每個工具之間的版本一定要是兼容和匹配的)
如果不匹配的話就會出現(xiàn)很多你在網(wǎng)上根本找不到原因和辦法的異常,因為它給出的異常信息就少之又少,所以尋找解決辦法就是在大海撈針
每個工具之間的版本我在上面已經(jīng)寫了,如果你的工具版本和我的不一樣,需要自己去嘗試
如果比我低很多的,建議你用我上面推薦的版本,因為版本太低的工具基本上是被淘汰了,其他的工具已經(jīng)不支持了
比如你的sdk和ndk都是比較新的,但是你的gradle還是老的版本
再具體一點就是sdk是34,nkd是r23b的,但是你的gradle版本還在4.0或者附近的話,在打包的時候就會出現(xiàn)提示你某些xml里的屬性不見了,就是因為不兼容的問題導(dǎo)致的
所以如果你遇到了異常但是又彈盡糧絕的話,可以嘗試更新工具的版本
在projectsettings里設(shè)置你的sdk,ndk以及jdk
然后按照官方給出的unity集成到Androidstudio的流程進(jìn)行操作
https://github.com/Unity-Technologies/uaal-example/blob/master/docs/android.md
把unity打包出來的安卓工程里的unitylibrary集成到Androidstudio里
第一個需要注意的地方
官方里說的
在setting.gradle里添加框框里的內(nèi)容的需要修改
我使用的Androidstudio2022
需要把框框里的內(nèi)容放到項目根目錄下的build.gradle里
第二個需要注意的地方
下圖框框里的路徑你記得改成你的unitylibrary的路徑,不要直接復(fù)制粘貼,我就是直接復(fù)制粘貼了,sync半天都沒識別到unitylibrary…
第三個需要注意的地方
Androidstudio 2022版本好提示你包名的設(shè)置已經(jīng)更換了新的規(guī)則,需要進(jìn)行修改
在主模板里的builder.gradle添加這個
不能在AndroidManifest.xml里添加packagename這個字段了,否則會報異常
第四個需要注意的地方
需要在
string.xml文件中添加上面這行代碼,否則會彈出recources x00之類的異常
這個是老問題了,之前的版本打包的時候也會又這個問題
第五個需要注意的地方
在項目根目錄的local.properties文件里
可以指定一下你的sdk和ndk的路徑
不指定的話就在projectsettings里進(jìn)行選擇
Androidstudio2022已經(jīng)不支持在buidl.gradle的defaultconfig里添加ndk這個關(guān)鍵詞了
直接在外面添加ndkversion就可以了
第六個需要注意的
正常的普通項目,上面都解決了的話應(yīng)該就可以正常打包了
如果項目中用到了阿里的arouter插件
在進(jìn)行打包的時候會提示異常, asm 7之類的,這個問題目前還沒有解決,由于時間關(guān)系只能先用回2019的舊版本
試試2021的版本可不可以打包成功吧…
其他
unity啟動緩慢
(該問題已解決,可往下看)
這個問題之前的版本也有,一直不知道原因,就是單純的unity集成到Androidstudio之后,進(jìn)行調(diào)用打開,需要等很長的一段時間,這個問題在更新了unity和Androidstudio之后還是會有,如果有大佬知道原因的話務(wù)必解一下小弟的困惑
就先記錄這么多吧,研究了快一個星期了…
可能還有一點遺漏的,想起來的話會再更新的…
希望可以幫助到有需要的人…
更新
更新一 2023.9.27
unity2023版會出現(xiàn)arouter插件的兼容問題
親測unity2021版可以正常使用
另外提及一下,關(guān)于unity集成到安卓項目中作為一個module,在跳轉(zhuǎn)的時候出現(xiàn)的等待時間過長問題
已經(jīng)發(fā)現(xiàn)了解決的思路以及問題所在
涉及到各方面的因素,這里就只說明解決思路
我們發(fā)現(xiàn),在unity自己打包出來的apk運行是不會出現(xiàn)等待時間過長的情況的,但是為什么集成到安卓工程之后就出現(xiàn)了這個問題呢,很明顯是在安卓工程中我們遺漏了一些配置或者說是操作
檢查unityi打包出來的unitylibaray我們可以發(fā)現(xiàn)
文件里又一個laucher的文件,這個文件就是unity自己寫的類似安卓工程里的app這個主模塊
抱著試一試的操作我去檢查了一下unity自己打包出來的和安卓原生的app主模塊里配置文件的區(qū)別,發(fā)現(xiàn)果然是這里的問題
實際說到這里已經(jīng)很清楚了,后面的我就細(xì)說了。
這個問題可以說困擾了我兩三年之久,當(dāng)然實際肯定沒這么久的,畢竟中間我也很少關(guān)注這個問題以及安卓工程一些打包的知識,不過這個解決的思路我確實受益匪淺,通過比較兩者的區(qū)別去找到解決問題的關(guān)鍵點,嘛,雖然之前也有嘗試過,不過確實也是因為基礎(chǔ)太差了,也沒人引導(dǎo)
unity2021
關(guān)于在Androidstudio打包aar供unity調(diào)用的問題
這里只說unity的問題
如果在安卓中調(diào)用打好的aar一切正常,放在unity里打包時出現(xiàn)了類似
Android Error:AAPT: error: resource android:attr/colorError not found
這樣的問題,大概率是因為unity和你的Androidstudio需要的依賴的版本不一樣導(dǎo)致的
這個時候需要去查看Androidstudio里的build.gradle你所添加的插件的依賴版本和unity里的是否一致,不一致的會直接復(fù)制Androidstudio里的然后重新打包即可
關(guān)于unity調(diào)用aar包打包時出現(xiàn)的問題
如果unity需要調(diào)用aar包,在打包的時候出現(xiàn)了關(guān)于minisdk相關(guān)的異常信息,需要比較一下unity里的minisdkversion和aar包里的sdkversion是否一致,不一致的話最好保持一致
關(guān)于unity打包成apk出現(xiàn)的問題
問題如下,在assets的plugins的Android里添加了aar包,然后測試打包的時候出現(xiàn)了multiple dex classes之類的字樣的異常
在未添加新的aar包之前,直接進(jìn)行打包是正常的
我的解決思路是文章來源:http://www.zghlxwxcb.cn/news/detail-731337.html
- 在網(wǎng)上看了可能是library緩存的問題,于是刪掉了然后重新打開unity進(jìn)行打包,無效
- 可能是添加了新的aar包的問題,所以我試著刪掉了aar包,重新打包,無效
- 而且在第二個的操作之后,即使我想按照原來的項目代碼去打包原來的apk也一直在報這個錯
- 在lunch gradle 里添加了如下代碼
無效
- 我試著先不打包apk,打包成安卓工程然后導(dǎo)入到as里面,然后再進(jìn)行打包,發(fā)現(xiàn)是OK的,所以問題就出在unity的laugh gradle里面
- 可能是gradle和jdk和sdk和ndk之間版本不同的導(dǎo)致的,我把unity里的gradle,ndk和sdk個版本都跟Androidstudio里的保持了一致,還是無法進(jìn)行正常打包,推測可能是jdk的版本問題,但是unity2021只支持jdk8,因此只能另尋他法,無效
- 由于打包的方式是mono,所以關(guān)于打包build出來的信息都在
這里面,這里就是問題所在了,這個build出來的信息和Androidstudio里的build一樣的, 如果有新的內(nèi)容加進(jìn)來,然后又刪掉了,build里偶爾是會出現(xiàn)內(nèi)容沒有清理完全的情況的,因此要刪掉這個文件里的下面兩個文件夾里的build
最后是lancher和unitylibaray兩個的build 都刪掉比較保險,反正build會在你打包的時候自動重新生成的,所以可以放心刪除文章來源地址http://www.zghlxwxcb.cn/news/detail-731337.html
到了這里,關(guān)于【unity2021-2023打包安卓工程】踩坑記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!