2017-07-11 2 views
5

Je suis en train de se Gstreamer travailler en studio Android, suivant leurs tutoriels, voir par exemple ici:exemples Gstreamer dans Android Studio est

https://gstreamer.freedesktop.org/documentation/tutorials/android/link-against-gstreamer.html

Mais dans le dernier studio Android il n'y a pas JNI/Android .mk. Où dois-je mettre le code à la fin de cette page Web?

Devrait-il aller dans le CMakeLists.txt? Ou devrait-il y avoir quelque chose de différent?

Ou est-ce que je fais juste un fichier Android.mk, et si oui, où (comme il n'y a pas de dossier jni, seulement un dossier cpp)? Et comment puis-je dire à Android studio où trouver mon fichier Android.mk?

Merci!

+0

Si ma réponse m'a aidé, veuillez l'accepter. Merci –

Répondre

7

J'ai fait tous les tutoriels du site de Gstreamer mais c'était très dur. Pour aider un autre peuple, je l'ai documenté. Voici le tutoriel pour linux (ubuntu) mais pourrait aussi fonctionner sur windows, si vous avez des questions à ce sujet, il suffit de demander:) ... Je vais également lier un projet de gitlab prêt à fonctionner sous Android Studio:
(tutoriel 5) https://gitlab.com/eduardoprado/gstreamer-tutorial5.git
(tutoriel 2) https://gitlab.com/eduardoprado/gstreamer-tutorial2.git

Utilisation de la bibliothèque Android studio est

la meilleure façon de comprendre et d'intégrer GStreamer dans le projet fait les tutoriels dans ce site: Désolé, vous avez pour trouver le lien par vous-même, je n'ai pas la réputation d'afficher le lien direct
Cependant, ces tutoriels sont vieux et ont été faits pour travailler dans Eclipse, afin de travailler avec Android Studio est nécessaire:

1. Importez les tutoriels en utilisant l'option Importer Android studio;
2. Définissez Android Studio pour utiliser NDK;
3. Définissez une variable dans le fichier "Android.mk";
4. Set Gradle ne compile qu'une partie de l'architecture;
5. Copiez la classe Gstreamer dans le chemin correct.
6. Désactivez "Instante Run" à partir d'Android Studio. (Modifier fait 27/10/2017)
7. Fix "argument or linker" (modifier fait 11/28/2017 utilisateurs Windows uniquement)

Chacune de ces instructions seront expliquées dans les sections suivantes:

1. importez les tutoriels en utilisant l'option importer Android studio

Android studio ont une possibilité d'importer d'un autre projet IDEs. Pour importer le projet Gstreamer fait à Eclipse aux étapes suivantes:
1. Télécharger tous les tutoriels de git:;
2. Dans Android Studio, allez dans Fichier -> Nouveau projet d'importation;
3. Dans le nouveau navigateur pour l'écran de fichier, allez dans "gst-docs", sélectionnez le projet désiré (dans mon cas tutoriel 5) "android-tutorial-5" et cliquez sur "OK".

Selecting Project

2. Définissez l'Android NDK Studio pour utiliser

Maintenant que le projet a été importé, il est nécessaire d'informer Android studio que le projet utilise le cadre NDK. Ainsi, le Gradle sera capable d'importer et de gérer toutes les dépendances. Pour ce faire, nous devons lier le fichier Android.mk (déjà dans le dossier tutoriel):
1. Faites un clic droit sur « app » dans l'onglet de navigation de gauche
2. Cliquez sur « Link C++ Projet avec Gradle »
3. Dans la nouvelle fenêtre:

  • Change "build système" de "CMake" à "NDK-build"
  • Cliquez sur "..." et accédez à l'emplacement de l'Android.mk " /AndroidStudioProjects/android-studio-5/app/src/jni/Android.mk "
  • Appuyez sur OK

Maintenant, les fichiers de construction externes apparaîtront dans l'onglet de gauche du projet. Des erreurs apparaîtront également, c'est normal et seront corrigées dans les sections suivantes.

3. Définissez une variable dans le fichier « Android.mk »

La dernière erreur de section se produit parce que « Android.mk » ne trouvera pas le chemin où GStreamer a été extrait. Nous allons donc définir la variable GSTREAMER_ROOT_ANDROID sur le chemin où GStreamer a été extrait. Pour cela:
1. Parcourez l'onglet de gauche et développez "External Build FIles";
2. Double-cliquez sur Android.mk pour ouvrir le fichier;
3. À la ligne 10, sous la rubrique "include $ (BUILD_SHARED_LIBRARY)", tapez:
- "GSTREAMER_ROOT_ANDROID: = chemin"
- NO guillemets
- chemin est le chemin (évidemment) où GStreamer a été extrait.
Après que Gradle se synchronisera et qu'une erreur "*** Arche cible ABI non supportée: Mips. Stop" sera affichée.

Setting GSTREAMER_ROOT_ANDROID

4. Définir Gradle compiler seulement une architecture

La dernière erreur de section se produit parce que catégorie essaie de construire pour différentes architectures, mais il ne trouve pas le fichier à construire dans MIPS . Pour résoudre ce problème, nous allons spécifier les architectures à construire en excluant MIPS:
1. Dans l'onglet gauche du navigateur, développez Gradle Scripts;
2. Double-cliquez sur "build.gradle (Module: app)"
3.Dans la ligne sous le type "nomModule":
(pour exécuter tutoriel 5)
- s x 86 'abiFilters, 'armeabi', 'armeabi-V7A', 'arm64-v8a'
(pour exécuter tutoriel 2)
- abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
(edit 11/21: Récemment, j'ai eu des problèmes avec arm64-v8a ... appareils avec 64 bits ne seront pas diffusés en direct, j'ai résolu "suppression arm64-v8a » trop)

enter image description here

5. Copiez la classe Gstreamer à la p correcte ath.

La dernière configuration requise concerne l'importation d'un package dans la classe Main.

Class import error

L'erreur a montré ci-dessus se produit parce qu'il n'y a pas de classe de GStreamer pour obtenir la fonction « .init ». Pour résoudre cela, nous devons copier le GStreamer de classe à partir du fichier où il a été extrait et passé au chemin d'accès spécifié:

  1. Parcourir, en utilisant le gestionnaire de fichiers de votre système, le fichier où vous avez extrait GStreamer.
  2. A partir du fichier extrait, accédez à l'emplacement de la classe GStreamer. Il se trouve dans /arm/share/gst-android/ndk-build/GStreamer.java Copier GStreamer.java
  3. Retournez dans Android Studio et créez le chemin d'importation auquel la classe principale tente d'accéder depuis/app/java dans l'onglet du navigateur de gauche. Ainsi, à l'image ci-dessus, nous devons créer le chemin org.freedesktop.gstreamer et collez le fichier dans GStreamer.java il:
  4. Faites un clic droit sur le dossier java
  5. New-> Paquet
  6. Type de org.freedesktop .gstreamer
  7. Clic droit sur org.freedesktop.gstreamer et Coller 5.L'erreur d'importation est maintenant résolue, mais la nouvelle classe a des erreurs. Pour les résoudre, tout ce que vous avez à faire est d'effacer de la classe copiée le "@" et tout ce qui se trouve entre le "@".

6. Désactiver "Instante Exécuter" dans Android Studio. (edit 27/10/2017)
Cette fonctionnalité d'Android Studio peut entraîner des problèmes lors de l'exécution du projet. Il est donc judicieux de la désactiver.
Désactivation "Instante Run":

1. Dans Android studio allez dans "Fichier" -> "Paramètres ..." (Ctrl + Alt + S)
2. "Build, exécution, déploiement" -> " instantanée Run »
3. Décochez la case "Activer Run instantané aux modifications du code d'échange chaud/ressources sur Deploy (activé par défaut)"
4. Appuyez sur "Appliquer"

7.Fix "argument d'or linker" (utilisateurs Windows uniquement)

Lorsque vous essayez Windows, vous obtiendrez l'erreur:
Error:error: invalid linker name in argument '-fuse-ld=gold'
Pour résoudre ce problème:
1. Allez Android NDK Linker (GStreamer) - invalid linker name -fuse-ld=gold
2. Suivez la Antoine Répondez aux instructions de Zambelli.

+1

Ceci est une excellente référence pour construire les tutoriels gstreamer avec Android Studio! Je souhaite que cela faisait partie des documents officiels. Pour Android Studio sur Windows, j'ai dû appliquer [ce correctif] [1] pour * nom de l'éditeur de liens invalide dans l'argument '-fuse-ld = gold' *. J'ai également dû supprimer la cible armeabi en raison d'une erreur de débordement de relocalisation de l'éditeur de liens. [1]: https://stackoverflow.com/questions/44650470/android-ndk-linker-gstreamer-invalid-linker-name-fuse-ld-gold – Glenn

+0

Merci pour les commentaires positifs, c'est toujours bon à sachez que le fonctionnement par étapes fonctionne et que d'autres personnes connaissent le succès. J'ai édité le tutoriel en ajoutant les informations que le tutoriel est fait pour Linux (peut-être l'erreur que vous avez eue parce que vous l'avez fait sur Windows) et avec l'information pour enlever armeabi des filtres en cas d'essayer les tutoriels 2 et 3. Si un autre aura le même problème que vous avez eu sur Windows, je vais ajouter une autre étape, y compris le lien que vous avez utilisé pour résoudre votre problème. –

+0

@EduardoFernando à peu près sûr que c'est un problème de Windows en général - voir "Windows linkage problems" dans [GStreamer] (https://gstreamer.freedesktop.org/documentation/installing/for-android-development.html) mais la solution qu'ils fournir sur cette page n'a pas fonctionné pour moi (d'où ma réponse à la question liée). –