Unity+AndroidStudio:学习:三:(第2次操作:失败).arr文件如何导入到Unity3D中+交互
目录
一.目的
1.1 想知道:.arr文件如何导入到Unity3D中
二.参考
2.1Unity+AndroidStudio:学习:二:(第2次操作:成功)AndroidStudio如何产生.arr文件+交互
- 总结:good:我自己写的,亲测有效的
2.1Unity与Android交互方案优化版
- Demo下载下来了,运行了是正常的。
- 更新后的版本 VS2019+unity2019.4.9f1
2.1.Unity 调用Android arr包(互相调用并传值)
- 待检测
2.2.Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)
- 待检测
三.操作:1:失败
3.1 版本
- .aar是公司安卓工程师给我的,所以我导入到U3D
- unity2019.4.9f1
3.1 新建U3D工程
- 名字改为 :unityblelibrary ;
3.1 .aar导入U3D
.aar导入U3D的\Assets\Plugins\Android\
3.1 Unity设置
- 包名、最低版本 和AndroidManifest.xml 保持一致。
3.1 运行结果:导入.aar后直接打包APK:报错:
3.1 解决报错:已解决
- 删除.aar里面的classes.jar
- 由于Unity在打包APK时会自动包含自身的classes.jar,所以需使用压缩软件打开*.aar文件删除libs目录下的classes.jar文件
3.1.1 运行结果:打包成功
3.1 Unity调用AS中的代码
新建代码UnityAndAndroid 然后挂在Main Camera
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UnityAndAndroid : MonoBehaviour
{
/// <summary>Text:显示安卓发送来的消息</summary>
public Text text_showAndroid;
/// <summary>Button:btn_initBle </summary>
public Button btn_initBle;
/// <summary>Button:btn_startBle</summary>
public Button btn_startBle;
/// <summary>Button:btn_stopBle</summary>
public Button btn_stopBle;
/// <summary>
/// android原生代码对象
/// </summary>
///
private AndroidJavaClass javaClass = null;
private AndroidJavaObject javaObject = null;
// Start is called before the first frame update
void Start()
{
测试:1:失败
//AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
//AndroidJavaObject javaObject = javaClass.GetStatic<AndroidJavaObject>("currentActivity");
测试:2:失败:安装到手机报错:Caused by: java.lang.ClassNotFoundException: Didn't find class "com.zhhd.unityblelibrary.UnityBleActivity"
通过该API来实例化导入的arr中对应的类
//javaObject = new AndroidJavaObject("com.zhhd.unityblelibrary.UnityBleActivity");
测试:3:失败:adb报错 java.lang.NoSuchFieldError: no "Ljava/lang/Object;" field "UnityBleActivity" in class "Lcom/unity3d/player/UnityPlayer;" or its superclasses
//AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
//AndroidJavaObject javaObject = javaClass.GetStatic<AndroidJavaObject>("UnityBleActivity");
测试:4:失败:
// javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
// javaObject = javaClass.GetStatic<AndroidJavaObject>("currentActivity");
//测试:5:失败:报错: E/Unity: Null