android打aar给unity使用
文章目录效果方式一android端1、新建library库2、复制jar包3、android项目中引用jar包4、新建activity类继承UnityPlayerActivity5、修改库的清单文件AndroidManifest.xml6、打aar包Unity端1、新建文件夹,引入aar包2、引入清单文件注意13、修改unity的包名4、 打包方式二android端1、新建library库2、写方
·
文章目录
效果
方式一
android端
1、新建library库
2、复制jar包
把unity的安装目录下面的class.jar包给复制出来,具体目录如下
注意
这里分 il2cpp 和 mono 两个,这个取决于你后面unity要使用那个方式打包,我这里使用的是il2cpp里面的jar包
3、android项目中引用jar包
以compileOnly 的方式引用
dependencies {
compileOnly files('libs/unity-classes.jar')
}
4、新建activity类继承UnityPlayerActivity
import com.unity3d.player.UnityPlayerActivity;
public class TestActivity extends UnityPlayerActivity {
// 自定义方法,供unity调用
public String getPath() {
return Environment.getExternalStorageDirectory().getAbsolutePath();
}
}
5、修改库的清单文件AndroidManifest.xml
我这里就是直接把app的清单文件直接复制过来,然后删除报错的代码,然后把新建的activity给引进来就可以了
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.testlib">
<application
android:allowBackup="true"
android:supportsRtl="true">
<activity
android:name=".TestActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
6、打aar包
请参考android使用maven-publish打jar包和aar包并上传到本地maven仓库 这篇文章
Unity端
1、新建文件夹,引入aar包
2、引入清单文件
注意1
在这里要注意复制出来的清单文件和aar包里面清单文件的不同之处
- 包名不同,unity的清单文件里面的包名要和一会后面设置的包名保持一致,但是不能和aar里面的包名一样
- 新增app_name在unity的清单文件的application标签上新增label
- 删除启动项,unity的清单文件里删除启动项,因为aar的包里已经有了,所以删除
3、写方法调用
public void test1() {
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
string str = jo.Call<string>("getPath");
Text.text = "方式一:" + str;
}
4、修改unity的包名
5、 打包
方式二
android端
1、新建library库
2、写方法
public class Utils {
// 该方法供unity调用
public int add(int a, int b) {
return a + b;
}
}
3、打aar包
步骤同方法一
Unity端
1、引入aar包
2、写代码引用
public void test2()
{
// 通过包名+类名来获取
AndroidJavaObject jo = new AndroidJavaObject("com.test.testlib.Utils");
int str = jo.Call<int>("add",2,3);
Text.text = "2 + 3 = " + str;
}
剩下其余的步骤跟 方法一 相同,这里不需要引用清单文件
参考文献
更多推荐
已为社区贡献2条内容
所有评论(0)