mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 11:11:08 +00:00
android: Port over to the CMake Cerbero SDK module
Also ensure the library's exports are properly declared, instead of relying on `-fvisibility=default` implicitly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7794>
This commit is contained in:
parent
410e77be6c
commit
126a9cec06
20 changed files with 250 additions and 29 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
.cxx/
|
||||||
.externalNativeBuild/
|
.externalNativeBuild/
|
||||||
assets/
|
assets/
|
||||||
gst-android-build/
|
gst-android-build/
|
||||||
|
|
|
@ -12,7 +12,7 @@ android {
|
||||||
|
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
def gstRoot
|
def gstRoot
|
||||||
|
|
||||||
if (project.hasProperty('gstAndroidRoot'))
|
if (project.hasProperty('gstAndroidRoot'))
|
||||||
|
@ -23,7 +23,7 @@ android {
|
||||||
if (gstRoot == null)
|
if (gstRoot == null)
|
||||||
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
||||||
|
|
||||||
arguments "NDK_APPLICATION_MK=jni/Application.mk", "GSTREAMER_JAVA_SRC_DIR=src", "GSTREAMER_ROOT_ANDROID=$gstRoot", "GSTREAMER_ASSETS_DIR=src/assets"
|
arguments "-DCMAKE_BUILD_TYPE=Release", "-DANDROID_STL=c++_shared", "-DGSTREAMER_ROOT_ANDROID=$gstRoot"
|
||||||
|
|
||||||
targets "tutorial-1"
|
targets "tutorial-1"
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
path 'jni/Android.mk'
|
path 'jni/CMakeLists.txt'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ndkVersion '25.2.9519653'
|
ndkVersion '25.2.9519653'
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
cmake_minimum_required(VERSION 3.18.1)
|
||||||
|
|
||||||
|
project("android-tutorial-1" LANGUAGES C CXX)
|
||||||
|
|
||||||
|
if(NOT DEFINED GSTREAMER_ROOT_ANDROID)
|
||||||
|
message(FATAL_ERROR "GSTREAMER_ROOT_ANDROID is not defined!")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ANDROID_ABI STREQUAL "armeabi")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "armeabi-v7a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/armv7")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "arm64-v8a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm64")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86_64")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86_64")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Target arch ABI not supported: ${ANDROID_ABI}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${GSTREAMER_ROOT}/share/cmake")
|
||||||
|
|
||||||
|
set(GSTREAMER_NDK_BUILD_PATH "${GSTREAMER_ROOT}/share/gst-android/ndk-build/")
|
||||||
|
set(GSTREAMER_PLUGINS coreelements)
|
||||||
|
find_library(LOG_LIB log REQUIRED)
|
||||||
|
find_package(GStreamerMobile COMPONENTS ${GSTREAMER_PLUGINS} fonts ca_certificates REQUIRED)
|
||||||
|
|
||||||
|
add_library(tutorial-1 SHARED tutorial-1.c dummy.cpp)
|
||||||
|
target_link_libraries(tutorial-1
|
||||||
|
PUBLIC
|
||||||
|
GStreamer::mobile
|
||||||
|
${ANDROID_LIB}
|
||||||
|
${LOG_LIB}
|
||||||
|
)
|
||||||
|
set_target_properties(tutorial-1
|
||||||
|
PROPERTIES
|
||||||
|
C_VISIBILITY_PRESET hidden
|
||||||
|
CXX_VISIBILITY_PRESET hidden
|
||||||
|
)
|
|
@ -20,7 +20,7 @@ static JNINativeMethod native_methods[] = {
|
||||||
(void *) gst_native_get_gstreamer_info}
|
(void *) gst_native_get_gstreamer_info}
|
||||||
};
|
};
|
||||||
|
|
||||||
jint
|
JNIEXPORT jint
|
||||||
JNI_OnLoad (JavaVM * vm, void *reserved)
|
JNI_OnLoad (JavaVM * vm, void *reserved)
|
||||||
{
|
{
|
||||||
JNIEnv *env = NULL;
|
JNIEnv *env = NULL;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
.cxx/
|
||||||
.externalNativeBuild/
|
.externalNativeBuild/
|
||||||
assets/
|
assets/
|
||||||
gst-android-build/
|
gst-android-build/
|
||||||
|
|
|
@ -12,7 +12,7 @@ android {
|
||||||
|
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
def gstRoot
|
def gstRoot
|
||||||
|
|
||||||
if (project.hasProperty('gstAndroidRoot'))
|
if (project.hasProperty('gstAndroidRoot'))
|
||||||
|
@ -23,7 +23,7 @@ android {
|
||||||
if (gstRoot == null)
|
if (gstRoot == null)
|
||||||
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
||||||
|
|
||||||
arguments "NDK_APPLICATION_MK=jni/Application.mk", "GSTREAMER_JAVA_SRC_DIR=src", "GSTREAMER_ROOT_ANDROID=$gstRoot", "GSTREAMER_ASSETS_DIR=src/assets"
|
arguments "-DCMAKE_BUILD_TYPE=Release", "-DANDROID_STL=c++_shared", "-DGSTREAMER_ROOT_ANDROID=$gstRoot"
|
||||||
|
|
||||||
targets "tutorial-2"
|
targets "tutorial-2"
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
path 'jni/Android.mk'
|
path 'jni/CMakeLists.txt'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ndkVersion '25.2.9519653'
|
ndkVersion '25.2.9519653'
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
cmake_minimum_required(VERSION 3.18.1)
|
||||||
|
|
||||||
|
project("android-tutorial-2" LANGUAGES C CXX)
|
||||||
|
|
||||||
|
if(NOT DEFINED GSTREAMER_ROOT_ANDROID)
|
||||||
|
message(FATAL_ERROR "GSTREAMER_ROOT_ANDROID is not defined!")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ANDROID_ABI STREQUAL "armeabi")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "armeabi-v7a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/armv7")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "arm64-v8a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm64")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86_64")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86_64")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Target arch ABI not supported: ${ANDROID_ABI}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${GSTREAMER_ROOT}/share/cmake")
|
||||||
|
|
||||||
|
set(GSTREAMER_NDK_BUILD_PATH "${GSTREAMER_ROOT}/share/gst-android/ndk-build/")
|
||||||
|
include("${GSTREAMER_NDK_BUILD_PATH}/plugins.cmake")
|
||||||
|
set(GSTREAMER_PLUGINS ${GSTREAMER_PLUGINS_CORE} ${GSTREAMER_PLUGINS_SYS})
|
||||||
|
find_library(LOG_LIB log REQUIRED)
|
||||||
|
find_package(GStreamerMobile COMPONENTS ${GSTREAMER_PLUGINS} fonts ca_certificates REQUIRED)
|
||||||
|
|
||||||
|
add_library(tutorial-2 SHARED tutorial-2.c dummy.cpp)
|
||||||
|
target_link_libraries(tutorial-2
|
||||||
|
PUBLIC
|
||||||
|
GStreamer::mobile
|
||||||
|
${LOG_LIB}
|
||||||
|
)
|
||||||
|
set_target_properties(tutorial-2
|
||||||
|
PROPERTIES
|
||||||
|
C_VISIBILITY_PRESET hidden
|
||||||
|
CXX_VISIBILITY_PRESET hidden
|
||||||
|
)
|
|
@ -303,7 +303,7 @@ static JNINativeMethod native_methods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Library initializer */
|
/* Library initializer */
|
||||||
jint
|
JNIEXPORT jint
|
||||||
JNI_OnLoad (JavaVM * vm, void *reserved)
|
JNI_OnLoad (JavaVM * vm, void *reserved)
|
||||||
{
|
{
|
||||||
JNIEnv *env = NULL;
|
JNIEnv *env = NULL;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
.cxx/
|
||||||
.externalNativeBuild/
|
.externalNativeBuild/
|
||||||
assets/
|
assets/
|
||||||
gst-android-build/
|
gst-android-build/
|
||||||
|
|
|
@ -12,7 +12,7 @@ android {
|
||||||
|
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
def gstRoot
|
def gstRoot
|
||||||
|
|
||||||
if (project.hasProperty('gstAndroidRoot'))
|
if (project.hasProperty('gstAndroidRoot'))
|
||||||
|
@ -23,7 +23,7 @@ android {
|
||||||
if (gstRoot == null)
|
if (gstRoot == null)
|
||||||
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
||||||
|
|
||||||
arguments "NDK_APPLICATION_MK=jni/Application.mk", "GSTREAMER_JAVA_SRC_DIR=src", "GSTREAMER_ROOT_ANDROID=$gstRoot", "GSTREAMER_ASSETS_DIR=src/assets"
|
arguments "-DCMAKE_BUILD_TYPE=Release", "-DANDROID_STL=c++_shared", "-DGSTREAMER_ROOT_ANDROID=$gstRoot"
|
||||||
|
|
||||||
targets "tutorial-3"
|
targets "tutorial-3"
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
path 'jni/Android.mk'
|
path 'jni/CMakeLists.txt'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ndkVersion '25.2.9519653'
|
ndkVersion '25.2.9519653'
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
cmake_minimum_required(VERSION 3.18.1)
|
||||||
|
|
||||||
|
project("android-tutorial-3" LANGUAGES C CXX)
|
||||||
|
|
||||||
|
if(NOT DEFINED GSTREAMER_ROOT_ANDROID)
|
||||||
|
message(FATAL_ERROR "GSTREAMER_ROOT_ANDROID is not defined!")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ANDROID_ABI STREQUAL "armeabi")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "armeabi-v7a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/armv7")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "arm64-v8a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm64")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86_64")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86_64")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Target arch ABI not supported: ${ANDROID_ABI}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${GSTREAMER_ROOT}/share/cmake")
|
||||||
|
|
||||||
|
set(GSTREAMER_NDK_BUILD_PATH "${GSTREAMER_ROOT}/share/gst-android/ndk-build/")
|
||||||
|
include("${GSTREAMER_NDK_BUILD_PATH}/plugins.cmake")
|
||||||
|
set(GSTREAMER_PLUGINS ${GSTREAMER_PLUGINS_CORE} ${GSTREAMER_PLUGINS_SYS} ${GSTREAMER_PLUGINS_EFFECTS})
|
||||||
|
set(GStreamer_EXTRA_DEPS gstreamer-video-1.0 gobject-2.0)
|
||||||
|
find_library(ANDROID_LIB android REQUIRED)
|
||||||
|
find_library(LOG_LIB log REQUIRED)
|
||||||
|
find_package(GStreamerMobile COMPONENTS ${GSTREAMER_PLUGINS} fonts ca_certificates REQUIRED)
|
||||||
|
|
||||||
|
add_library(tutorial-3 SHARED tutorial-3.c dummy.cpp)
|
||||||
|
target_link_libraries(tutorial-3
|
||||||
|
PUBLIC
|
||||||
|
GStreamer::mobile
|
||||||
|
${ANDROID_LIB}
|
||||||
|
${LOG_LIB}
|
||||||
|
)
|
||||||
|
set_target_properties(tutorial-3
|
||||||
|
PROPERTIES
|
||||||
|
C_VISIBILITY_PRESET hidden
|
||||||
|
CXX_VISIBILITY_PRESET hidden
|
||||||
|
)
|
|
@ -379,7 +379,7 @@ static JNINativeMethod native_methods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Library initializer */
|
/* Library initializer */
|
||||||
jint
|
JNIEXPORT jint
|
||||||
JNI_OnLoad (JavaVM * vm, void *reserved)
|
JNI_OnLoad (JavaVM * vm, void *reserved)
|
||||||
{
|
{
|
||||||
JNIEnv *env = NULL;
|
JNIEnv *env = NULL;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
.cxx/
|
||||||
.externalNativeBuild/
|
.externalNativeBuild/
|
||||||
assets/
|
assets/
|
||||||
gst-android-build/
|
gst-android-build/
|
||||||
|
|
|
@ -12,7 +12,7 @@ android {
|
||||||
|
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
def gstRoot
|
def gstRoot
|
||||||
|
|
||||||
if (project.hasProperty('gstAndroidRoot'))
|
if (project.hasProperty('gstAndroidRoot'))
|
||||||
|
@ -23,7 +23,7 @@ android {
|
||||||
if (gstRoot == null)
|
if (gstRoot == null)
|
||||||
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
||||||
|
|
||||||
arguments "NDK_APPLICATION_MK=jni/Application.mk", "GSTREAMER_JAVA_SRC_DIR=src", "GSTREAMER_ROOT_ANDROID=$gstRoot", "GSTREAMER_ASSETS_DIR=src/assets"
|
arguments "-DCMAKE_BUILD_TYPE=Release", "-DANDROID_STL=c++_shared", "-DGSTREAMER_ROOT_ANDROID=$gstRoot"
|
||||||
|
|
||||||
targets "tutorial-4"
|
targets "tutorial-4"
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
path 'jni/Android.mk'
|
path 'jni/CMakeLists.txt'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ndkVersion '25.2.9519653'
|
ndkVersion '25.2.9519653'
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
cmake_minimum_required(VERSION 3.18.1)
|
||||||
|
|
||||||
|
project("android-tutorial-4" LANGUAGES C CXX)
|
||||||
|
|
||||||
|
if(NOT DEFINED GSTREAMER_ROOT_ANDROID)
|
||||||
|
message(FATAL_ERROR "GSTREAMER_ROOT_ANDROID is not defined!")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ANDROID_ABI STREQUAL "armeabi")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "armeabi-v7a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/armv7")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "arm64-v8a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm64")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86_64")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86_64")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Target arch ABI not supported: ${ANDROID_ABI}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${GSTREAMER_ROOT}/share/cmake")
|
||||||
|
|
||||||
|
set(GSTREAMER_NDK_BUILD_PATH "${GSTREAMER_ROOT}/share/gst-android/ndk-build/")
|
||||||
|
include("${GSTREAMER_NDK_BUILD_PATH}/plugins.cmake")
|
||||||
|
set(GSTREAMER_PLUGINS ${GSTREAMER_PLUGINS_CORE} ${GSTREAMER_PLUGINS_PLAYBACK} ${GSTREAMER_PLUGINS_CODECS} ${GSTREAMER_PLUGINS_NET} ${GSTREAMER_PLUGINS_SYS})
|
||||||
|
set(GStreamer_EXTRA_DEPS gstreamer-video-1.0)
|
||||||
|
set(G_IO_MODULES openssl)
|
||||||
|
find_library(ANDROID_LIB android REQUIRED)
|
||||||
|
find_library(LOG_LIB log REQUIRED)
|
||||||
|
find_package(GStreamerMobile COMPONENTS ${GSTREAMER_PLUGINS} fonts ca_certificates REQUIRED)
|
||||||
|
|
||||||
|
add_library(tutorial-4 SHARED tutorial-4.c dummy.cpp)
|
||||||
|
target_link_libraries(tutorial-4
|
||||||
|
PUBLIC
|
||||||
|
GStreamer::mobile
|
||||||
|
${ANDROID_LIB}
|
||||||
|
${LOG_LIB}
|
||||||
|
)
|
||||||
|
set_target_properties(tutorial-4
|
||||||
|
PROPERTIES
|
||||||
|
C_VISIBILITY_PRESET hidden
|
||||||
|
CXX_VISIBILITY_PRESET hidden
|
||||||
|
)
|
|
@ -650,7 +650,7 @@ static JNINativeMethod native_methods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Library initializer */
|
/* Library initializer */
|
||||||
jint
|
JNIEXPORT jint
|
||||||
JNI_OnLoad (JavaVM * vm, void *reserved)
|
JNI_OnLoad (JavaVM * vm, void *reserved)
|
||||||
{
|
{
|
||||||
JNIEnv *env = NULL;
|
JNIEnv *env = NULL;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
.cxx/
|
||||||
.externalNativeBuild/
|
.externalNativeBuild/
|
||||||
assets/
|
assets/
|
||||||
gst-android-build/
|
gst-android-build/
|
||||||
|
|
|
@ -12,7 +12,7 @@ android {
|
||||||
|
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
def gstRoot
|
def gstRoot
|
||||||
|
|
||||||
if (project.hasProperty('gstAndroidRoot'))
|
if (project.hasProperty('gstAndroidRoot'))
|
||||||
|
@ -23,7 +23,7 @@ android {
|
||||||
if (gstRoot == null)
|
if (gstRoot == null)
|
||||||
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
throw new GradleException('GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries')
|
||||||
|
|
||||||
arguments "NDK_APPLICATION_MK=jni/Application.mk", "GSTREAMER_JAVA_SRC_DIR=src", "GSTREAMER_ROOT_ANDROID=$gstRoot", "GSTREAMER_ASSETS_DIR=src/assets"
|
arguments "-DCMAKE_BUILD_TYPE=Release", "-DANDROID_STL=c++_shared", "-DGSTREAMER_ROOT_ANDROID=$gstRoot"
|
||||||
|
|
||||||
targets "tutorial-5"
|
targets "tutorial-5"
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
ndkBuild {
|
cmake {
|
||||||
path 'jni/Android.mk'
|
path 'jni/CMakeLists.txt'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ndkVersion '25.2.9519653'
|
ndkVersion '25.2.9519653'
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
cmake_minimum_required(VERSION 3.18.1)
|
||||||
|
|
||||||
|
project("android-tutorial-5" LANGUAGES C CXX)
|
||||||
|
|
||||||
|
if(NOT DEFINED GSTREAMER_ROOT_ANDROID)
|
||||||
|
message(FATAL_ERROR "GSTREAMER_ROOT_ANDROID is not defined!")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ANDROID_ABI STREQUAL "armeabi")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "armeabi-v7a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/armv7")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "arm64-v8a")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/arm64")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86")
|
||||||
|
elseif(ANDROID_ABI STREQUAL "x86_64")
|
||||||
|
set(GSTREAMER_ROOT "${GSTREAMER_ROOT_ANDROID}/x86_64")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Target arch ABI not supported: ${ANDROID_ABI}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${GSTREAMER_ROOT}/share/cmake")
|
||||||
|
|
||||||
|
set(GSTREAMER_NDK_BUILD_PATH "${GSTREAMER_ROOT}/share/gst-android/ndk-build/")
|
||||||
|
include("${GSTREAMER_NDK_BUILD_PATH}/plugins.cmake")
|
||||||
|
set(GSTREAMER_PLUGINS ${GSTREAMER_PLUGINS_CORE} ${GSTREAMER_PLUGINS_PLAYBACK} ${GSTREAMER_PLUGINS_CODECS} ${GSTREAMER_PLUGINS_NET} ${GSTREAMER_PLUGINS_SYS})
|
||||||
|
set(GStreamer_EXTRA_DEPS gstreamer-video-1.0)
|
||||||
|
set(G_IO_MODULES openssl)
|
||||||
|
find_library(ANDROID_LIB android REQUIRED)
|
||||||
|
find_library(LOG_LIB log REQUIRED)
|
||||||
|
find_package(GStreamerMobile COMPONENTS ${GSTREAMER_PLUGINS} fonts ca_certificates REQUIRED)
|
||||||
|
|
||||||
|
add_library(tutorial-5 SHARED tutorial-5.c dummy.cpp)
|
||||||
|
target_link_libraries(tutorial-5
|
||||||
|
PUBLIC
|
||||||
|
GStreamer::mobile
|
||||||
|
${ANDROID_LIB}
|
||||||
|
${LOG_LIB}
|
||||||
|
)
|
||||||
|
set_target_properties(tutorial-5
|
||||||
|
PROPERTIES
|
||||||
|
C_VISIBILITY_PRESET hidden
|
||||||
|
CXX_VISIBILITY_PRESET hidden
|
||||||
|
)
|
|
@ -660,7 +660,7 @@ static JNINativeMethod native_methods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Library initializer */
|
/* Library initializer */
|
||||||
jint
|
JNIEXPORT jint
|
||||||
JNI_OnLoad (JavaVM * vm, void *reserved)
|
JNI_OnLoad (JavaVM * vm, void *reserved)
|
||||||
{
|
{
|
||||||
JNIEnv *env = NULL;
|
JNIEnv *env = NULL;
|
||||||
|
|
Loading…
Reference in a new issue