1.首先打開https://developer.android.com/studio/projects/android-library學習如何創建一個Android Library
2.打開Android Studio 創建項目
- 輸入項目名稱
- 輸入Company domain或者用默認的
- 點擊next

3.點擊next

4.因為是創建Android plugin 所以選擇Add No Activity點擊Finish

5.創建的項目目錄如下

6.
+點擊File—》New—》New Module 彈出下面界面
+ 選擇Android Library
+ 點擊Next

7.
+ 輸入Application/Library name
+ 點擊Finish
+ 創建

8.創建后的目錄

9.創建JavaClass

10.
+ 輸入名稱
+ 點擊OK

11. 腳本內容
package com.wawagame.app.game.mediaplayerplugin; import android.util.Log; public class TutorialClass { public void LogNativeAndroidLogcatMessage(){ Log.d("Unity", "Native LogCcat Message!!!"); } }
12.Make Moudule Library(jar 包)
+ BuildàMake Module ’mediaplayerplugin’



E:\work\androidStudio\mediaplayerplugin\build\intermediates\packaged-classes\debug

13.在Android Sudio
雙擊打開:build.gradle(Module:mediaplayerplugin)

14.將下面代碼復制到build.gradle建中
task exprotJar(type: Copy){
from('build/intermediates/packaged-classes/debug/classes.jar')
into('../../../../../../unity/PluginTurial/Assets/Plugins/Android')
rename('classes.jar','MediaPlayerPlugin.jar')
}
task deleteOldJar(type:Delete){
delete('../../../../../../unity/PluginTurial/Assets/Plugins/Android/MediaPlayerPlugin.jar')
}
exprotJar.dependsOn(deleteOldJar)

15.
afterEvaluate {
assembleDebug.finalizedBy(exprotJar)
//build.finalizedBy(exprotJar)
}

16.如下圖操作這樣就講classes.jar復制並重命名到Unity項目中了

17.在unity中調用javaClass
有兩種方式:
1). AndroidJavaClass對象(用法見Unity Api)
2).AndroidJavaObject 對象(用法見Unity Api)
+在unity創建C#
private AndroidJavaObject javaClass;
public Text myText;
// Use this for initialization
void Start () {
javaClass = new AndroidJavaObject("com.wawagame.app.game.mediaplayerplugin.TutorialClass");
javaClass.Call("LogNativeAndroidLogcatMessage");
string a = javaClass.Call<string>("LogNativeAndroidLogcatMessageReturn");
Debug.Log("a=============" + a);
myText.text = javaClass.Call<string>("LogNativeAndroidLogcatMessageReturn");
}
// Update is called once per frame
void Update () {
}
二.Java 調用Unity Function
1. android Project 需要一個Unity classes.jar文件
2.復制classes.jar文件
+ 如果你的打包方式為Mono
復制文件是:C:\ProgramFiles\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\ classes.jar
+ 如果你的打包方式為L2CPP
復制文件是:C:\ProgramFiles\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes\ classes.jar
3.將classes.jar文件復制到如下圖所示的文件中

4.在build.gradle(Module:mediaplayerplugin)中加入下面代碼
include('clasess.jar')



5.調用unity使用的對象com.unity3d.player.UnityPlayer (在Unity Api 說明Building Plugins for Android可以看到)
使用方法:com.unity3d.player.UnityPlayer.UnitySendMessage
6.首次使用沒有自動導入怎們辦
+ File—》Settings—》Anto Import
+ 勾上Add unambiguous imports on ths fly和 Auto import in completion
+ 點擊Apply然后點擊OK
7.在Android Sudio中的代碼:
public void CallAorB(String value){
if("A".equals((value))){
DoSomethingA();
}else if("B".equals(value)){
DoSomethingB();
}
}
public void DoSomethingA() {
UnityPlayer.UnitySendMessage("MyGameObject","ChangeTextA","1111111");
}
public void DoSomethingB()
{
UnityPlayer.UnitySendMessage("MyGameObject","ChangeTextB","2222222");
}
8.在Unity中的代碼:
public void CallJavaFunction(string value)
{
javaClass.Call("CallAorB", value);
}
public void OnABtnClick()
{
CallJavaFunction("A");
}
public void OnBBtnClick()
{
CallJavaFunction("B");
}
