Android Studio如何导出可供Unity使用的aar插件详解
前言
项目之前使用Eclipse导出的jar文件来做与Android交互,最近因为工作需要需使用Android Studio的aar文件,网上参考了部分文章,也结合自己的理解重新整理一下具体的方法,通过写一个测试Demo来表述Android Studio创建aar的过程与及Unity如何使用aar文件,希望对刚好有这个需求的人能起到部分帮助与引导,同时如果文中有误希望也能不吝赐教。
版本信息
Unity 5.3.1f1,
Android Studio 2.2.3
Android Studio导出可供Unity使用的aar插件
一、 创建Android Studio工程
二、添加Unity的classes.jar引用
1)把Unity引擎目录下中的”Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar“文件拷贝至Android Studio工程中的libs目录
2)右击"Project"视图,打开"Open Module Settings", 添加“classes.jar”依赖
三、编写Android侧代码(修改MainActivity代码)
import android.os.Bundle; import android.widget.Toast; import com.unity3d.player.UnityPlayer; 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();}});}// 返回一个字符串(静态方法)public static String GetInformation(){return "This is a Plugin's content!";} }
四、修改build.gradle,设置工程导出为aar
2)删除 applicationId "com.zcode.unityandroidplugindemo"
3)修改后的build.gradle为
apply plugin: 'com.android.library'android {compileSdkVersion 24buildToolsVersion "24.0.1"defaultConfig {minSdkVersion 18targetSdkVersion 24versionCode 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:24.1.1'testCompile 'junit:junit:4.12'compile files('libs/classes.jar') }
五、修改AndroidManifest.xml
六、导出供Unity使用的*.aar文件
1)点击“Build -> Build APK”,生成aar文件
2)由于Unity在打包APK时会自动包含自身的classes.jar,所以需使用压缩软件打开aar文件删除libs目录下的classes.jar文件
Unity导入插件,并调用
一、创建Unity工程
二、导入插件到Unity工程中
三、编写测试代码
1)新建一个“Call.cs”的脚本文件
2)在“Call.cs”脚本中编写调用Android侧代码
using UnityEngine; using System.Collections;public class Call : MonoBehaviour {string information_ = null;void OnGUI() {//调用显示一个文本为“Hello World!”的Toestif(GUI.Button(new Rect(0, 0, 200, 20), "Show Toest - Hello World!")) {//Unity侧调用Android侧代码using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")) {//调用成员方法jo.Call("ShowToast", "Hello World!");}}}//获得插件侧的返回字符串if (GUI.Button(new Rect(0, 40, 200, 20), "Get Plugin's Information")) {//Unity侧调用Android侧代码using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")) {//调用静态方法information_ = jo.CallStatic<string>("GetInformation");}}}//显示返回的字符串GUI.Label(new Rect(220, 40, Screen.width - 220, 20), information_);} }
四、导出APK
五、测试
Demo地址
http://pan.baidu.com/s/1dFxc7JF
结尾
Android侧调用Unity侧的方式在此就不多做赘述,网上相关的文章也很多。
Android插件工程中使用第三方的aar库中遇到的Bug解决方案
1.需手动拷贝至Unity项目Plugin/Android目录下,不然会找不到该库引起NoClassDefFoundError的错误,导致项目真机引起宕机(PS:Unity打包APk时并不会检查Android插件中是否完整包含其它aar库)
2.确定所有的aar库中的android:minSdkVerion与android:targetSdkVersion一致
转载于:https://www.cnblogs.com/xtqqkss/p/6387271.html
Android Studio如何导出可供Unity使用的aar插件详解相关推荐
- 如何导出android studio程序,Android Studio 如何导出 Jar 给 Unity 使用
大致步骤如下:1.创建新的 Android Studio 工程2.为此 Android Studio 工程创建 Android Library 类库(也就是一个 Module)(后面就是用它生成 ja ...
- android 方向控制界面,Android Studio屏幕方向以及UI界面状态的保存代码详解
项目:orientation package com.example.orientation; import android.os.bundle; import android.util.log; i ...
- android studio table居中代码_五个方法实例代码详解教你在CSS中实现垂直居中
点击上面"蓝字"关注我们 你是否和小编一样在编辑一个版面时,通常用到水平居中和垂直居中,而水平居中很好处理,不外乎就是设定margin:0 auto;或是text-align:ce ...
- Android Studio 如何导出和导入自己的常用设置,避免重复制造轮子。加快开发速度...
Android Studio 如何导出和导入自己的常用设置,避免重复制造轮子.加快开发速度 作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 在使用 A ...
- Android Studio下导出jar包和aar包
Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...
- Android Studio(3.6.2版本)安装 java2smali 插件,java2smali 插件的使用方法简述
Android Studio(3.6.2版本)安装 java2smali 插件,java2smali 插件的使用方法简述 一.Android Studio(3.6.2版本)安装 java2smali ...
- Android Studio(3.6.2版本)不使用插件查看smali代码的方法
Android Studio(3.6.2版本)不使用插件查看smali代码的方法 1.app->build->outputs->apk->debug->app-debug ...
- 《Unity 3D 游戏开发技术详解与典型案例》——1.1节Unity 3D基础知识概览
本节书摘来自异步社区<Unity 3D 游戏开发技术详解与典型案例>一书中的第1章,第1.1节Unity 3D基础知识概览,作者 吴亚峰 , 于复兴,更多章节内容可以访问云栖社区" ...
- 《Unity 4 3D开发实战详解》一6.7 物理引擎综合案例
本节书摘来异步社区<Unity 4 3D开发实战详解>一书中的第6章,第6.7节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区" ...
最新文章
- 基础才是重中之重~何为原子化操作
- 如何在Python 3中使用raw_input
- 前端如何获取联通积分_怎么利用定制的小程序来获取流量
- EasyUI DateTimeBox设置默认时间的注意点
- php接收16进制数据,PHP_PHP 通过Socket收发十六进制数据的实现代码,最近在php下做关于Socket通讯的 - phpStudy...
- 借用构造函数 组合继承 拷贝继承 总结继承
- vsftpd服务的搭建
- 两种解除禁止右键、选中、复制的方法
- 飞鸽传书下载2013
- 【hortonworks/registries】Parameter Schema name is null
- pap认证过程_PPP协议当中LCP协商过程详解和PAP认证原理介绍
- RHCE课程-RH033Linux基础笔记五之常用文本处理命令、输入输出重定向、管道
- L1-055 谁是赢家-PAT团体程序设计天梯赛GPLT
- typescript 怎么表示当前时间减一个月_吃什么减肚子最快最有效 4种刮油食物吃出小蛮腰...
- java基本类型有缓冲区类型的有_Java基础(三十四)String、StringBuffer类和数据缓冲区Buffer类...
- python3-基础8
- 达州铭仁园2021年高考成绩查询,2021年达州铭仁园中学升学率高不高?
- Adobe完全卸载工具
- Git初学(5)--关联远程库
- mac关于 E45: ‘readonly‘ option is set (add ! to override)