android studio jar包 c#调用。

step  1. adnroid studio 新建工程project,一直next就行了,这期间的命名都用不上,

2.新建模块module。选 android library, 包名最好跟 unity包名一致。不一致也没关系。

3.导入unity 的 classes.jar,路径在unity安装路径里面搜索。release里面有两个mono  il2cpp都可以   直接拖进去lib就行。然后在工程设置里面找到自己的模块,依赖dependencies,删除用不到的库,添加刚刚导入的jar  ok

4.xxxmodule/src/main/java 下会有三个文件夹。如果第二步包名不一致,那么这三个全删了,  然后新建一个package,这个时候包名就要跟unity包名一致了。否则就只留下跟包名一致的文件夹。

5.在包名下新建java文件。myactivity。import com.unity3d.player.UnityPlayerActivity。继承他 。开始写各种代码。写完..

6.打包配置。

a.点右边gradle编译,然后目录 build   rebuild,会生成 output/aar  然后解压生成的aar,把里面最外那个classes.jar拿出来重命名就可以在unity里面使用了。

b.在模块的 build.gradle文件中 最后面加 如下。

//task to delete the old jar
task deleteOldJar(type: Delete) {
    delete 'release/AndroidPlugin.jar'
}

//task to export contents as jar
task exportJar(type: Copy) {
    from('build/intermediates/bundles/release/')
    into('release/')
    include('classes.jar')
    ///Rename the jar
    rename('classes.jar', 'AndroidPlugin.jar')
}

exportJar.dependsOn(deleteOldJar, build)
然后在右边的 gradle/xxxmodule/tasks/other 里面找到刚刚添加的exportJar  双击,也会生成 指定的jar
7.jar可以直接使用,在unity那边还需要配置一些manifest。

a.manifest里面的包名 要跟项目包名一致。

b.找到 android.intent.action.MAIN。。没有就加。他应该在activity标签之间。这个activity就是unity的在安卓层面的主activity。他的名字 android:name 必须 跟 jar包里面继承了UnityPlayerActivity 的文件的路径一致,才能调到那边的  oncreate!!

8.C#调用 ,就是这一套

jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic("currentActivity");
jo 就是在java那边写的  类的对象了,可以  jo.call来完成  c#调 jar包函数。

你可能感兴趣的:(随笔)