用Android Studio 打包Jar然后倒入Unity中使用(初级)

一、打开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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值