您现在的位置是:首页 > 数码 > 正文

unity发布android教程 Unity Android交互之 调用AndroidStudio打包aar

发布时间:2022-05-19 08:40:13编辑:来源:

大家好,我是云百科的客服小柏,我来为大家解答以上问题。unity发布android教程,Unity,Android交互之,调用AndroidStudio打包aar很多人还不知道,现在让我们一起来看看吧!

解答:

1、 打开安卓工作室,命名工程名称,具体如下图

2、 从一致安装路径寻找到classes.jar作为库引入AndroidStudio,(windows电脑的路径:ProgramFiles\unity2017_4_6\Editor\Data\playbackengines\Androidplayer\Variations\mono\Release\Classes路径根据一致版本对应查找),拷贝classes.jar,粘贴到安卓开发环境工程的激光诱导击穿光谱仪中,并且添加为库.具体如下图

3、 找到安卓开发环境工程下的主要活动脚本,注释掉v7引用,统一目前暂时不支持,主要活动继承UnityPlayerActivity,并且注释掉,安卓的屏幕显示,具体如下图

4、 并且在主要活动脚本上添加一致可调用的测试函数,包括带参数的,静态和非静态的方法,具体如下图

5、 主要活动脚本的具体内容如下:

6、 包com。举例。testandroidaarforunity

7、 //导入安卓。支持。V7。app。appcompactivity

8、 导入安卓。OS。捆绑;

9、 导入安卓。小部件。敬酒;

10、 导入com。unity3d。玩家。unityplayeractivity

11、 公共类主要活动扩展UnityPlayerActivity{

12、 @覆盖

13、 受保护的voidonCreate(Bundlesavedinstancestate){

14、 超级棒。oncreate(savedInstanceState);

15、 //setContentView(r.layout。活动_主);

16、 }

17、 publicvoidShowToast(最终字符串消息){

18、 runOnUiThread(newRunnable(){

19、 @覆盖

20、 公共无效运行(){

21、 吐司。maketext(getApplicationContext()、msg、Toast.LENGTH_SHORT).show();

22、 }

23、 });

24、 }

25、 公共静态字符串ReturnStaticString(){

26、 '返回'调用返回值静态方法;

27、 }

28、 公共字符串ReturnString(){

29、 '返回'调用返回值非静态方法;

30、 }

31、 }

32、 找到工程中的AndroidManifest.xml,添加元数据android:name='unityplayer.unityactivity'Android:value='true'/,并且去掉应用中的一些属性,仅留下Android:label='@string/app_name'即可,具体如下图

33、 AndroidManifest.xml的具体的内容如下:

34、 ?可扩展标记语言版本='1.0'编码='utf-8'?

35、 清单xmlns:Android='http://模式。安卓。'package='com。举例。'testandroidaarforunity'

36、 应用

37、 Android:label='@string/app_name'

38、 activityandroid:name='.主要活动'

39、 意图过滤器

40、 actionAndroid:name='Android。意图。行动。主'/

41、 类别Android:name='Android。意图。类别。“发射器”

42、</intent-filter>

43、<meta-dataandroid:name="unityplayer.UnityActivity"

44、android:value="true"/>

45、</activity>

46、</application>

47、</manifest>

48、在AndroidStudio中选择File—ProjectStructures...,然后把导入的classes.jar设置为只编译不打包,因为Unity中自带,打包进去会造成重复错误,具体如下图

49、在AndroidStudio的工程下,找到build.gradle,把applyplugin:'com.android.application'修改为applyplugin:'com.android.library',注释掉applicationId"com.example.testandroidaarforunity",以及相关的而一些Android测试相关的内容,因为作为Unity库使用,暂时不要androidTest相关的内容,具体如下图

50、build.gradle的具体内容如下:

51、//applyplugin:'com.android.application'

52、applyplugin:'com.android.library'

53、android{

54、compileSdkVersion28

55、defaultConfig{

56、//applicationId"com.example.testandroidaarforunity"

57、minSdkVersion15

58、targetSdkVersion28

59、versionCode1

60、versionName"1.0"

61、//testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"

62、}

63、buildTypes{

64、release{

65、minifyEnabledfalse

66、proguardFilesgetDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'

67、}

68、}

69、}

70、dependencies{

71、/*implementationfileTree(include:['*.jar'],dir:'libs')

72、implementation'com.android.support:appcompat-v7:28.0.0'

73、implementation'com.android.support.constraint:constraint-layout:1.1.3'

74、testImplementation'junit:junit:4.12'

75、androidTestImplementation'com.android.support.test:runner:1.0.2'

76、androidTestImplementation'com.android.support.test.espresso:espresso-core:3.0.2'*/

77、compileOnlyfiles('libs/classes.jar')

78、}

79、如图,在AndroidStudio的工程找到工程中的一些不需要的xml文件,删掉即可,不然可能会在Unity中报错,具体如下图

80、把value/styles.xml的一些Android的样式注释掉,因为Unity用不到,还会报错,具体如下图

81、准备工程做完之后,就可以编译打包了,打包成功即可在输出文件中,找到aar,具体如下图

82、如果要编译出发布的release版本,可以如图双击或者右键bundleReleaseAar,即可编译出,具体如下图

83、选中要导入Unity的aar包,右键在文件夹中打开,具体如下图

84、然后,选中对应aar,右键选择打开方式,使用解压应用打开,然后把AndroidManifest.xml拉出来解压,便于和aar一起导入Unity,具体如下图

85、打开Unity,在工程中新建文件夹Plugins/Android,把AndroidManifest.xml和aar一起导入Unity的Plugins/Android文件夹下,具体如下图

86、在unity中的场景中添加两个的文本Text,用于显示调用Android的aar的函数接口的结果,具体如下图

87、在工程中添加一个脚本CallAndroid,用来调用aar的函数,然后双击打开进行编辑代码,具体如下图

88、CallAndroid脚本的具体如代码和代码说明,即创建AndroidJavaObject,在Start函数中调用相关接口,具体如下图

89、CallAndroid脚本的具体内容如下:

90、usingUnityEngine;

91、usingUnityEngine.UI;

92、publicclassCallAndroid:MonoBehaviour{

93、//显示调用函数结果的Text

94、publicTextshowStaticString,showString;

95、AndroidJavaObjectjo;//设置androidjava实体

96、publicAndroidJavaObjectJo

97、{

98、get

99、{//jo为空,就新建一个对应的androidjava实体

100、if(jo==null){

101、AndroidJavaClassjc=newAndroidJavaClass("com.unity3d.player.UnityPlayer");

102、jo=jc.GetStatic<AndroidJavaObject>("currentActivity");

103、}

104、returnjo;

105、}

106、}

107、//Usethisforinitialization

108、voidStart(){

109、//使用androidjava实体Jo调用测试函数

110、Jo.Call("ShowToast",newobject[]{"调用androidaar的ShowToast函数"});

111、showStaticString.text=jo.CallStatic<string>("ReturnStaticString");

112、showString.text=jo.Call<string>("ReturnString");

113、 }

114、}

115、脚本编译正确后,把脚本挂载到Canvas并把两个Text对应赋值到脚本,具体如下图

116、然后编译场景,打包到Android手机上运行,即可看到,Unity调用Androidaar的结果,具体如下图

本文到此讲解完毕了,希望对大家有帮助。

标签:

上一篇
下一篇

最新文章