Unity Android中开发Jar sdk并调用java代码

本文详细介绍了如何在Unity中创建和使用Java SDK,通过JNI原理实现C#调用Java代码。文章涵盖了环境配置、Java代码编写、jar包注入Unity工程、Unity调用Android接口等步骤,并探讨了使用Android Studio开发jar插件的方法和注意事项。
摘要由CSDN通过智能技术生成

工作原理

Unity提供了C#代码调用Java的代码,原理其实就是JNI。开发的jar sdk需要放置在一个特殊的目录中,Unity会识别里面有关java或者android的东西,一并打包进apk里。

环境依赖

  • Unity:截止这篇文章写完,用的是Unity2017
  • java:java 1.8,原因是Unity用的就是Java1.8.理论上更高的jdk打包jar也行,但是源码中不能用新特性。

最简单的Java调用

  • 我们需要写一个最简单的jar包
  • 然后将它放入到Unity工程目录中
  • 打包成apk
  • 将apk运行在手机上
  • 在游戏运行的时候调用java相关接口。
书写java代码

在一个空目录(我的是UnityJarSDK)下构建我们最简单的java源码。目录结构如下:
在这里插入图片描述
其中src是用来存放源文件的,out一开始是空的,用来存放输出的文件。不用管bat。我们来看一下MyMain.java中的代码:

package com.qtc.test; // 说明了这个文件处在的包。它决定了javac生成class的时候输出的目录结构

public class MyMain{
   
	// 一个普通的类方法
	public int MyAdd(int a, int b)
	{
   
		return a + b;
	}
	
	// 一个静态方法,这两种方法在Unity中的调用方式是不一样的
	public static String HelloWorld()
	{
   
		return "HelloWorld";
	}
}

然后打开cmd窗口,定位到UnityJarSDK目录下分别输入以下三行命令:

javac -encoding UTF-8 src/com/qtc/test/*.java -d out/
cd out
jar cvf unitysdk.jar com/qtc/test/*

第一行命令将java文件生成class文件,并输出到out目录下。由于MyMain所在的包从com目录开始,所以out下的目录结构会如下:
在这里插入图片描述
之后用jar在out下面生成所需要的jar文件即可,正确的输出应该类似于:
在这里插入图片描述

jar文件注入Unity工程

新建一个Unity工程,将jar文件存放到Assets/Plugins/Android/下。这里为了调用这个接口,我新建了一个Button和一个Text,Button点击之后,会调用jar的接口,然后将返回值输出的到Text中。Button的Onclick函数如下:

// 这里在前面定义了 public Text info;
public void BtnOnClick()
    {
   
        string className = "com.qtc.test.MyMain";
        AndroidJavaClass jc = new AndroidJavaClass(className);

        try
        {
   
            string ret = jc.CallStatic<string>("HelloWorld");
            info.text = "Static Method Return: " + ret;

            AndroidJavaObject jo 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值