日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

AndroidStudio3.4+Unity2018.3,导出JAR包给UNITY使用

發(fā)布時(shí)間:2025/3/18 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AndroidStudio3.4+Unity2018.3,导出JAR包给UNITY使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

AndroidStudio3.4+Unity2018.3,導(dǎo)出JAR包給UNITY使用

環(huán)境 Android studio 3.4 + unity2018.3

1,android studio 新建空工程,一切默認(rèn),完成。
這個(gè)空工程只是個(gè)殼,它的所有參數(shù)都沒什么用,它存在的意義是為了后面能創(chuàng)建 module。
因?yàn)镴AVA不像C++,可以直接創(chuàng)建類庫(kù)。
2,新建模塊
file->new module->android library
application name 和 module name 都不重要,沒有實(shí)際用處(這里取名mylibrary),重要的是包名: package name。
這里取名為 com.x.y
包名用到哪些地方?
(1,AndroidManifest.xml里的 package
(2,每個(gè)java文件的開始處,形如 package com.x.y,表示此java文件被放入了工程的com/x/y目錄下
(3,unity 的build Settings里的 package name

這三處必須使用同一個(gè)包名,如果不一致則啟動(dòng)時(shí)閃退。如果想修改包名,就要修改這三處就行了。

3,在mylibrary模塊下的src/java/com.x.y/添加java文件,隨便取名,就叫MainActivity吧
修改其源碼如下:

?

package com.x.y;import android.content.Intent; import com.unity3d.player.UnityPlayerActivity; import android.app.Activity; import android.os.Bundle;public class MainActivity extends UnityPlayerActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);activity = this;}//public static MainActivity activity;public static MainActivity activity;public int Calc(int x, int y){return x + y;}public static float Calcf(float x, float y){return x + y;}public void restartApplication() {new Thread(){public void run(){Intent launch=getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());launch.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(launch);android.os.Process.killProcess(android.os.Process.myPid());}}.start();finish();} }

?

這個(gè)類的目的:
(1,測(cè)試普通成員函數(shù)和靜態(tài)函數(shù)的調(diào)用
(2,測(cè)試重啟功能

4,修改mylibary模塊的AndroidManifest.xml,這一步放在最后也行,此文件是拿給UNITY用的,內(nèi)容如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.x.y"><application android:allowBackup="true" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application></manifest>

?

注意一定要有下面兩行
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
學(xué)過(guò)安卓開發(fā)的都知道這是標(biāo)記此活動(dòng)是主活動(dòng),沒有主活動(dòng)的應(yīng)用是不會(huì)被運(yùn)行的。
默認(rèn)情況下UNITY會(huì)創(chuàng)建自己AndroidManifest.xml,一旦我們?cè)贏ssets/Plugins/Android/下放置了我們自定的AndroidManifest.xml,
UNITY就以我們的配置為主,并將buildsettings里的相關(guān)配置合并進(jìn)來(lái),如安裝位置,持久化路徑等。
因此,如果我們生成了自己的AndroidManifest.xml,卻又不配置為主活動(dòng),安裝后桌面沒有圖標(biāo),因?yàn)樗皇且粋€(gè)可執(zhí)行程序

5,修改mylibrary模塊的 build.gradle(注意不是修改工程的),為編譯做準(zhǔn)備,在末尾添加:

task exportJar(type: Copy) { //必須先刪除舊的包,否則新包不會(huì)生成,這個(gè)目錄對(duì)應(yīng)mylibrary/build/libs/AndroidUtils.jar delete 'build/libs/AndroidUtils.jar'//生成的目錄在這里 from('build/intermediates/packaged-classes/release/')//生成build/libs目錄,并將build/intermediates/packaged-classes/release/下的classes.jar復(fù)制到此目錄 into('build/libs/')//指定我們只在build/intermediates/packaged-classes/release/下尋找classes.jar(放入到build/libs/目錄 include('classes.jar')//重命名下,起個(gè)個(gè)性的名字,不要與別人混淆 rename('classes.jar', 'AndroidUtils.jar') }//這里會(huì)觸發(fā)真正對(duì)mylibaray的編譯 exportJar.dependsOn(build)

?

然后點(diǎn)擊工具欄上的 run anything: ,或雙擊ctrl,在彈出的輸入窗口中輸入 gradlew exprotJar,回車,等待編譯完成。
如果沒問(wèn)題,會(huì)提示 BUILD SUCCESSFUL
如果出了錯(cuò),仔細(xì)看前面的輸出LOG。

這里的注意點(diǎn):
(1,from('build/intermediates/packaged-classes/release/') 這里的路徑在不同版本的 Android Studio中不同。
在低版本的AS中路徑為 build/intermediates/bundles/release
如果編譯中報(bào)錯(cuò) exportJar: NO-SOURCE,就說(shuō)明是此路徑錯(cuò)誤了,這時(shí)就去磁盤上的build/intermediates/目錄搜索classes.jar文件,
找到它的路徑,寫入到from里就對(duì)了。

6,生成完成后,得到我們的AndroidUtils.jar包,新建UNITY工程,package name取名:com.x.y

在Assets下新建如下目錄 Plugins/Android,然后將AndroidManifest.xml放入到此目錄下,然后在創(chuàng)建 Plugins/Android/libs目錄,
將AndroidUtils.jar放入此目錄。
注意這里的目錄結(jié)構(gòu)要求:AndroidManifest.xml必須與libs同目錄,AndroidUtils.jar必須在libs目錄中,名字不能錯(cuò)。
但libs和XML不一定直接在Android下,可以是多層目錄下,如:Android/abc/libs也可以

7,添加腳本,隨便掛在什么上,如相機(jī)上,測(cè)試代碼如下:

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class calljava : MonoBehaviour {AndroidJavaObject jo;Text info;void Start(){//方式一,使用基類,這種比較通用var jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");jo = jc.GetStatic<AndroidJavaObject>("currentActivity");info = GameObject.Find("TextInfo").GetComponent<Text>();info.text += "start \n";//方式二,使用具體類,不通用,當(dāng)類名改了就要改這里的字符串//var jc = new AndroidJavaClass("com.example.mylibraryx.MainActivity");//jo = jc.GetStatic<AndroidJavaObject>("activity"); info.text += "get java object " + (jo == null ? "null\n" : "ok\n");//var btn = GetComponent<Button>();//btn.onClick.AddListener(() =>//{if (jo != null){//注意1,參數(shù)類型必須傳對(duì),否則運(yùn)行到這里就出錯(cuò)了var ret = jo.Call<int>("Calc", 10, 20);info.text += "call ret : " + ret + " \n";//調(diào)用靜態(tài)函數(shù)var retf = jo.CallStatic<float>("Calcf", (float)10.2, (float)20.2);info.text += "call retf : " + retf + " \n";//注意2,由于Calcf是個(gè)靜態(tài)函數(shù),非靜態(tài)調(diào)用會(huì)造成參數(shù)錯(cuò)位,結(jié)果為retfx = 10.2var retfx = jo.Call<float>("Calcf", (float)10.2, (float)20.2);info.text += "call retfx : " + retfx + " \n";}//}); }// Update is called once per framevoid Update(){} }

?

8,打包APK,到安卓上運(yùn)行。在UNITY上運(yùn)行會(huì)出錯(cuò),提示jo為空.

?

posted on 2019-06-04 18:01 時(shí)空觀察者9號(hào) 閱讀(...) 評(píng)論(...) 編輯 收藏

總結(jié)

以上是生活随笔為你收集整理的AndroidStudio3.4+Unity2018.3,导出JAR包给UNITY使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇高潮大叫好爽喷水 | 欧美国产成人精品一区二区三区 | 污污视频在线播放 | 男人的天堂av网站 | 激情黄色av | 亚洲午夜久久 | 性视频网址 | 超碰免费公开在线 | 久久中文免费视频 | 97久久人人超碰caoprom欧美 | 日韩区欧美区 | 国产污污视频 | 欧美日韩视频一区二区 | 伊人久久爱 | 国产一区二区在线精品 | 波多野结衣www | 欧美三级又粗又硬 | 亚洲激情综合网 | 老熟妻内射精品一区 | 国产小视频网址 | 香港三级日本三级 | 淫欲少妇 | 欧美激情一二区 | 欧美日韩一二三四区 | 看久久 | 成人毛片网站 | 精品1卡二卡三卡四卡老狼 日韩三级网 | 国产精品swag | www.天天操.com | 69国产精品视频免费观看 | 亚洲av无码精品色午夜果冻不卡 | 老司机久久精品视频 | 人人草人人看 | 中文字幕天堂av | 国产精品99无码一区二区 | 91免费国产在线 | 天天国产视频 | 一级黄色在线观看 | 97se综合| 欧美电影一区二区三区 | 国产一级二级在线观看 | 久久久久99精品成人片试看 | 国产精品久久999 | 91原创视频在线观看 | 在线观看视频99 | 色老头在线观看 | 91色交视频 | 日本精品一区二区三区四区的功能 | 黄色小视频在线免费看 | 国产不卡av在线播放 | 国产最新在线视频 | 丝袜国产在线 | 美女的胸给男人玩视频 | 国产高清精品一区 | av在线天天 | 一个色综合网站 | 成人va在线观看 | 欧美精品在线观看 | 国产精品免费无遮挡无码永久视频 | 欧美 日本 国产 | 青青草国产在线播放 | 肉肉av福利一精品导航 | 免费在线色 | 久草视频免费在线播放 | 久久久久亚洲av成人无码电影 | 精品无码人妻一区二区免费蜜桃 | 欧美一区二区在线观看 | 国产精品一区二区三区在线播放 | 91精品久久久久久久久中文字幕 | 欧美日韩国产成人精品 | 精品欧美| 一级久久久 | 五月婷婷激情综合网 | 91黄色免费网站 | 日日干夜夜操 | 91久久久久久久久 | 国产黄av| 色永久 | 激情国产在线 | 肉丝袜脚交视频一区二区 | 黄色大片免费在线观看 | 国产午夜不卡 | 国产精品视频在线观看免费 | 无码国产伦一区二区三区视频 | 欧美一级免费 | 一级特黄aaa | 天天综合亚洲 | 久久高潮视频 | 干夜夜| 国产字幕在线观看 | 好色先生视频污 | 欧美国产精品一二三 | 欧美成人不卡视频 | 三级在线观看 | 奇米四色在线观看 | 国产精品五区 | 黄色特级大片 | 天堂8av| 激情文学88 |