android Studio打Jar包到Unity使用 不继承,不改动AndroidManifest

第一次发博客,如果有什么地方不对的,请直接告知,谢谢!
前一段时间有需求要获取android的一些信息,所以去尝试了一下,发现网上的很多教程都需要去继承UnityPlayerActivity 这个东西,还需要在unity里面去添加AndroidManifest,并且还要改动AndroidManifest,这样做感觉不太符合程序设计的低耦合,毕竟每一次用都需要去调整一下AndroidManifest,实在太过繁琐,所以去网上看了一下别的方法并且找了一下unity的api,发现API里面的AndroidJavaObject这个类,其实功能很强大的。所以在借鉴网上的一些方法之后尝试了一种新的方法进行打包,打出来的包同样也能调用,并且不需要另外在unity里面添加AndroidManifest.xml(如果项目里面没有这个文件,unity打包的时候会自动生成)
下面给大家介绍一下:
1.准备工作,这里使用的是Studio2.3.3和unity5.5.3
找到unity的classes.jar文件,目录为(mono)
E:\Unity 3D\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes
把这个文件拷贝一份放一个位置,等会会用到
2.开始android端,接下来为了更直观的看到效果,我会用大量的图片代替文字描述,
这里写图片描述

1

2
3
4
5
6
7这里写图片描述
这里写图片描述
这里写图片描述
9
10这里写图片描述
这里写图片描述
这里写图片描述
13这里写图片描述
这里写图片描述
这里写图片描述
16这里写图片描述
这里写图片描述这里写图片描述
19

//需要自己添加的
//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/default/')
    into('release/')
    include('classes.jar')
    ///Rename the jar
    rename('classes.jar', 'AndroidPlugin.jar')
}

exportJar.dependsOn(deleteOldJar, build)

21
22
23
24

3.接下来就是unity这边的工作了
25
26
27
28

4.测试
如果能输出结果则说明调用成功,我已经把其他帖子的内容总结的很少了,主要注意的几个地方就是 c#里面的androidJavaObject里面的参数别写除了,c#用call调用jar里面的方法,我测试的结果:
结果

如果有哪里不对的,或者更好更简洁的办法,请直接告知作者,谢谢,欢迎大佬指点

猜你喜欢

转载自blog.csdn.net/qq_37574876/article/details/79086216