1.新建Android lib工程New->New Module
2.选择Android Library
3.输入package name 这个要和unity的包名一致
4.在新建的工程下如图位置new 一个 EmptyActivity
5.在android工程下的libs文件里添加unity的jar包
Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes里面找到对应需要的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<AndroidJavaObject>("currentActivity");
}
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修改一下
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);
//setContentView(R.layout.activity_main);
}
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需要修改一下
手动加一些属性,复制过来的不太全,请参照下面的
图标其他的也要自己加入
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.unity_">
<!--访问网络连接,可能产生GPRS流量-->
<uses-permission android:name="android.permission.INTERNET"/>
<application>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<?xml version=“1.0"encoding=“utf-8”?>
<manifestxmlns:android=“http://schemas.android.com/apk/res/android”
package=“com.sl.unity_android”
android:versionCode=“1”
android:versionName=“1.0” >
<uses-sdk
android:minSdkVersion=“19”
android:targetSdkVersion=“27”/>
<application
android:label=”@string/app_name">
<activity android:name=".MainActivity">
<intent-filter>
<actionandroid:name=“android.intent.action.MAIN” />
<categoryandroid:name=“android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>
</manifest>
13.最后unity打包的时候要选择这一项
14.打出apk运行就能看到日志了