AndroidStudio导出jar包与Unity交互开发流程及经验总结

本文主要是介绍AndroidStudio导出jar包与Unity交互开发流程及经验总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AndroidStudio导出jar包与Unity交互开发流程及经验总结

准备工作

Eclipse和AndroidStudio的情况

  先前是用Eclipse做jar导入Unity用,然而Google不再更新ADT插件导致新版本Unity无法继与之配合,因此只好弃用选择AndroidStudio,作为一个从来没碰过该软件的我,硬生生的坑了4夜晚,还是研究到深夜,为此我想分享下我的踩坑奇遇。

![(https://img-blog.csdnimg.cn/20201015225019440.png#pic_center)

PC机BIos设置

vt-x 是虚拟机器支持,必须要进入Bios开启,否则会影响AndroidStudio的正常运行。另外和 Hyper-V 是不能共存的需要去控制面板设置如果没有说明不影响。
在这里插入图片描述
在这里插入图片描述

Android Studio的SDK下载及配置

在这里插入图片描述
在这里插入图片描述

貌似这里无论怎么变更都不能让30.0.0删除,也不知道是不是因为这里造成了后续导出0.0<26.1.1的错误。

环境

软件版本:AndroidStudio3.6 ;Unity019.4.10f1 LTF;  
Gradle版本:Gradle Plugin Version3.6.3 ; Gradle version5.6.4 【最好软件默认】
工程SDK:minSdkVersion 18 ;targetSdkVersion 30 ;buildToolsVersion "30.0.2"

AndroidStudio部分

创建工程

  1. 设置好 名称 、 路径 、 包名
    Android Studio 工程的 Application name 、Company Domain 、Package name 这三个参数可以随意填写,并不需要与正式工程相同。


在这里插入图片描述
在这里插入图片描述
选择 AndroidSDK 最小版本,这个要与unity一直,有些unity版本高的可选的范围可能也略高。

2、创建Library
创建方式有很多种
①方式1:File-> new Module ->选择Android Library
我们只需要一个空白背景,其他美化的基本都在Unity实现。
在这里插入图片描述
在这里插入图片描述
②方式2:File->Project Structure ->Modules ->点击+创建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改ComplisSDKVersion和 ToolsVersion曾经让我误入歧途过,绕了不少路,以后后续很多错误都是受版本影响。

3 Library的参数务必注意!
在这里插入图片描述
①Package name 与正式工程一致。
②Application/Library name 就是就填你要导出的 jar 插件的名称。
③Module name 自动填写就不用管了【选择和Pacage name后缀一样】。
④Minimum SDK 最好和Unity的项目选择一样【注意查看Unity支持的最低版本】;
点击Finish

4、添加Unity classes.jar到AS项目中在这里插入图片描述
①classes.jar文件Paste到 libs 文件夹 ;
UnityLC\版本\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
②右键Add As Library添加到本地依赖;

在这里插入图片描述
在这里插入图片描述

AS工程文件及脚本操作

注意!后面的步骤比较重要,很多别人的方法也会因版本不一样有很大区别!

5、2018及更早版本关于UnityPlayerActivity类的调用大致过程
注意:要想看到Library下面的com.xxx.xxx文件夹,必须在左上角选择Project,否则显示的文件是不太一样的。
在这里插入图片描述
①是在com.XXX.XXX文件下面创建个Activity,并且在里面引入com.unity3d.player.UnityPlayer.UnityPlayerActivity,
② 写代码方能被Unity调用。
在这里插入图片描述
在这里插入图片描述
注意:GenerateLayoutFile不选
UnityPlayerActivity.java软件目录下:
UnityLC\版本\Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player

6、2019版本很多人做法【本人弃用因为没成功,原因我在6内说明】:
将UnityPlayerActivity.java引入工程;
创建一个EmptyActivity继承它;
写入方法。
在这里插入图片描述
在这里插入图片描述

7、2019版本我采用的方法:创建脚本的时候是直接将UnityPlayerActivity赋值到com.XX.XXXX【和Unity工程一直的Library工程内】我们先前创建的。并且重新命名为UnityPlayerMainActivity!因为防止jar包里面的类和unity导出的类UnityPlayerActivity重名。
在这里插入图片描述
8、添加代码从,后续会用Unity来访问该整数1000;
在这里插入图片描述
9、MXL修改,可以从App内的AndroidManifest进行修改,删除红色字体的错误代码,修改包名、activity android:name 、 添加放置闪退代码。
在这里插入图片描述
10、检查Build.gradle 如果第一行不是apply plugin: ‘com.android.library’
就需要进行修改了。
在这里插入图片描述
11、修改Build.gradle,添加打包代码,添加不生成BuildConfig的代码【CSDN网站很多人都采用了导出后手工用解压缩软件打开来删除】
在这里插入图片描述
下面展示一些 内联代码片

//不生成BuildConfig(为了防止unity导出的同包名BuildConfig类的冲突)
afterEvaluate {generateReleaseBuildConfig.enabled = false
}task makeJar(type: Copy) {delete 'build/libs/mylibs.jar'      //下删除老的Jar包//设置拷贝的源文件,记得去找下路径,版本不同路径可能不同from('build/intermediates/aar_main_jar/release/')    //从该地址复制into('build/libs/')         //复制到该地址include('classes.jar')       //包含文件rename ('classes.jar', 'mylibs.jar')  //重命名
}makeJar.dependsOn(build)
// gradlew makeJar 用这个命令行来生成jar包

12、注意from地址要根据版本情况而定,我是通过查找并对比判断地址

 //从该地址复制
from('build/intermediates/aar_main_jar/release/')   

该路径真的是一个最大的坑点,因为AndroidStudio版本不一样,各部相同,我是先尝试导出一次,如果没产生.jar包,就点Build文件夹右键Show InExplorer进入文件夹进行搜索classes.jar

4个文件夹地址及大小,我以小白的眼光分析
Classes.jar文件位置
在这里插入图片描述
所以我的Classes.jar地址是这样得来的!

13、右边Gradle点开,选中我们的Library工程右键Reimport Gradle project
在这里插入图片描述

过程中也出现下面记录也出现过红色字说UnityAnctivty如何如何还带了些特殊符号,最后结果证明对本次导出影响不大;如果一直刷新不出来可能就是网络问题,他需要下载。

在这里插入图片描述
出现这个异常似乎最后也没影响。

Unity部分

14、最后将Mylibs.jar和AndroidManifest.Xml拷贝到Unity工程
在这里插入图片描述
在这里插入图片描述
Mylibs.jar放到Plugins/android/libs下;
AndroidManifest.xml放Plugins/android下。

15、写代码

public class Test : MonoBehaviour
{private int number;private void OnGUI(){if(GUI.Button(new Rect(50,50,550,110),"Test")){AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");number = jo.Call<int>("GetInt");}GUI.Label(new Rect(200, 200, 300, 100), number.ToString());}
}

16、Unity设置
在这里插入图片描述
SDK我用的是之前AndroidStudio下载准备的,并没用有Unity给我们准备的。

17、导出
在这里插入图片描述
18、遇到SDK Tols vERSION0.0<26.1.1,在这里我卡了很久一直未能解决。跳过!!!跳过!!去他NND!!!UseHighest Installed因为我见到有人这么干了!
在这里插入图片描述

19测试!【成功!】
在这里插入图片描述
在这里插入图片描述

遇到的问题

错误1:报错SDK Tools ersion0.0<26.1.1

有人说要降低AndroidStudio的gradle pluginversion版本;可是换成unity 2019.3.15f1缺不报这个错误,而是另外一个错误,虽然gradle 的错误也是应该存在的,但是这是SDK Tools自身版本和Unity的不匹配。
后来我直接无视,有的人说要用官方SDK。
https://blog.csdn.net/qq_39860954/article/details/107425900

又尝试删除了gluba的版本6.1
似乎解决了?:我用2019版本来打包发布同样的一个jar包,缺不报0.0.0<26.1.1的错误!是因为unity版本高对tools不兼容?

错误2:gradle版本我们要注意?

最终还是逃不开重新安装和别人的案例一样的版本来重新尝试
1、AndroidStuodi3.6 +unity2019.3.15f1; Gradle 打算下载3.4

问题3:

The attribute application@icon=@mipmap/app_icon in: unityLibrary collides with another value (she the console for details) ,感觉这个问题依旧是
这个应该就是xml的问题!!

问题4:

Resource ‘style/Apptheme’ not found in androidManifest.Xml:31(See the console for details)

问题5:XmlException: Name cannot begin with the ‘<’ character, hexadecimal value 0x3C. Line 11, position 5. ;

解决:XML缺少尖括号>;

XML说明:android:label="@string/app_name" 这个应该是程序的名称;会顶替Unity设置

问题6:出现闪退缺少!

XML添加

问题7:new Module为灰色,且下方一直处于Gradle sync started;

解决方案1:【似乎没软用】

把android studio先关掉。
打开.gradle/wrapper/dists目录,找到distributionUrl所指定的那个版本号文件夹。
1)从网上下载https://services.gradle.org/distributions/相应的 gradle-4.4-all.zip,放到文件夹里,并解压
2)把.part删除掉
3)创建 gradle-4.4-all.zip.ok (很关键!!!)
4)启动android studio,正常sync

三级目录解决方案2:办法:修改仓库;修改文件: build.gradle【阿里仓库】

// 注释jcenter()仓库 并添加下面maven 使用阿里云仓库:)
// jcenter() 【本段代码本来没注释】
maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public’}
在这里插入图片描述

错误7:ERROR: Failed to open zip file.好像是下载不下来

在这里插入图片描述
据说吧https改为http就可以然而并没什么卵用。

这篇关于AndroidStudio导出jar包与Unity交互开发流程及经验总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/244977

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、