一、新建AndroidStudio工程
注意语言选择Java,如果没有语言java选项可以在上一步中选择Empty Views Activity
二、AndroidStudio BuildGradle配置流程
https://blog.csdn.net/qq_42345116/article/details/117963364
三、导入unity classes.jar包 和 UnityPlayerActivity.java脚本
1.导入classes.jar
图片中有几处classes.jar写成class了 勿怪勿怪
参考地址:
Unity自定义安装路径\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes下
只是将classes导入文件夹还不行,需要将他添加库才可用
2.添加UnityPlayerActivity.java脚本
查看Class是否有UnityPlayerActivity.java脚本
注意:如果没有 是因为新版本Unity的UnityPlayerActivity脚本被单独提取出来了,2019版本以上该脚本都被单独提取出来了
参考路径:
Unity自定义安装路径\Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player
友情提示:这个脚本一定要Ctrl+C复制过去,如果不小心剪切过去的话 unity打包会出现问题出现的问题可以参考连接 unity2019打包android出现CommandInvokationFailure: Gradle build failed. 问题_被代码折磨的狗子的博客-CSDN博客 中的问题二
新建文件夹存放UnityPlayerActivity.java脚本
四、修改MainActivity.java脚本、AndroidManifest.xml和build.gradle依赖项
1.修改MainActivity.java脚本
脚本内容如下:
package com.qqlogin.androidtest;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
}
//unity中要调用的方法
public String SendMessage()
{
return "Hello word";
}
}
2.修改 AndroidManifest.xml
原AndroidManifest.xml
修改后的AndroidManifest.xml
以下是AndroidManifest.xml具体内容
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qqlogin.androidtest">
<application
android:allowBackup="true"
android:supportsRtl="true"
>
<activity android:name="com.qqlogin.androidtest.MainActivity">
<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>
</application>
</manifest>
3.build.gradle依赖项,不修改build.gradle不会生成aar 生成的是apk
修改后的build.gradle
修改依赖项 否则AndroidStudio打包时会报错
五、删除多余不用文件 打包arr
1.删除res文件夹下的所有文件
不删除的话打包会出现在aar文件中,导入unity前还是要删除
这是未删除时打包的aar,如果第一次打aar包未删除这些文件时,即使后面删除了aar包中还是会出现这些文件,具体原因我就暂时不知道了,希望有懂得小伙伴讲解一下。
2.生成arr包
六、处理aar包 导入Unity中
解压后需要删除3个文件
1.删除libs文件下的classes.jar,是libs文件下 不是 AndroidStudio生成的classes.jar
2.在压缩包中打开AndroidStudio生成的classes.jar,删除UnityplayerActivity.class
3. 同样在压缩包中打开AndroidStudio生成的classes.jar,删除BuildConfig.class
aar包需要导入到unity中 unity自带的classes.jar、UnityPlayerActivity.class和BuildConfig.class文件,不删除unity打包会失败
将处理后的文件 重新压缩为aar包
六、Unity配置及调用方式
1.将aar包和AndroidManifest.xml导入到unity的Plugins/Android文件夹下
AndroidManifest.xml内容直接复制AndroidStudio的AndroidManifest.xml内容即可
2.场景布局
3.脚本书写
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
public class Test : MonoBehaviour
{
public Text txt;
public Button btn;
void Start()
{
btn.onClick.AddListener(SendMessage);
}
void Update()
{
}
void SendMessage()
{
AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject javaObject = javaClass.GetStatic<AndroidJavaObject>("currentActivity");
string rtStr = javaObject.Call<string>("SendMessage");
txt.text = rtStr;
Debug.Log("消息:");
Debug.Log(rtStr);
}
}
4. 修改unity包名
打开File/Build Settings
选择Other Settings选项卡修改package Name
到这配置完成 build打包
七、打包完毕 导入到模拟器中测试
成功运行 哈哈~~
注意事项:闪退问题原因
1.AndroidManifest.xml的包名与Unity工程的包名不一致2.Jar包中的MainActivity.java中的包名与Unity工程不一致
文章写的比较详细,也有点多,第一次做也踩了不少坑,所以尽量把我遇到的问题和注意事项写的详细一点。
如果你Android Studio Build Gradle有问题 推荐https://blog.csdn.net/qq_42345116/article/details/117963364
如果是Unity打包配置 推荐
Unity2019.4.4版本安卓打包 配置离线jdk、androidsdk和Gradle_被代码折磨的狗子的博客-CSDN博客
测试apk 链接