Jos*_*iki 6 android gstreamer android-ndk ndk-build
我一直试图让Gstreamer在Android工作室工作,按照他们的教程,在这里查看:
https://gstreamer.freedesktop.org/documentation/tutorials/android/link-against-gstreamer.html
但在最新的Android工作室中没有jni/Android.mk.我在哪里将代码放在该网页的末尾?
它应该进入CMakeLists.txt吗?或者应该有什么不同的东西?
或者我只是制作一个Android.mk文件,如果是的话,在哪里(因为没有jni文件夹,只有一个cpp文件夹)?如何告诉Android工作室在哪里可以找到我的Android.mk文件?
谢谢!
Edu*_*ndo 18
我已经从Gstreamer的网站上做了所有教程,但是很难.为了帮助另一个人,我记录了它.这里是linux(ubuntu)的教程,但也可以在windows上工作,如果你有任何疑问,请问:)...我还将链接一个项目从gitlab准备好在Android Studio中运行:(
教程5)
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导入项目.要将Gstreamer的Eclipse项目导入以下步骤:
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.在新窗口中:
现在,外部构建文件将出现在项目的左侧选项卡中.一些错误也会出现,这是正常的,将在下一节中予以纠正.
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','armeabi-v7a','arm64-v8a'
(编辑11/21/2017:最近我遇到了arm64-v8a的问题...... 64位赢得了设备没有显示直播,我解决了"删除arm64-v8a"
(编辑3/29/2018:我意识到可能需要根据您的Gstreamer和NDK版本删除更多架构,如果它不起作用尝试不同的删除组合)
5.将Gstreamer类复制到正确的路径.
上面显示的错误是因为没有GStreamer类来获取".init"函数.要解决这个问题,我们需要从提取它的文件中复制GStreamer类并粘贴到指定的路径:
6.从Android Studio禁用"Instante Run".(编辑于2017年10月27日)
Android Studio中的此功能可能会在尝试运行项目时出现问题,因此禁用它是一个好主意.
禁用"Instante Run":
1.在Android Studio上,转到"文件" - >"设置..."(Ctrl + Alt + S)
2."构建,执行,部署" - >"即时运行"
3.取消选中"在部署时启用"即时运行"以热交换代码/资源更改(默认启用)"
4.点击"应用"
7.修复"链接器黄金参数"(仅限WINDOWS用户)
尝试使用Windows时,您将收到错误:
Error:error: invalid linker name in argument '-fuse-ld=gold'
要修复它:
1.转到Android NDK Linker(GStreamer) - 无效的链接器名称-fuse-ld = gold
2.按照Antoine Zambelli的回答说明操作.
| 归档时间: |
|
| 查看次数: |
6242 次 |
| 最近记录: |