[Android 外挂字幕维护Note ]一次字幕版本release的心酸过程
2016-10-29 11:44
615 查看
客户(AN4.4的平台)报了一个sub字幕显示不了的问题,好吧,看。拿开发板烧image,拿最新的subtitle lib一替换之后,sub字幕显示了哈,开心。
然而,字幕竟然不同步,哼。一想,应该是帧率没有跟上,毕竟sub字幕文件如果没有给出帧率,那么就要有mstplayer给帧率。
然后查了下git的log历史,哈,真是已经上过code了,更新libmmp.so之后一看,嗯,同步搞定了哈。
事情到这我以为结束了,但其实才刚刚开始..
下午Fae RTX告诉我,验证是OK了,但是subtitle 单独编译能通过,mmp编译不行啦,在头文件和so替换最新的情况下。XD.
那边FAE的小leader又在追杀,搞得我火燎火急的看到底编译哪里出错了。一编译,晕,怎么会是条件编译的地方出错呢,不应该呀,绝对不会呀。
然后静下心来再三看几遍,确实是没看出什么问题。
这里是字幕的头文件
#if defined(JB_41) || defined(JB_42)
void SetISurfaceTexture(const sp<ISurfaceTexture> &isurfacetexture);
#else
void SetIGraphicBufferProducer(const sp<IGraphicBufferProducer> &graphicbufferproducer);
#endif
mmp的头文件是这样的
#ifndef JB_43
#include <gui/ISurfaceTexture.h>
#define IGraphicBufferProducer ISurfaceTexture
#else
#include <gui/IGraphicBufferProducer.h>
#endif
编译的时候提示ISurfaceTexture这个类找不到。字幕的头文件的话 4.4编译那么应该是走SetIGraphicBufferProducer呀。
然后mmp也是会声明 IGraphicBufferProducer的呀。这样ok呀,为啥会错呢。
搞不懂。因为mmp的头文件不能修改,所以字幕的头文件出错的条件编译地方,我保留了下来,只是更新最新的头文件的剩余地方的code。
然后再编译可以ok了。
这边mmp编译过去了,但是还有一步要做,那就是要重新buid subtitle的so,因这边mmp下面的subtitle头文件没有全部更新,
那么在新的subtitle lib里面就要使用旧版的条件编译的代码。
这里必须吐槽下subtitle的管理,竟然没有版本号的说明,客户的板子对应哪个版本都找不到,伤。。
然后在最新的subtitle的头文件中改用旧版的条件编译。
改完之后,一编译,错误。我没有修改cpp文件的条件编译,当然错。该打脸 。
于是修改了新版subtitle的cpp 文件中条件编译为旧版模式
然后再重新编译,还错。再打脸。我使用的是新版的MK文件编译,应该是这里出错。
然后再找到旧版的MK文件:9731ef57bd14a634f3d32c32ae486598dfc4f596(CL)
然后直接替换,再编译,终于在4.4平台编译过去了最新版的subtitle lib。
最后是上code release.使用symbols目录下的lib替换了subtitle 4.4下面的两个lib,
然后是git 提交修改的头文件,至此。4.4的subtitle 版本release完毕...
然而,字幕竟然不同步,哼。一想,应该是帧率没有跟上,毕竟sub字幕文件如果没有给出帧率,那么就要有mstplayer给帧率。
然后查了下git的log历史,哈,真是已经上过code了,更新libmmp.so之后一看,嗯,同步搞定了哈。
事情到这我以为结束了,但其实才刚刚开始..
下午Fae RTX告诉我,验证是OK了,但是subtitle 单独编译能通过,mmp编译不行啦,在头文件和so替换最新的情况下。XD.
那边FAE的小leader又在追杀,搞得我火燎火急的看到底编译哪里出错了。一编译,晕,怎么会是条件编译的地方出错呢,不应该呀,绝对不会呀。
然后静下心来再三看几遍,确实是没看出什么问题。
这里是字幕的头文件
#if defined(JB_41) || defined(JB_42)
void SetISurfaceTexture(const sp<ISurfaceTexture> &isurfacetexture);
#else
void SetIGraphicBufferProducer(const sp<IGraphicBufferProducer> &graphicbufferproducer);
#endif
mmp的头文件是这样的
#ifndef JB_43
#include <gui/ISurfaceTexture.h>
#define IGraphicBufferProducer ISurfaceTexture
#else
#include <gui/IGraphicBufferProducer.h>
#endif
编译的时候提示ISurfaceTexture这个类找不到。字幕的头文件的话 4.4编译那么应该是走SetIGraphicBufferProducer呀。
然后mmp也是会声明 IGraphicBufferProducer的呀。这样ok呀,为啥会错呢。
搞不懂。因为mmp的头文件不能修改,所以字幕的头文件出错的条件编译地方,我保留了下来,只是更新最新的头文件的剩余地方的code。
然后再编译可以ok了。
这边mmp编译过去了,但是还有一步要做,那就是要重新buid subtitle的so,因这边mmp下面的subtitle头文件没有全部更新,
那么在新的subtitle lib里面就要使用旧版的条件编译的代码。
这里必须吐槽下subtitle的管理,竟然没有版本号的说明,客户的板子对应哪个版本都找不到,伤。。
然后在最新的subtitle的头文件中改用旧版的条件编译。
改完之后,一编译,错误。我没有修改cpp文件的条件编译,当然错。该打脸 。
于是修改了新版subtitle的cpp 文件中条件编译为旧版模式
然后再重新编译,还错。再打脸。我使用的是新版的MK文件编译,应该是这里出错。
然后再找到旧版的MK文件:9731ef57bd14a634f3d32c32ae486598dfc4f596(CL)
然后直接替换,再编译,终于在4.4平台编译过去了最新版的subtitle lib。
最后是上code release.使用symbols目录下的lib替换了subtitle 4.4下面的两个lib,
然后是git 提交修改的头文件,至此。4.4的subtitle 版本release完毕...
相关文章推荐
- [Android 外挂字幕维护Note] MakeFile文件修改添加
- 详解cocos2dx 3.0的release版本在android平台的签名过程
- React-Native之Android端用cmd生成android.keystore,并打包为Release版本的APK过程
- 详解cocos2dx 3.0的release版本在android平台的签名过程
- 利用Ant 做Android自动化编译实现自动签名, 以及一次生成多个渠道版本.
- 生成release版本的Android系统
- Android apk系列2-------系统签名(生成release版本的系统)
- android4 编辑release版本 及相关问题
- Android c++ Release 和debug版本区别
- 最近一次Android源码编译过程
- 生成release版本的Android系统 --签名
- Fedora13 (DVD版本)下编译 android2.2 的过程
- Android apk系列2-------系统签名(生成release版本的系统)
- oracle数据库升级记(记一次10.2.0.3版本升级到11.2.0.1版本的过程)
- 生成release版本的Android系统
- 生成release版本的Android系统
- Android 播放器外挂字幕支持测试
- Android中Log.d和Log.v如何实现在release版本不输出
- 【转载】生成release版本的Android系统 --签名
- 生成release版本的Android系统