android ijk 播放器,ijkplayer 播放器:在Android端进行native调试

本文详细介绍了如何在Android Studio中对ijkplayer进行源码调试,包括遇到的问题、解决思路和解决重点,涉及ijkplayer工程的多个文件修改,以实现对ijkplayer native模块的调试。
摘要由CSDN通过智能技术生成

前言

ijkplayer是B站开源的基于FFmpeg的轻量级Android/iOS视频播放器,强烈建议在定制的播放器的时候以ijkplayer为基础进行二次开发。

对于二次开发时代码的调试时一件重中之重的事情;在iOS平台,ijkplayer可以直接在Xcode进行c/c++源码的debug调试工作,而Android平台的demo工程依赖的是ijkplayer编译完毕的so文件,而不是直接关联到ijkplayer的Android.mk编译脚本文件,所以要对c/c++这些native源码的调试的话就需要多折腾一些工作。

可能遇到的问题

如果我们要在Android Studio里面对ijkplayer的native进行调试,很开心的是官方提供了这么一个流程:

If you want to enable debugging ijkplayer(native modules) on Android Studio 2.2+: (experimental)

sh android/patch-debugging-with-lldb.sh armv7a

Install Android Studio 2.2(+)

Preference -> Android SDK -> SDK Tools

Select (LLDB, NDK, Android SDK Build-tools,Cmake) and install

Open an existing Android Studio project

Select android/ijkplayer

Sync Project with Gradle Files

Run -> Edit Configurations -> Debugger -> Symbol Directories

Add "ijkplayer-armv7a/.externalNativeBuild/ndkBuild/release/obj/local/armeabi-v7a" to Symbol Directories

Run -> Debug 'ijkplayer-example'

if you want to reverse patches:

sh patch-debugging-with-lldb.sh reverse armv7a

清楚明了对吧,but,几乎所有人都会遇到这一个问题,当你执行这句命令的时候:

sh android/patch-debugging-with-lldb.sh armv7a

恭喜你,一般你都会发现如下错误:

patch apply ==> armv7a

git apply ==> patches/0001-gitignore-ignore-.externalNativeBuild.patch

git apply ==> patches/0002-gradle-upgrade-build-tool-to-2.2.0-beta2.patch

error: patch failed: android/ijkplayer/ijkplayer-example/build.gradle:44

error: android/ijkplayer/ijkplayer-example/build.gradle: patch does not apply

git apply ==> patches/0003-armv7a-enable-debugging-with-LLDB.patch

error: patch failed: ijkmedia/ijkplayer/Android.mk:59

error: ijkmedia/ijkplayer/Android.mk: patch does not apply

error: patch failed: ijkmedia/ijksdl/Android.mk:70

error: ijkmedia/ijksdl/Android.mk: patch does not apply

git apply ==> patches/0004-armv7a-link-prebuilt-staic-libraries-of-ffmepg.patch

what?这个脚本竟然是有问题的!

当然这是因为这个脚本是用git一些修改patch进行代码还原,但是但是,由于这个脚本已经太久没有更新了,而ijkplayer的一些代码结构又有调整导致脚本无法从patch文件附带的这些信息把代码正确还原回去。

解决思路

我们通过查看patch-debugging-with-lldb.sh,可以发现我们只需要按照以下几个patch文件做对应源码修改就可以达到调试的目的:

andr

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值