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

本文介绍了一种无需修改AndroidManifest.xml即可从Unity调用Android的方法。通过使用AndroidJavaObject类及自定义Gradle任务打包,实现了功能的同时保持了项目的低耦合。

第一次发博客,如果有什么地方不对的,请直接告知,谢谢!
前一段时间有需求要获取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里面的方法,我测试的结果:
结果

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值