一、打开As创建项目
(1)
(2)
(3)
(4)
二、添加一个module
(1)创建Module
(2)然后选择android library
(3)这里的package name需要与unity里边的签名一致
(4)然后把项目显示方式切换成project
(5)图中框选部分就是我们创建好的module
(6)因为我们的类要继承unity的Activity类。所以我们需要引入unity的安卓类库classes.jar,
路径=\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes。把里边的jar复制到libs中。然后关联项目。
(7)关联成功后就可以看到下边的内容了
(8)然后创建类,类的名字自己随意,但是需要继承UnityPlayerActivity
(9)然后在类中写需要调用的方法
//弹出提示框
public void MShowDialog(String _title,String _contetnt)
{
try
{
AlertDialog.Builder mDialog=new AlertDialog.Builder(this);
mDialog.setTitle(_title);
mDialog.setMessage(_contetnt);
mDialog.setPositiveButton("Ok",null);
mDialog.show();
}
catch (Exception e)
{
Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
//分享内容
public void MShareText(String _subject,String _content)
{
Intent mIntent=new Intent(Intent.ACTION_SEND); //创建分享
mIntent.setType("text/plain");
mIntent.putExtra(Intent.EXTRA_SUBJECT,_subject); //设置分享内容
mIntent.putExtra(Intent.EXTRA_TEXT,_content); //设置分享内容
startActivity(Intent.createChooser(mIntent,"Share Card")); //分享标题
}
(10)打开此module的build.gradle
(11)在build最后加入代码
task deleteOldJar(type:Delete) {
delete 'release/OutputJar'
}
task exportNewJar(type: Copy){
from('build/intermediates/packaged-classes/release/')
into('release/')
include('classes.jar')
rename('classes.jar','OutputJar.jar')
}
exportNewJar.dependsOn(deleteOldJar,build)
(12)然后点击右上角的sync now
(13)release文件夹需要你自己手动创建
(14)然后点击右上角的gradle
(15)点击other中的exportNewJar,就是你自己在build中写的生成jar的方法
(16)等build successful,就可以在release中看到你的jar了
三、在unity中引用jar
(1)在unity中新建plugins,在下边再建立Android文件夹,然后把你的jar包和AndroidMainifest复制进去
(2)然后再AndroidMainifest中添加上代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Slq.OutputLibrary">
<application>
<!--android:name= 后的这个名字必须与Android 中.jar写的类名一致 -->
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
(3)然后再unity中写入代码调用jar中的方法即可
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MImportJar : MonoBehaviour {
/// <summary>
/// AndroidJavaClass
/// </summary>
private AndroidJavaClass MAndroidJavaClass = null;
// Use this for initialization
void Start () {
MAndroidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
}
// Update is called once per frame
void Update () {
}
/// <summary>
/// 提示
/// </summary>
public void MImportHint()
{
AndroidJavaObject mAndroidJavaObject = MAndroidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");
mAndroidJavaObject.Call("MShowDialog", "提示", "这是提示的内容");
}
/// <summary>
/// 分享
/// </summary>
public void MImportIntent()
{
AndroidJavaObject mAndroidJavaObject = MAndroidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");
mAndroidJavaObject.Call("MShareText", "WORD-O-MAZE", "this is a sharetext");
}
}
(4)打包,此时的包名必须和jar中的包名一致
注意:
如果你需要唤起其他的 Activity,就在上方第二行,将 “currentActivity” 改成你在 AndroidManifest.xml 中注册的 Activity 名字,然后就可以通过 AndroidJavaObject.Call 的方式调用那个 Activity 类里的接口。如果这个接口在这个 Activity 类里被标记成了 static,还可以通过AndroidJavaObject.CallStatic 的方式调用。
第一行的 “com.unity3d.player.UnityPlayer” 是需要调用的接口所在的 Activity 所在的包名,如果是 unity 主 Activity ,就可以直接使用 “com.unity3d.player.UnityPlayer”,如果是其他插件包,就使用那个包的包名。
参考资料:https://blog.csdn.net/unity_http/article/details/79929454