https://gstreamer.freedesktop.org/documentation/tutorials/android/link-against-gstreamer.html
但在最新的Android工作室中没有jni / Android.mk.我在哪里将代码放在该网页的末尾?
它应该进入CMakeLists.txt吗?或者应该有什么不同的东西?
或者我只是制作一个Android.mk文件,如果是的话,在哪里(因为没有jni文件夹,只有一个cpp文件夹)?如何告诉Android工作室在哪里可以找到我的Android.mk文件?
谢谢!
解决方法
https://gitlab.com/eduardoprado/gstreamer-tutorial5.git(教程2) https://gitlab.com/eduardoprado/gstreamer-tutorial2.git
在Android Studio上使用该库
理解GStreamer并将其集成到项目中的最佳方法是在本网站上进行教程:
对不起,您必须自己找到链接,我没有声望发布直接链接
但是这些教程已经很老了,并且在Eclipse中工作,为了使用Android Studio,必须:
1.使用Android Studio的导入选项导入教程;
2.将Android Studio设置为使用NDK;
3.在“Android.mk”文件中设置变量;
4.设置Gradle只编译一些架构;
5.将Gstreamer类复制到正确的路径.
6.从Android Studio禁用“Instante Run”. (编辑10/27/2017)
7.修复“链接器黄金参数”(仅限WINDOWS用户编辑11/28/2017)
以下各节将解释这些说明中的每一条:
1.使用Android Studio的导入选项导入教程
Android Studio可以选择从其他IDE导入项目.要将对Eclipse进行的Gstreamer项目导入以下步骤:
1.从git下载所有教程:;
2.在Android Studio中,转到文件 – >新进口项目;
3.在新的文件浏览器屏幕中,转到“gst-docs”,选择所需的项目(在我的案例教程5中)“android-tutorial-5”并点击“确定”.
2.将Android Studio设置为使用NDK
现在项目已导入,需要通知Android Studio项目使用NDK框架.因此,Gradle将能够导入和处理所有依赖项.
为此,我们需要链接文件Android.mk(已在教程文件夹中):
1.右键单击左侧导航选项卡中的“app”
2.单击“使用Gradle链接C项目”
3.在新窗口中:
>将“构建系统”从“CMake”更改为“ndk-build”
>单击“…”并浏览到Android.mk的位置“/AndroidStudioProjects/android-studio-5/app/src/jni/Android.mk”
>点击确定
现在,外部构建文件将出现在项目的左侧选项卡中.一些错误也会出现,这是正常的,将在下一节中予以纠正.
3.在“Android.mk”文件中设置变量
发生最后一部分错误是因为“Android.mk”找不到GStreamer被提取的路径.因此,让我们将GSTREAMER_ROOT_ANDROID变量设置为提取GStreamer的路径.
为达到这个:
1.浏览左侧选项卡,展开“External Build FIles”;
2.双击Android.mk打开文件;
3.在第10行,在“include $(BUILD_SHARED_LIBRARY)”下,键入:
– “GSTREAMER_ROOT_ANDROID:= path”
– 没有引号
– path是显然提取GStreamer的路径.
Gradle将同步后,将显示错误“***目标拱ABI不支持:mips.停止”.
4.设置Gradle只编译一些架构
发生最后一部分错误是因为Grade尝试为不同的体系结构构建,但它找不到要在MIPS中构建的文件.要解决此问题,我们将指定要构建的体系结构,不包括MIPS:
1.在左侧浏览器选项卡中,展开Gradle Scripts;
2.双击“build.gradle(Module:app)”
3.在“moduleName”下的行中输入:(运行教程5)
– abiFilters’x86′,’armeabi’,’armeabi-v7a’,’arm64-v8a’
(运行教程2)
– abiFilters’x86′,’arm64-v8a’
(编辑11/21/2017:最近我遇到arm64-v8a的问题… 64位设备不显示直播,我解决了“删除arm64-v8a”的问题)
(编辑3/29/2018:我意识到根据您的Gstreamer和NDK版本可能需要删除更多架构,如果它不起作用尝试不同的删除组合)
5.将Gstreamer类复制到正确的路径.
上面显示的错误是因为没有GStreamer类来获取“.init”函数.要解决这个问题,我们需要从提取它的文件中复制GStreamer类并粘贴到指定的路径:
>使用系统中的文件管理器浏览到解压缩GStreamer的文件.
>从提取的文件中,浏览到GStreamer类的位置.它位于/arm/share/gst-android/ndk-build/GStreamer.java
复制GStreamer.java
>返回Android Studio并创建Main类尝试从左侧浏览器选项卡中的/ app / java开始访问的导入路径.因此,对于上图,我们必须创建路径org.freedesktop.gstreamer并将文件GStreamer.java粘贴到其中:
>右键单击java Folder
>新 – >包
>输入org.freedesktop.gstreamer
>右键单击org.freedesktop.gstreamer并粘贴
5.现在已解决导入错误,但新类有错误.要解决这些问题,您只需从复制的类中删除“@”以及位于“@”之间的所有内容.
6.从Android Studio禁用“Instante Run”. (编辑27/10/2017)
Android Studio中的此功能可能会在尝试运行项目时出现问题,因此禁用它是一个好主意.
禁用“Instante Run”:
1.在Android Studio上转到“文件” – > “设置…”(Ctrl Alt S)
2.“构建,执行,部署” – > “即时奔跑”
3.取消选中“在部署时启用即时运行以热插拔代码/资源更改(默认启用)”
4.点击“应用”
尝试使用Windows时,您将收到错误消息:
错误:错误:参数’-fuse-ld = gold’中的链接器名称无效
要解决这个问题:
1.转到Android NDK Linker (GStreamer) – invalid linker name -fuse-ld=gold2.按照Antoine Zambelli的回答说明进行操作.