Unity+AndroidStudio:学习:二:(第1次操作:失败)AndroidStudio如何产生.arr文件
目录
1. 目的
1.1 想知道:AndroidStudio如何产生.arr文件
2.参考
2.1 Unity与AndroidStudio简单交互
- 亲测:失败
- 可能是因为我的是AS4.2.2导致,很多不同,放弃
2.2Unity+AndroidStudio:学习:二:(第2次操作:成功)AndroidStudio如何产生.arr文件+交互
- 亲测:我自己写的,完成
- AS的arr的包名等,对Unity里面没有影响
3.操作:一:失败:
3.1 版本
- windows10 64
- AS 4.2.2 版本
3.1 新建工程
3.1.1. 设置
com.example.myapplication
- 此处的包名随便设置,因为后面会新建一个模块,
- 所以个人觉得:因为你需要导出.arr给Unity,所以所有的包名都和Unity保持一致
- 最低的SDK版本可以后期修改,从而和Unity保持一致。
3.1 工程界面
下图是刚刚创建,很多还在loading,会导入东西,并且等待很久,
需要等待比较久的时间,几分钟,然后界面如下
3.1在该项目上新建一个模块(项目完全生成完才会出现新建模块的选项)
3.1.1 包名需要和Unity的包名一致,
注意:包名一定要与unity的包名相同,生成后更改配置文件中的包名无效,若不相同,配置文件错误,会造成apk运行闪退。
Mini SDK的话应该与Unity保持一致,不一致没试过。
因为在这里我的API最低的没有设置和Unity一致,所以需要修改为一致的,下面就是修改的方法。
3.1给新建的模块添加一个Empty Activity
3.1.1Android结构下:给新建的模块添加一个Empty Activity
3.1.1Project结构下:给新建的模块添加一个Empty Activity
3.1Empty Activity 设置
注意:
- 第一个:不勾,由于在unity中运行,所以不需要Android布局视图。勾上的话,会在res->layout下生 成一个.xml文件,删除掉也行。
- 第二个:暂且不勾
3.1添加unity的classes.jar,直接复制粘贴在libs下
注意:
unity中classes.jar的路径有两种:
- C:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes下;
- C:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes下。
- unity 2019.3后的版本classes.jar不包含UnityPlayerActivity类了,位置在Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player。
另外:2019.3前版本,无法继承应该是因为没有将classes.jar添加到dependencies,查看build.gradle,dependencies 下加 implementation fileTree(include: ['*.jar'], dir: 'libs')
准备删除的:因为导入了unity 2019.4.9f1的class.jar文件,里面没有UnityPlayerActivity类
unity 2019.3后的版本classes.jar不包含UnityPlayerActivity类了,位置在Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player。
另外:2019.3前版本,无法继承应该是因为没有将classes.jar添加到dependencies,查看build.gradle,dependencies 下加 implementation fileTree(include: ['*.jar'], dir: 'libs')
Unity的classes.jar 位置
Unity中我们使用的是C#脚本,最终运行在Android上是由于Mono进行转换的,所以我们选用的jar文件是第一个路径下的。如果使用的是il2cpp,就要选择第二个路径下的jar文件
3.1.1 设置classes.jar作为library:
准备删除的:因为导入了unity 2019.4.9f1的class.jar文件,里面没有UnityPlayerActivity类
3.1 修改Activity:
由于上面添加了unity的classes.jar作为库,所以可以继承UnityPlayerActivity
package com.ZHHD.BlueToothWatch;
//import androidx.appcompat.app.AppCompatActivity; //用不上了,注释掉
import android.os.Bundle;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//功能:向Unity3d发送消息
public String ASFUNC_ForTest()
{
UnityPlayer.UnitySendMessage("testCube","UnityFun","android msg");
return "Call ASFUNC_ForTest!";
}
}
3.1.1 报错:无法找到UnityPlayerActivity:已解决
问题: