Unity+AndroidStudio:学习:三:(第3次操作:成功).arr文件如何导入到Unity3D中+交互
目录
一.目的
1.1 想知道:.arr文件如何导入到Unity3D中+交互
二.参考
2.1Unity+AndroidStudio:学习:二:(第2次操作:成功)AndroidStudio如何产生.arr文件+交互
- 总结:good:我自己写的,亲测有效的
2.1Unity使用aar打出apk过程一览
- 待检测
- 了解了如果这样报错就是因为Unity项目的包名和.aar的AndroidManifest.xml包名一致导致。
- .aar包中的AndroidManifest.xml清单文件复制*Plugins \ Android\*文件夹下,同时将此清单文件中的包名改为Unity打包的PlayerSetting中设置的一样(aar中清单文件与本文件夹下清单文件包名必须不同,且除包名外的其它部分必须一致,否则会遇到问题)
三.操作:1:成功
3.1 Demo下载地址
3.1 版本
- unity2019.4.9f1
- VS2019
3.1 新建u3d工程:BlueTooth
3.1 导入.aar
需要将文件放在指定位置(规定的): Plugins \ Android
3.1 查看一下AndroidStudo里面Unity主要调用的代码
callUnity是找到Unity中名字叫做Main Camera物体,调用它身上的FromAndroid函数,并且传送args“初始化成功”参数给这个FromAndroid函数
3.1 导入AndroidManifest.xml 到Unity中
.aar包中的AndroidManifest.xml清单文件复制*Plugins \ Android\*文件夹下,同时将此清单文件中的包名改为Unity打包的PlayerSetting中设置的一样(aar中清单文件与本文件夹下清单文件包名必须不同,且除包名外的其它部分必须一致,否则会遇到问题)
将.aar文件变为.rar或者.zip文件,然后解压出来,将AndroidManifest.xml 文件拷贝出来,然后对其修改
原本的内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zhhd.unityblelibrary" >
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- If your app targets Android 9 or lower, you can declare ACCESS_COARSE_LOCATION instead. -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="true" />
<application>
<activity android:name="com.zhhd.unityblelibrary.UnityBleActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="unityplayer.UnityActivity"
android:value="true" />
</activity>
<!-- <receiver -->
<!-- android:name=".BootBroadcastReceiver" -->
<!-- android:enabled="true" -->
<!-- android:exported="true"> -->
<!-- <intent-filter> -->
<!-- <action android:name="android.intent.action.BOOT_COMPLETED" /> -->
<!-- <!–<action android:name="com.exmaple.broadcaster.KEYDOWN"/>–> -->
<!-- <category android:name="android.intent.category.HOME" /> -->
<!-- </intent-filter> -->
<!-- </receiver> -->
</application>
</manifest>
导入AndroidManifest.xml 到Unity中
3.1 Unity代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UnityAndAndroid : MonoBehaviour
{
/// <summary>AndroidJavaObject:</summary>
private AndroidJavaObject AJ_obj;
/// <summary>Text:</summary>
public Text text_showLog;
// Start is called before the first frame update
void Start()
{
//测试:1:失败
//AndroidJavaClass android_class = new AndroidJavaClass("com.zhhd.unityblelibrary.UnityBleActivity");
//测试:2:成功
Debug.Log("xzy 查看运行:Start");
AndroidJavaClass android_class = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
Debug.Log("xzy 查看运行: AndroidJavaClass");
AJ_obj = android_class.GetStatic<AndroidJavaObject>("currentActivity");
Debug.Log("xzy 查看运行: AndroidJavaObject");
AJ_obj.Call("initBle");
Debug.Log("xzy 查看运行: initBle");
}
public void FromAndroid(string _str)
{
text_showLog.text = _str;
Debug.Log("xzy 查看运行:FromAndroid");
}
}
3.1 Unity设置:UI+设置
3.1 project settings
- PackageName再次和AndroidMainfest.xml都不一杨,新建的一个名字;
- 但是我上网搜索,都说PackageName需要和AndoidStudo里面设置的名字一致。
3.1 运行结果
- AndroidStudo里输出日志和Unity代码一致
- CMD的adb里输出日志和Unity代码一致