2
votes

Impossible de trouver la classe UnityPlayerActivity dans com.unity3d.player

J'essaye de créer un plugin Android pour mon jeu Unity. J'ai regardé beaucoup de tutoriels (la plupart d'entre eux sont obsolètes en fonction de l'éclipse) et j'ai également lu la documentation. J'utilise Unity 2019.3.0f6. Je souhaite étendre mon activité principale dans le projet Android Studio avec UnityPlayerActivity

entrez la description de l'image ici

Je ne comprends pas ce que signifient les lignes de fin " Locate the file, and add classes.jar to the classpath Unity uses to compile the new Activity. Compile your Activity source file and package it into a JAR or AAR package, then copy it into your Project folder "

Je comprends qu'UnityPlayerActivity n'existe pas dans le class.jar à PlaybackEngines / AndroidPlayer / Variations / mono ou il2cpp / Development ou Release / Classes / et je ne peux donc pas importer com.unity3d.player.UnityPlayerActivity; Je ne peux importer que UnityPlayer et IUnityPlayerLifecycleEvents. Je suis également intéressé de comprendre ce que sont la classe UnityPlayer et IUnityPlayerLifecycleEvents dans ce contexte.

entrez la description de l'image ici

Mais UnityPlayerActivity.java est disponible sur C: \ Program Files \ Unity \ Editor \ Data \ PlaybackEngines \ AndroidPlayer \ src \ com \ unity3d \ player

Comment puis-je l'ajouter dans la bibliothèque Unity3d ou classes.jar. Ou même l'importer pour étendre mon activité principale. Je ne comprends pas ce que je fais de mal ici. J'utilise Android Studio, même si je suis nouveau dans ce domaine.


0 commentaires

4 Réponses :


2
votes

Ne vous inquiétez pas, créer des plugins Android pour l'unité pourrait être un peu compliqué au début, encore plus si vous n'avez aucune expérience avec Android!

Quelques conseils:

  • La structure du répertoire du projet devrait être: Assets/Plugins/Android (c'est important, j'ai lutté pour cette stupidité ici )
  • Insérez classes.jar dans le projet AndroidStudio dans app/libs .
  • Insérez des dépendances externes (si vous l'utilisez) comme "support-v4-24.1.1" dans Android/libs

Pour créer des plugins sur AndroidStudio, vous devez créer une bibliothèque (cette étape consiste à la créer à partir d'une activité):

  • Sur graddle supprimer la ligne d'identification
  • Sur le même fichier, remplacez .implementation par .library

Pour recompiler le plugin, procédez comme suit:

  1. Reconstruire la solution AndroidStudio

  2. Accédez à la solution AndroidStudio ... app\build\outputs\aar récupérez le fichier .aar

  3. Copiez et collez-le, changez l'extension de .aar en .zip ou .rar
  4. Ouvrez le fichier modifié et extrayez 2 éléments:

    • classes.jar (ceci est un autre classes.jar, pas le même stocké dans app / libs dans votre projet AndroidStudio)
    • AndroidManifest.xml
  5. Copiez ces fichiers dans le projet Unity dans Assets/Plugins/Android (rappelez-vous, la structure du répertoire du projet est importante!)

Vous pouvez télécharger le fichier classes.jar (le premier) depuis mon Utility_Repo ou depuis le chemin que vous lui nommez D:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes\classes.jar .


3 commentaires

Je comprends ce que vous expliquez mais ma question est de savoir pourquoi la classe UnityPlayerActivity n'est pas disponible directement dans mes classes.jar ... / PlaybackEngines / AndroidPlayer / Variations / mono / Developmen‌ t / Classes /


Je viens de lire aussi cet article. Ça a l'air bien eppz.eu/blog/unity-android-plugin-tutorial-1


Ce que je veux réaliser, c'est ouvrir une activité Android existante, implémenter spécifiquement ce projet en tant que plugin github.com/WhatsApp/stickers afin que je puisse donner à mon utilisateur du jeu Unity des autocollants WhatsApp au moment de l'exécution. Je sais que cela semble très ambitieux, mais pouvez-vous me donner une idée de la façon dont je devrais aborder mon objectif.



2
votes

Il existe un très bon tutoriel et une vidéo youtube d'accompagnement sur la création de plugins Android natifs et l'incorporation dans Unity 3D.

http://www.cwgtech.com/using-android-webview-to-display-a-webpage-on-top-of-the-unity-app-view/


0 commentaires

2
votes

Je me suis retrouvé dans la même situation, et après quelques recherches, j'ai trouvé que vous devriez prendre cette classe ailleurs et la copier simplement dans votre projet. Sur ma machine, la classe est dans "...path-to-unity-installation...\Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player" .

Je pense que la nouvelle approche qui UnityPlayerActivity utilisation de UnityPlayerActivity mérite totalement l'attention, cependant.


0 commentaires

0
votes
  1. Créez un nouveau module, par exemple: nommez-le "UnityActivity".
  2. Ajoutez classes.jar qui se trouve dans le dossier d'installation de unity en tant que Dependences dans la méthode de "CompileOnly"
  3. Ajoutez le code source de "UnityPlayerActivity" dans le module de UnityActivity.
  4. Ajoutez le nouveau module en tant que dépendances à "Votre module" dans la méthode de "CompileOnly"

Vous pouvez maintenant créer votre CustomActivity étend de UnityPlayerActivity. et intégrez * .aar.


0 commentaires