You can create an Android Library plug-in in Unity. Once created, you can directly use it within your Unity project or develop it further in Android Studio.
To create an Android Library plug-in, follow these steps:
Unity creates a new Android Library plug-in that includes build.gradle, AndroidManifest.xml, and source files.
Alternatively, you can create the Android Library plug-in manually by following these steps:
In your Unity project, create a MyFeature.androidlib folder. This folder will represent a Gradle module.
(Optional) Unity will create a build.gradle for your .androidlib automatically on build, but if you want to override it, create a file named build.gradle inside the MyFeature.androidlib folder and add the following code:
apply plugin: 'com.android.library'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
android {
namespace "com.company.myfeature"
compileSdk getProperty("unity.compileSdkVersion") as int
buildToolsVersion getProperty("unity.buildToolsVersion")
compileOptions {
sourceCompatibility JavaVersion.valueOf(getProperty("unity.javaCompatibilityVersion"))
targetCompatibility JavaVersion.valueOf(getProperty("unity.javaCompatibilityVersion"))
}
defaultConfig {
minSdk getProperty("unity.minSdkVersion") as int
targetSdk getProperty("unity.targetSdkVersion") as int
ndk {
abiFilters.addAll(getProperty("unity.abiFilters").tokenize(','))
debugSymbolLevel getProperty("unity.debugSymbolLevel")
}
consumerProguardFiles 'proguard-rules.pro'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
MyFeature.androidlib folder:
src/mainsrc/main/java/com/company/feature (or adjust the package path to match your desired package name)Create an AndroidManifest.xml file inside the src/main folder and add the following code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"/>
Create a Java or Kotlin file (for example, Controller.java) inside the src/main/java/com/company/feature/ folder and add the following code:
package com.company.feature;
public class Controller
{
public static String getFoo()
{
return "This is my feature";
}
}
The Android Library plug-in is now created.
To use the Android Library plug-in within your Unity project, use the following code:
using UnityEngine;
public class FeatureUser : MonoBehaviour
{
readonly string ControllerName = "com.company.feature.Controller";
AndroidJavaClass m_Class;
void Start()
{
m_Class = new AndroidJavaClass(ControllerName);
}
private void OnGUI()
{
GUILayout.Space(100);
GUI.skin.label.fontSize = 30;
if (m_Class != null)
{
GUILayout.Label($"{ControllerName}.getFoo() returns " + m_Class.CallStatic<string>("getFoo"));
}
else
{
GUILayout.Label($"{ControllerName} was not found?");
}
}
}
As the source files of the Android Library plug-ins aren’t visible in the Unity C# project, modifying or further developing the plug-in requires additional steps as follows:
You can develop your Android Library plug-in from Android Studio. As the Unity project directly references the plug-in, any modifications to the Android Library plug-in automatically reflect in the Unity project.