Unity對接SDK-Android Studio 導(dǎo)出aar方式

簡介

網(wǎng)上很多教程,但都是一些比較舊的向楼,這里整理出一份新的,以供參考谐区。
這篇主要講的是AS中對平臺的SDK進(jìn)行必要的接口包裝湖蜕,發(fā)布成aar放到Unity中,Unity中使用和Android通訊的方式來調(diào)用宋列。最后從Unity打包成apk文件昭抒。
主要關(guān)注點(diǎn):AndroidManifest.xml.aar.jar

環(huán)境

Unity2018.4.0灭返,android studio 3.4.2盗迟,Gradle4.1
重要事前說前面,一定注意Unity的版本和Gradle版本熙含。版本不匹配會造成運(yùn)行錯誤的罚缕。整個打包過程是可以進(jìn)行的,這點(diǎn)最坑怎静。下面是參考圖

Snipaste_2019-07-16_13-44-49.png
  • 如果AS打aar包的話到Unity最終生成apk的話邮弹,以Unity內(nèi)置的Gradle版本為主。AS中的gradle版本不能高于Unity中的gradle版本
  • 如果是Unity導(dǎo)出AS工程到AS中生成apk的話蚓聘,以AS的版本為主腌乡。Unity中的gradle版本不能高于AS中的gradle版本
  • AS查看Gradle版本如下圖


    image.png
  • Unity查看Gradle版本方式,使用Gradle方式導(dǎo)出一個Android工程或粮,在根目錄下有個build.gradle文件导饲,和AS中的一樣捞高,能看到Gradle版本氯材。


    image.png

創(chuàng)建Android工程

創(chuàng)建一個空的android工程,工程名字和包名沒有強(qiáng)迫癥的話不用糾結(jié)硝岗,后續(xù)發(fā)布aar時不出導(dǎo)出這個工程的氢哮,只是導(dǎo)出它里面的自定義模塊,參考下圖

image.png

image.png

image.png

Android工程中創(chuàng)建Module

我們之后要做的業(yè)務(wù)邏輯都在這個Module中型檀,而這個Module才是我們真正需要的冗尤,網(wǎng)上也有教程直接把Android工程改成只導(dǎo)出一個Module,這里就不在額外介紹了胀溺,為了不被混淆裂七,就容忍一些沒用的東西存在吧!Module的包名可以根據(jù)自己需求命名仓坞,這個包名在之后的Unity工程里會做更改的背零,參考下圖。

image.png

image.png

image.png

準(zhǔn)備依賴包

  • Unity內(nèi)置的jar包
    ??發(fā)布供Unity使用的aar包无埃,必不可少的需要Unity的classes.jar包徙瓶,存在目錄:UnityEditor的安裝目錄下\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar
    更早的Unity版本這里就不介紹了,存在的目錄有差異嫉称,自行網(wǎng)上查找侦镇。
  • 平臺SDK包
    ??對接哪個平臺的自動到相應(yīng)的官網(wǎng)查找,這里示例使用的是快手SDK的融合包 织阅,一般提供的有兩種壳繁,一種aar,一種是jar。
  • 另外Pieces_Jing有篇文章介紹使用反射方式來進(jìn)行Untiy和Android之間的調(diào)用闹炉,推薦參考一下伍派!
  • 把整理好的包放到Module/libs目錄下,依次 右鍵 -> Add As Library中剩胁,參考下圖


    image.png
  • 找到build.gradle(Module:模塊名字)的文件中的dependencies項诉植,一般在最下面

dependencies {
    // 如果libs中的某些jar包不想在發(fā)布aar中存在的話,這里要注釋掉昵观,比如Unity中的classes.jar不能包含晾腔,不然編譯apk會報錯
    //implementation fileTree(include: ['*.jar'], dir: 'libs') 
    compileOnly files('libs/classes.jar')    //  compileOnly 的方式是項目中可以使用,但發(fā)布jar包中不會包含進(jìn)去
    compileOnly files('libs/kwaisdk-release-1.3.2.aar') // aar的包同樣不能包含在發(fā)布的aar包中啊犬,Unity中不支持這樣的引用關(guān)系
    implementation files('libs/rx-classes.jar')  // implementation  的方式是發(fā)布aar中包含這個jar包
    implementation files('libs/rxjava-2.1.0.jar')
    implementation files('libs/reactive-streams-1.0.2.jar')
}
  • 之后創(chuàng)建MainActivity就和以前的方式一樣了灼擂,這里就不在多說,下面重點(diǎn)說一下AndroidManifest文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.windsoul.allinlibrary"><!-- 這個包名要在發(fā)布后復(fù)制到Assets/Plugins/Andorid/ 目錄下 -->
    <!-- 網(wǎng)絡(luò)權(quán)限觉至,登錄必須 -->
    <uses-permission android:name="android.permission.INTERNET" /> <!-- 網(wǎng)絡(luò)信息獲取權(quán)限剔应,kanas打點(diǎn)需要記錄網(wǎng)絡(luò)信息,以及sdk需要判斷是wifi還是4g的case -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 文件讀取權(quán)限语御,allin 強(qiáng)更必須 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 安裝權(quán)限峻贮,targetSdkVersion>=26時,allin強(qiáng)更安裝apk需要 -->
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <!-- 手機(jī)設(shè)備信息如imei權(quán)限獲取应闯,kannas需要 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> <!-- 加上這個纤控,Unity中需要 -->
        </activity>
    </application>

