Intégration d'un fichier JAR Android dans Unity

Création d'un fichier JAR avec Android Studio

Pour permettre à Unity d'appeler du code Java sur Android, l'utilisation d'un fichier JAR est une approche courante. La première étape consiste à générer ce JAR via Android Studio. Commencez par créer un nouveau projet dans Android Studio, en sélectionnant une version Android compatible avec votre projet Unity. Choisissez une activité vide comme base.

Localisez le fichier class.jar fourni par Unity, généralement situé dans le répertoire d'installation de Unity sous Editor/Data/PlaybackEngines/AndroidPlayer/Versions/mono/Release/Classes. Copiez ce fichier dans le dossier libs de votre projet Android Studio. Ensuite, dans la structure du projet, ajoutez ce JAR comme dépendance de type fichier.

Modifiez l'activité principale pour hériter de UnityPlayerActivity et implémentez une méthode accessible depuis Unity. Par exemple :

package com.exemple.bridgeandroid;

import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;

public class PontAndroid extends UnityPlayerActivity {
    @Override
    protected void onCreate(Bundle etatSauvegarde) {
        super.onCreate(etatSauvegarde);
    }

    public String recupererDonnees() {
        android.util.Log.d("PontUnity", "Opération réussie");
        return "Données obtenues avec succès";
    }
}

Ajoutez la balise méta-data dans le fichier AndroidManifest.xml pour indiquer que l'activité est compatible avec Unity : <meta-data android:name="unityplayer.UnityActivity" android:value="true" />.

Pour empaqueter le JAR, modifiez le fichier build.gradle de l'application : changez le plugin en com.android.library et supprimez l'identifiant d'application. Ajoutez une tâche Gradle personnalisée pour générer le JAR :

task construireJar(type: Copy) {
    delete 'build/libs/bridgeandroid.jar'
    from('build/intermediates/bundles/release/')
    into('build/libs/')
    include('classes.jar')
    rename('classes.jar', 'bridgeandroid.jar')
}

construireJar.dependsOn(build)

Exécutez la tâche via la ligne de commande avec gradlew construireJar. Si vous rencontrez des erreurs liées au chemin du JDK, configurez le ficheir gradle.properties avec le chemin approprié, par exemple org.gradle.java.home=C:\\Chemin\\Vers\\JDK. Le fichier JAR résultant sera disponible dans le dossier app/build/libs.

Utilisation du fichier JAR dans Unity

Dans Unity, créez un projet et passez en plateforme Android. Assurez-vous que le nom du package et la version Android correspondent à ceux du JAR. Placez le fichier JAR dans le dossier Assets/Plugins/Android de votre projet Unity.

Pour appeler la méthode Java depuis un script C#, utilisez les classes fournies par Unity. Voici un exemple de script qui exploite deux approches différentes :

using UnityEngine;

public class AppelAndroid : MonoBehaviour {
    void OnGUI() {
        // Méthode directe via AndroidJavaObject
        try {
            var objetJava = new AndroidJavaObject("com.exemple.bridgeandroid.PontAndroid");
            string resultat = objetJava.Call<string>("recupererDonnees");
            GUI.Label(new Rect(10, 10, 500, 500), resultat);
        } catch (System.Exception e) {
            GUI.Label(new Rect(10, 10, 500, 500), e.Message);
        }

        // Méthode via l'activité courante
        try {
            AndroidJavaClass classeUnity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject activiteCourante = classeUnity.GetStatic<AndroidJavaObject>("currentActivity");
            string donnees = activiteCourante.Call<string>("recupererDonnees");
            GUI.Label(new Rect(20, 20, 500, 500), donnees);
        } catch (System.Exception e) {
            GUI.Label(new Rect(20, 20, 500, 500), e.Message);
        }
    }
}

Lors de la compilation, si des erreurs surviennent liées aux styles, modifiez le fichier values/styles.xml dans le projet Android Studio pour ne conserver que le contenu essentiel, par exemple :

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    </style>
</resources>

Regénérez le fichier JAR avec cette correction, puis réimportez-le dans Unity pour résoudre les problèmes de build.

Étiquettes: Unity3D AndroidDevelopment JARIntegration AndroidStudio JavaInterop

Publié le 21 juin à 21h39