目的是为了更好的管理和复用Android SDK或者Android Native。
一.基本目录结构
注意要遵循下面路径结构
根路径为Assets/Plugins/Android/你的模块名/
MyModule
|-------CSharp【用于存放C#代码】
|-------Java【用于存放Java代码】
|-------libs【用于存放jar或者o文件】
|-------你的模块名.androidlib【用于存放模块使用的资源和相关配置】
|--------------assets【等同于Android assets】
|--------------res【等同于Android res】
|--------------AndroidManifest.xml【必须】
|--------------project.properties【必须】
二.测试配置数据
2.1 AndroidManifest配置
Assets/Plugins/Android/MyLibrary/my.androidlib/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.katagames.mylib">
</manifest>
2.2 project.properties配置
Assets/Plugins/Android/MyLibrary/my.androidlib/project.properties
android.library=true
2.3 config.txt
Assets/Plugins/Android/MyLibrary/my.androidlib/assets/config.txt
我是UTF-8配置数据
2.4 AndroidTestClass.java
Assets/Plugins/Android/MyLibrary/Java/AndroidTestClass.java
package cn.katagames.test;
import java.io.InputStream;
import android.app.Activity;
public class AndroidTestClass {
public static String GetConfig(Activity activity,String fileName)
{
String res="";
try {
InputStream is = activity.getResources().getAssets().open(fileName);
int len = is.available();
byte []buffer = new byte[len];
is.read(buffer);
res = new String(buffer, "utf-8");
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
}
2.5 JavaTest.cs
Assets/Plugins/Android/MyLibrary/CSharp/JavaTest.cs
using UnityEngine;
public static class JavaTest
{
private const string JavaTestName = "cn.katagames.test.AndroidTestClass";
private static AndroidJavaObject activity;
private static AndroidJavaObject Activity
{
get
{
if (activity == null)
{
var UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
activity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
}
return activity;
}
}
private static AndroidJavaClass javaTestClass;
private static AndroidJavaClass JavaTestClass
{
get
{
if (javaTestClass==null)
{
javaTestClass = new AndroidJavaClass(JavaTestName);
}
return javaTestClass;
}
}
public static string GetConfig()
{
return JavaTestClass.CallStatic<string>("GetConfig", Activity,"config.txt");
}
}
2.6 TestUI.cs
Assets/Scripts/TestUI.cs
using UnityEngine;
using UnityEngine.UI;
public class TestUI : MonoBehaviour
{
public Text ConfigText;
private void Awake()
{
ConfigText.text = JavaTest.GetConfig();
}
}