AndroidStudio导出aar文件给Unity使用
AndroidStudio導(dǎo)出aar文件給Unity使用
本文參考 :http://www.devacg.com/?post=548
Demo地址:https://github.com/JulyNine/AndroidToUnity
一、用Android Studio創(chuàng)建個空工程 注意:包名要與Unity中工程的包名不一致,不然打包時會報錯multi dex
二、把classes.jar拷到libs下
C:\Soft\UnityHub\2019.2.0f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar(自己Unity安裝路徑)
拷到
C:\Users\July\AndroidStudioProjects\Fakemiss\app\libs\classes.jar(新建的android工程路徑)
注意:以上是我的安裝目錄和工程目錄。
三、把classes.jar添加進Dependencies
四、刪除res下多余的資源(重要,不然打包的時候會報錯:link resource error)
刪除layout文件夾 以及values文件夾下的style.xml
五、修改build.gradle文件才能生成aar
修改后的文件
//apply plugin: 'com.android.application' apply plugin: 'com.android.library'android {compileSdkVersion 25buildToolsVersion "25.0.2"defaultConfig {//applicationId "com.zwwx.game.gamesupport"minSdkVersion 15targetSdkVersion 25versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}} }dependencies {compile fileTree(include: ['*.jar'], dir: 'libs')androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})compile 'com.android.support:appcompat-v7:25.3.1'compile 'com.android.support.constraint:constraint-layout:1.0.2'testCompile 'junit:junit:4.12'compile files('libs/classes.jar') }六、修改AndroidManifest.xml
修改后的文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.zwwx.game.gamesupport"><uses-permission android:name="android.permission.INTERNET"></uses-permission><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@android:style/Theme.NoTitleBar"><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" /></activity></application> </manifest>?
七、修改MainActivity.java
package com.zwwx.game.gamesupport;import android.os.Bundle; import android.widget.Toast; import com.unity3d.player.UnityPlayerActivity;public class MainActivity extends UnityPlayerActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}// 顯示Toast消息public void ShowToast(final String message){runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();}});} }?八、生成arr
九、刪除arr文件libs下的classes.jar(特別注意別刪錯了,是libs文件夾下的classes.jar,不是根目錄下的)
十、把aar和AS工程中的AndroidManifest.xml拷到Unity工程下
十一、創(chuàng)建test.cs
using UnityEngine; public class Test : MonoBehaviour {void OnGUI(){if (GUI.Button(new Rect(200, 200, 200, 100), "Show Toest - Hello World!")){AndroidHelper.Call("ShowToast", "Hello World!");}} }十二、設(shè)置好Player Settings,然后打包測試
十三、最后贈送一個Unity中調(diào)用java方法的輔助工具類
using System.Collections; using System; using System.Collections.Generic; using UnityEngine; /// <summary> /// 與Android交互的輔助類 /// </summary> public class AndroidHelper {#if UNITY_ANDROID && !UNITY_EDITOR#region 獲得主活動類public static AndroidJavaClass MainActivity{get{try{AndroidJavaClass player = new AndroidJavaClass("com.unity3d.player.UnityPlayer");return player;}catch (Exception){return null;}}}#endregion#region 獲得當(dāng)前Android活動public static AndroidJavaObject currentActivity{get {try{AndroidJavaObject context = MainActivity.GetStatic<AndroidJavaObject>("currentActivity");return context;}catch (Exception){return null;}}}#endregion#region 獲得Java類public static AndroidJavaClass JavaClass(string className){try{AndroidJavaClass java_class = new AndroidJavaClass(className);return java_class;}catch (Exception){return null;}}#endregion#region 獲得Java對象public static AndroidJavaObject JavaObject(string className, params object[] args){try{AndroidJavaObject java_object = new AndroidJavaObject(className, args);return java_object;}catch (Exception){return null;}}#endregion#endif#region 調(diào)用Java類的實例方法public static void Call(string methodName, params object[] args){#if UNITY_ANDROID && !UNITY_EDITORcurrentActivity.Call(methodName, args);#endif}public static T Call<T>(string methodName, params object[] args){#if UNITY_ANDROID && !UNITY_EDITORreturn currentActivity.Call<T>(methodName, args);#endifreturn default(T);}public static void CallClass(string className, string methodName, params object[] args){#if UNITY_ANDROID && !UNITY_EDITORAndroidJavaObject java_object = JavaObject(className);java_object.Call(methodName, args);#endif}public static T CallClass<T>(string className, string methodName, params object[] args){#if UNITY_ANDROID && !UNITY_EDITORAndroidJavaObject java_object = JavaObject(className);return java_object.Call<T>(methodName, args);#endifreturn default(T);}#endregion#region 調(diào)用Java類的靜態(tài)方法public static void CallStatic(string methodName, params object[] args){#if UNITY_ANDROID && !UNITY_EDITORMainActivity.CallStatic(methodName, args);#endif}public static T CallStatic<T>(string methodName, params object[] args){#if UNITY_ANDROID && !UNITY_EDITORreturn MainActivity.CallStatic<T>(methodName, args);#endifreturn default(T);}public static void CallClassStatic(string className, string methodName, params object[] args){#if UNITY_ANDROID && !UNITY_EDITORAndroidJavaClass java_class = JavaClass(className);java_class.CallStatic(methodName, args);#endif}public static T CallClassStatic<T>(string className, string methodName, params object[] args){#if UNITY_ANDROID && !UNITY_EDITORAndroidJavaClass java_class = JavaClass(className);return java_class.CallStatic<T>(methodName, args);#endifreturn default(T);}#endregion }?
總結(jié)
以上是生活随笔為你收集整理的AndroidStudio导出aar文件给Unity使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 六大国有银行网银跨行转账多久到账?各银行
- 下一篇: 招商银行信用卡支付宝还款多久到账?怎么查