J'essaie d'exécuter le gstreamer Android tutorial-5 in Android Sudio 3.5 ( https://gitlab.freedesktop.org/gstreamer/ gst-docs/tree/master/examples/tutorials/Android) (https://gitlab.com/eduardoprado/gstreamer-tutorial5) mais obtenez l'erreur suivante:
ERROR: Cause: executing external native build for ndkBuild C:\Users\Downloads\gst_docs_master_examples_tutorials_Android\examples\tutorials\Android\android-tutorial-1\jni\Android.mk.
J'ai suivi à la fois les tutoriels gstreamer Android sur le site Web gstreamer ainsi que le thread stackoverflow Exemples Gstreamer dans Android Studio .
Le premier objectif est de faire fonctionner le gstreamer sur Android studio.
Il y a des threads dont l'erreur est liée aux espaces blancs dans le répertoire du chemin mais j'ai vérifié et tous les dossiers n'ont pas d'espace blanc. Vous trouverez ci-dessous certains des fichiers avec lesquels j'ai travaillé et que j'ai adapté pour exécuter le didacticiel.
J'ai également défini ma variable d'environnement Windows GSTREAMER_ROOT_Android sur les binaires gstreamer décompressés ainsi que dans le fichier Android.mk.
fichier local.properties
## This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Mon Sep 09 08:16:12 EDT 2019
sdk.dir=C\:\\Users\\AppData\\Local\\Android\\Sdk
ndk.dir=C\:\\Users\\AppData\\Local\\Android\\Sdk\\ndk\\20.0.5594570
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := tutorial-5
LOCAL_SRC_FILES := tutorial-5.c
LOCAL_SHARED_LIBRARIES := gstreamer_Android
LOCAL_LDLIBS := -llog -landroid
include $(BUILD_SHARED_LIBRARY)
GSTREAMER_ROOT_Android := C\:\\gstreamer_Android_binaries
ifndef GSTREAMER_ROOT_Android
$(error GSTREAMER_ROOT_Android is not defined!)
endif
ifeq ($(TARGET_Arch_ABI),armeabi)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_Android)/arm
else ifeq ($(TARGET_Arch_ABI),armeabi-v7a)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_Android)/armv7
else ifeq ($(TARGET_Arch_ABI),arm64-v8a)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_Android)/arm64
else ifeq ($(TARGET_Arch_ABI),x86)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_Android)/x86
else ifeq ($(TARGET_Arch_ABI),x86_64)
GSTREAMER_ROOT := $(GSTREAMER_ROOT_Android)/x86_64
else
$(error Target Arch ABI not supported: $(TARGET_Arch_ABI))
endif
GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_ROOT)/share/gst-Android/ndk-build/
include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk
GSTREAMER_PLUGINS := $(GSTREAMER_PLUGINS_CORE) $(GSTREAMER_PLUGINS_PLAYBACK) $(GSTREAMER_PLUGINS_CODECS) $(GSTREAMER_PLUGINS_NET) $(GSTREAMER_PLUGINS_SYS)
G_IO_MODULES := gnutls
GSTREAMER_EXTRA_DEPS := gstreamer-video-1.0
include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk
build.gradle (application)
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 29
buildToolsVersion "26.0.3"
defaultConfig {
applicationId "com.gst_sdk_tutorials.tutorial_5"
minSdkVersion 14
targetSdkVersion 29
externalNativeBuild {
ndkBuild {
arguments "V=1"
}
}
ndk {
moduleName "tutorial-5"
abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
}
}
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
}
build.gradle (projet)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.5.0'
}
}
allprojects {
repositories {
jcenter()
}
}
gradle-wrapper.properties
#Mon Sep 09 14:10:17 EDT 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.Zip
[~ # ~] mise à jour [~ # ~] Ajout de l'argument "V = 1" à la section ndkBuild et a reçu la même erreur:
ERROR: Cause: executing external native build for ndkBuild C:\Users\Downloads\gstreamer-tutorial5-master\app\src\main\jni\Android.mk
Il est possible que les chemins que vous utilisez soient tout simplement trop longs pour la ligne de commande Windows. Pour mieux comprendre ce qui se passe, ajoutez "V=1"
à la liste des arguments pour ndkBuild, et vous verrez toutes les commandes de build au fur et à mesure de leur exécution dans votre console de build.
Les configurations arguments
appartiennent au Android.defaultConfig.externalNativeBuild.ndkBuild
section, pas Android.externalNativeBuild.ndkBuild
. Voir les documents: https://developer.Android.com/ndk/guides/cmake#variables