</manifest>
  • 選中創(chuàng)建的Module 發(fā)布 Build -> Make Module "所創(chuàng)建的的Module名字",等待結(jié)束后可以在build/outputs/aar/看到生成的aar文件碉纺,參考下圖

    image.png

    image.png

  • 上圖中所示的aar文件就是我們想要的船万,不過還需要進(jìn)行加工一下,使用解壓文件可以打開它骨田,可以看到熟悉的樣子耿导,和Eclipse中對接SDK方式很相似。其實就是一個鬼玩意态贤。


    image.png
  • 把它里面的AndroidManifest.xml文件放到Assets/Plugins/Android目錄下舱呻,然后從aar包中刪掉它

  • 打開AndroidManifest.xml找到package="改成Unity的包名"

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.windsoul.allinlibrary"><!-- 這個包名要在發(fā)布后復(fù)制到Assets/Plugins/Andorid/ 目錄下 -->
  • 多說一句抵卫,aar包中的libs目錄檢查一下狮荔,unity中的classes.jar包不能存在,如果存在的話介粘,刪掉殖氏。我們前面已經(jīng)對它們進(jìn)行設(shè)置過,應(yīng)該不會出現(xiàn)姻采。以及.aar包也不能出現(xiàn)雅采,上面提到過,有的話拿出來,放到Assets/Plugins/Android目錄下婚瓜。如果嚴(yán)格的按照步驟來的話宝鼓,應(yīng)該是不存在的才對。

  • 如果Module中有引用的aar包的話巴刻,也一并復(fù)制到Assets/Plugins/Android目錄下愚铡。

  • 到此為止,就可以進(jìn)行Unity打包了胡陪。這里不在多說沥寥,和正常的發(fā)布流程一致

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市柠座,隨后出現(xiàn)的幾起案子邑雅,更是在濱河造成了極大的恐慌,老刑警劉巖妈经,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淮野,死亡現(xiàn)場離奇詭異,居然都是意外死亡吹泡,警方通過查閱死者的電腦和手機(jī)骤星,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荞胡,“玉大人妈踊,你說我怎么就攤上這事±崞” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵歪泳,是天一觀的道長萝勤。 經(jīng)常有香客問我,道長呐伞,這世上最難降的妖魔是什么敌卓? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮伶氢,結(jié)果婚禮上趟径,老公的妹妹穿的比我還像新娘。我一直安慰自己癣防,他們只是感情好蜗巧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蕾盯,像睡著了一般幕屹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天望拖,我揣著相機(jī)與錄音渺尘,去河邊找鬼。 笑死说敏,一個胖子當(dāng)著我的面吹牛鸥跟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盔沫,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锌雀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了迅诬?” 一聲冷哼從身側(cè)響起腋逆,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侈贷,沒想到半個月后惩歉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俏蛮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年撑蚌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搏屑。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡争涌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辣恋,到底是詐尸還是另有隱情亮垫,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布伟骨,位于F島的核電站饮潦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏携狭。R本人自食惡果不足惜继蜡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逛腿。 院中可真熱鬧稀并,春花似錦、人聲如沸单默。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雕凹。三九已至殴俱,卻和暖如春政冻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背线欲。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工明场, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人李丰。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓苦锨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親趴泌。 傳聞我的和親對象是個殘疾皇子舟舒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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

  • 目錄: Android:Android 0.*Android 1.*Android 2.*Android 3.*A...
    敲代碼的令狐蔥閱讀 3,865評論 0 2
  • @font-face{ font-family:"Times New Roman"; } @font-face{ ...
    niki閱讀 445評論 0 1
  • 0~4個月寶寶的睡眠特點(diǎn)——《嬰幼兒睡眠圣經(jīng)》讀書筆記 這是糕媽的公號推送的第一篇文章。 認(rèn)真看完這篇讀書筆記嗜憔,會...
    會兒永遠(yuǎn)幸福閱讀 276評論 0 0
  • 沒有文化的產(chǎn)品只能賣裸價 沒有文化的公司做不到百年企業(yè) 在一個企業(yè)中秃励,思想與思想的統(tǒng)一叫同心同德,思想與行為的統(tǒng)一...
    徐朋輝閱讀 263評論 1 0
  • 最近在看教養(yǎng)的迷思一書吉捶,特別困惑夺鲜,可以想象兒童發(fā)展心理學(xué)派會做出多么激烈的反擊!看看這三個命題就知道了: 命題1:...
    瀾媽喵喵閱讀 357評論 0 2