1.新建Android lib工程New->New Module
2.选择Android Library
3.输入package name 这个要和unity的包名一致
4.在新建的工程下如图位置new 一个 EmptyActivity
5.在android工程下的libs文件里添加unity的jar包
Unity中jar有两个路径这个要取决于unity的打包方式
在unity中playersettings下面的otherSetting里的scripting Backend中有Mono和il2cpp两个选项对应的就Unity/Editor/Data/PlaybackEngines/AndroidPlayer/Variations下的两个文件夹,去里面找到对应需要的class.jar
6. 将class.jar复制到libs下面点击Add AsLibrary导入
7.在unity中新建AndroidPlugin脚本来调用java
public class AndroidPlugin : MonoBehaviour {
private AndroidJavaObject m_androidObj = null;
private void Awake()
{
AndroidJavaClass androidClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
m_androidObj = androidClass.GetStatic
}
void Start ()
{
if (m_androidObj != null)
{
m_androidObj.Call("CallUnityMethod", "testString");
}
}
public void UnityMethod(string str)
{
Debug.Log("android called unityMethodparam:" + str);
}
}
8.在unity场景中新建一个gameobject,并且把脚本挂在上面
9.将Android工程里的activity修改一下
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void CallUnityMethod(String str)
{
UnityPlayer.UnitySendMessage("Driver","UnityMethod",str);
}
}
这里的CallUnityMethod方面在unity的脚本中有调用,里面在调用“Driver”这个场景里gameObject上挂着的脚本里的对应函数
10.make一下Android工程
11.make完以后在build/intermediates下面的manifests里面有需要的manifest文件
Packaged-class下面有class.jar文件
Packaged-res/debug下面有layout和values文件
12.将需要的文件对应复制到unity里面
注意这里的androidManifest需要修改一下
手动加一些属性,复制过来的不太全,请参照下面的
图标其他的也要自己加入
package="com.sl.unity_android" android:versionCode="1" android:versionName="1.0" > android:minSdkVersion="19" android:targetSdkVersion="27"/> android:label="@string/app_name"> 13.最后unity打包的时候要选择这一项: 14.打出apk运行就能看到日志了