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

相关文章

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

springboot将lib和jar分离的操作方法

《springboot将lib和jar分离的操作方法》本文介绍了如何通过优化pom.xml配置来减小SpringBoot项目的jar包大小,主要通过使用spring-boot-maven-plugin... 遇到一个问题,就是每次maven package或者maven install后target中的ja

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进