[Unity] 在Unity中導(dǎo)入Android原生插件

? ? ????近期接到了一個(gè)新的需求是接入臺(tái)灣版的SDK。從SDK提供商那邊拿到的分別是Android端和iOS端的兩個(gè)包,沒有直接提供支持Unity接入的unityPackage,那就只能分開接入了。本文描述的是接入Android端的過(guò)程,以及血淚史。。

? ? ? ? Android端拿到的是一個(gè)aar包,里面是一些API供Android原生調(diào)用,要放入U(xiǎn)nity供Unity調(diào)用的話,是需要接入U(xiǎn)nityPlayerActivity,我的思路就是創(chuàng)建一個(gè)Android Library引用SDK包,并編寫供Unity調(diào)用的函數(shù),然后導(dǎo)出aar包。將這個(gè)aar包及SDK的aar包放入U(xiǎn)nity使用。

? ? ? ? 那么就先開始創(chuàng)建一個(gè)項(xiàng)目吧。

填寫項(xiàng)目信息
對(duì)應(yīng)的Unity中的packageName
選擇API
選擇Empty Activity
填寫Activity名字

? ? ? ? 要編寫供調(diào)用的函數(shù)首先要找到Unity提供的 classes.jar 這個(gè)包,文件的位置在你的Unity安裝項(xiàng)目目錄:Unity -> Editor -> Data -> PlaybackEngines -> AndroidPlayer -> Variations -> il2cpp -> Release -> Classes。如果找不到Unity安裝目錄可以右擊桌面的Unity圖標(biāo),選擇“打開文件所在的位置”,就能夠到達(dá)Data文件夾,然后逐級(jí)往下找就能找到啦。

就是它

? ? ? ? 接下來(lái)要做的就是將classes.jar文件導(dǎo)入Android Studio的libs文件夾中,點(diǎn)擊app,然后雙擊libs文件夾就能找到libs的位置了,然后復(fù)制jar包,粘貼進(jìn)去。

找到libs
加入classes.jar

? ? ? ?導(dǎo)入后,需要在app級(jí)的build.gradle中加入引用(如下),這樣就可以使用這個(gè)jar包了~

implementation files('libs/classes.jar')

配置gradle文件

? ? ? ? 點(diǎn)擊右上角的Sync Project with Gradle Files按鈕,或者提示條上的Sync Now可以檢查build.gradle文件有沒有出錯(cuò)。

Sync Project

? ? ? ? 這個(gè)時(shí)候,重復(fù)上述導(dǎo)入jar包的步驟就可以導(dǎo)入SDK的aar包了,同樣放在libs文件夾中,并在build.gradle里面配置引用,并且配置aar包需要的其他配置。aar包的引用配置跟jar包一樣:

implementation files('libs/包名.aar')

dependencies配置

? ? ? ? 這時(shí)候可以在MainActicity.java文件中寫Unity交互代碼了!本文就不贅述代碼的編寫了,將在另一篇文章中寫Unity和Android交互。

? ? ? ? 寫完Java代碼后,就要開始導(dǎo)出aar包了,在導(dǎo)出aar包前還有一些事情要做,就是修改build.gradle配置。我們?cè)谛陆ㄒ粋€(gè)Android Studio項(xiàng)目時(shí),默認(rèn)設(shè)置為application,這時(shí)候build的話會(huì)獲得一個(gè)apk包,所以要修改。

applyplugin:'com.android.library'

修改build配置

? ? ? ? 這時(shí)將復(fù)制一份AndroidManifest文件供導(dǎo)入U(xiǎn)nity使用,然后修改項(xiàng)目中的AndroidManifest文件:

修改后的AndroidManifest

? ? ? ? 然后修改activity_main.xml文件

修改后的activity_main.xml

????????點(diǎn)擊Build -> Build Bundle(s)/APK(s) -> Build APK(s) 打包

打包

????????這時(shí)候會(huì)獲得一個(gè)app-debug.aar的包,位置如圖

aar包位置

? ? ? ? ?在導(dǎo)入U(xiǎn)nity之前,需要?jiǎng)h除這個(gè)aar包中的classes.jar以及引用的sdk包,不然在Unity打包的時(shí)候會(huì)發(fā)生沖突。如圖,找到aar所在位置,右擊打開aar,找到libs文件夾,刪除里面的文件。

找到文件所在位置
右擊打開
找到libs文件夾
刪除這兩個(gè)文件

? ? ? ? 然后將這個(gè)文件拖入U(xiǎn)nity項(xiàng)目,并且把sdk包拖入U(xiǎn)nity項(xiàng)目中,同時(shí)還有AndroidManifest文件以及Unity中需要配置的gradle文件。其中,AndroidManifest文件可以直接從自己的項(xiàng)目中拷貝出來(lái),gradle文件需要復(fù)制Unity提供的模板文件,然后進(jìn)行修改。找到Unity項(xiàng)目Unity -> Editor -> Data -> PlaybackEngines -> AndroidPlayer -> Tools -> GradleTemplates,復(fù)制 mainTemplate.gradle 文件到Unity項(xiàng)目中。

gradle文件
導(dǎo)入U(xiǎn)nity后

? ? ? ? 打開 mainTemplate.gradle 文件,找到dependencies,將之前在Android Studio項(xiàng)目中所寫的SDK所需配置復(fù)制到里面,就完成Unity的build配置了。

mainTemplate.gradle

? ? ? ? 打開導(dǎo)入U(xiǎn)nity的AndroidManifest文件,做一些修改

Unity中的AndroidManifest

????????接下來(lái)就可以在Unity中編寫代碼了,寫完就可以打包了。

? ? ? ? 在Unity中使用Gradle打包將寫于下一篇文章。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容