前言
有些时候没有写些东西了,最近一直忙于公司里的全景相机项目,头都整大,如果后期有空,我也想将走过来遇到的大小问题在这里啰嗦一下,也算是总结吧。至于今天为什么会说到这个主题,主要是在做全景相机项目时,需要设备这边录制4K的全景视频,最开始想着用MediaRecorder直接去录像,后来发现路途其坎坷啊,我们公司是用的MTK6797方案,在参考各方文档和网络资源之后就开始使用MediaRecorder进行录像,发现用这个工具类只能录制1080p以下的视频,而项目需求是4K视频编码呀,当时看到这样的结果,心都凉了,后来看到MTK6797的datasheet,发现硬件编码用MediaCodec编码成H265可以达到4K,当时希望的曙光再次升起,然并卵,自己试了多种方案依旧没有配置好,在心塞之时,想起了系统自带有Camera应用,想着看看系统本身的应用是否能录制4K的视频呢,当然结果是理想的,系统本身是可以录制成功的,而且还是H265编码。说了这么多铺垫,您这下明白为什么会出现标题所示的内容了吧。开始之前还是要感谢广大的网友的技术博客的分享,在这里我主要参考了“江湖人称小白哥”,的博客,加上自己的尝试和总结!!
Android源码的准备
既然要调试Android源码,想必你手中已经有了完整的源码了,请毫不犹豫的编译完吧,至于怎么编码系统,我这里就不多说,不同方案商的编译方式大同小异。编译完之后和编译普通模块一样,我们用mmm命令编译idegen。在开始编译之前检查out/host/linux-x86/framework/目录下是否存在idegen.jar文件,如果存在这说明你已经编译过这个模块,否者,则需要编译,执行命令如下
source build/envsetup.sh
mmm development/tools/idegen/
sudo ./development/tools/idegen/idegen.sh
其中mmm development/tools/idegen/执行完成之后会生成idegen.jar,而sudo ./development/tools/idegen/idegen.sh则会在源码根目录下生成IEDA工程配置文件:android.ipr,android.iml
android.ipr:通常是保存工程相关的设置,比如编译器配置,入口,相关的LIBRARIES等
android.iml:主要描述了modules,比如modules的路径,依赖关系等
到目前为止,我们就完成了源码的准备工作
导入源码
源码导入AS之前,我们先修改一下AS的配置(找到AS的安装bin目录),就拿windows系统中的as来说,如果系统为32位则修改studio.exe.vmoptions文件,如果系统为64位则修改studio64.exe.vmoptions,调整其中的-Xms和-Xmx参数,官方要求至少在748m以上,我这里设置为-Xms1024m,-Xmx1280m,然后启动AS,点击如下所于,打开已存在的android 项目
选择刚才编译生成的android.ipr文件,接下来就是漫长的加载等待,如果你是一个急性子,而且不想将没必要的源码文件加载到AS中,那你可以在加载之前修改一下android.iml文件,就拿我目前的需求来说,我只关心framework,external,packages,vendor目录下的内容,那可以在android.iml文件中添加以后内容:
不难发现,其格式为<excludeFloder url="file://$MODULE_DIR$"/模块名>,编译生成的android.iml文件中已经默认排除了一些模块,通过搜索excludeFolder关键字可以找到,而我这里是将默认的也修改了。
如果已经将全部项目导入到AS了,而又不想重新添加或删除模块该怎么办呢?其实在Project Scureture的Mobules中进行修改也是可以的
等待加载完之后,你就可以看源码了,哇卡卡!!
接下来解决源码跳转异常的问题
出现源码跳转异常的问题就是SDK,JDK以及依赖关系没有配置好
配置SDK和JDK
根据步奏提示添加JDK,我在系统中安装的是JDK1.8.0_92所以我的home path选择为JAVA的安装目录,为了确保使用的是android源码库中的文件,我们将新添加的这个JDK的classpath中的内容全部删除了,如4步区域看到的,已经空了哦
根据提示添加SDK,由于我的android源码是6.0系统,如果你不确定你的源码是用哪个版本的build target,你可以在源码中查看$PLATFORM_SDK_VERSION值是多少,所以我这时选择的是ANDROID API 23,然后java sdk选择了刚才添加的JDK
最后在Project标签中将Project SDK中的选择刚才添加的android api
修改依赖关系,首先将所有的依赖删除,为了方便,后边如果缺少了,可以自行添加,我这里就只是添加了framework,externl,packages
搞定上面之后,现在我们来看看如何用AS一步步调试代码,首先为刚才的工程添加framework,以便让AS将它作为一个android工程,从而能让我们进行调试
现在为止,你就可以正常调试啦,激动呀,哇卡卡。。。。。。
USB连接手机啊,快。。。。。
由于我截图时,没有连接手机,如果连接手机正常时,会在对话框中看到手机启动的全部进程,选择你要调试的进程,那根据我的需求,我就选择了camera的进程,然后下断点,哇卡卡。。。。。
好啦,用一句老话,如您还有不懂的,请联系我QQ:3192388081,我方便的时候一定会回复您的!还有什么技术问题,我们都可以讨论哦!
转载请注明原文地址: https://ju.6miu.com/read-15916.html