您的位置:首页 > 理论基础 > 计算机网络

[2015.8.17网络首发]导入MTK_Android5.1源码里的Gallery2和Camera模块至Eclipse全过程 .

2015-08-17 09:46 453 查看
由于开发的要求,需要将Android默认的Camra程序导入到eclipse中,进行修改和再开发。大家都知道,Android默认的Camera程序存放于Android的源码中,Android源码只支持使用make进行编译,若想把Camera源码导入到Eclipse中,会遇到各种不同的问题,以下记录了导入的整个过程和其中遇到的问题,google的android自带的apps写的是相当牛逼的,将其导入到eclipse中方便我们学习扩展。可惜关于导入的资料太少了,尤其是4.1之后的gallery和camera合二为一了。之前导4.0的camera那时不费吹灰之力就搞成了。在4.2之后又将两个工程分开了,可以看到两个工程下面只有Gallery才有AndroidManifest.xml。
下面的文字记录是我摸索了近4天终于导成功的记录,给大家分享了。

一、导入前的准备

1、 编译MTK_Android5.1的源码,目的是为了得到后面的classes文件,源码编译需要在64位机子上。

2、 将MTK_Android5.1\packages\apps下的Gallery2文件夹和Camera文件夹复制到桌面一份,后续将先导入Gallery2再导入Camera、



2、 将/out/target/commom/obj/J***A_LIBRARIES/core-libart_intermediates 、/out/target/commom/obj/J***A_LIBRARIES/framework_intermediates 、

/out/target/commom/obj/J***A_LIBRARIES/mp4parser_intermediates 、/out/target/commom/obj/J***A_LIBRARIES/ xmp_toolkit_intermediates 、

/out/target/common/obj/J***A_LIBRARIES/com.mediatek.effect_intermediates 、

/out/target/common/obj/J***A_LIBRARIES/mediatek-common_intermediates 、

/out/target/common/obj/J***A_LIBRARIES/mediatek-framework_intermediates 、

/out/target/common/obj/J***A_LIBRARIES/com.mediatek.ngin3d-static_intermediates 、

/out/target/common/obj/APPS/Gallery2_intermediates

这9个路径下的classes.jar文件分别重命名为core-libart_intermediates、framework_intermediates、mp4parser_intermediates、xmp_toolkit_intermediates ,com.mediatek.effect_intermediates 、mediatek-common_intermediates 、mediatek-framework_intermediates 、Gallery2_intermediates、com.mediatek.ngin3d-static_intermediates 、新建文件夹放到工作空间以免丢失。



二、开始导入



1、打开eclipse,点击File---New----Project---Android---Android Project from Existing Code,选择桌面的那个Gallery2文件夹,copy projects到工作空间要勾选。

2、 右击工程的属性或按alt+enter快捷键,选中Java Build Path,点击Source,选择Add Folder,将gallerycommon , src_pd ,ext , mtkgallery , src_pd 勾选上。如果这个文件夹不勾选,后续会找不到很多类和包,而这些缺失并不是缺少.classes文件导致的。如果提示重复,就按如下步骤进行.如图:









3、 找到刚刚勾选的目录,将目录下的包名的src去除掉,因为在刚刚勾选的目录中部分路径是相互引用得到,代码中引入的路径是没有src的,修改方法如图:














4、 此时要讲之前准备好的jar文件导入到工程中,此时需要将在工程中新建一个文件夹,名称为lib,方便存放需要的jar文件,将所需要的jar文件拷贝到lib文件夹中,如图:










5、 需要将这些jar文件依依以jar的方式添加到工程中,点击lib文件夹的jar包 -> 单击鼠标右键 -> Build Path -> Add to Build Path ,此时工程里会增加一个名称为Referenced Libraries库,然后点Order and Export,将Referenced Libraries这个库的位置放在Android5.1的前面。调整后的顺序如下:








6、 在工程中res文件夹,将国际化的文件夹通通删除掉,只留一个中文简体的(values-zh-rCN文件夹即可),如果后续有对国际化的扩充,再做改进,有错误,原因是里面有重复定义。将报错的地方删掉即可!每删掉一个地方,对应的另一个文件报错的地方就会恢复正常。可以按照这种方法对values-xx开头的文件夹都做相同的处理,但事实上,如图为保留的文件,文件夹

如图:









7、 在导入camera文件之前需要逐一对照camera下的res文件夹和当前gallery工程下的res文件夹下的文件有无重名。如两者的values文件夹下都有atrrs.xml文件,需要将camera的那一份重命名为atrrs_camera.xml,否则会发生覆盖导致出错。导入时点击Gallery工程,注意一定是导到Gallery工程目录下。右击选择—import---General---File System。

注意:Gallery和Camera下相同名称的文件有很多,一定要把res下文件夹的文件进行对照,有重复命名的,将以重复名称的另一个文件重命名,如:将camera的那一份重命名为atrrs_camera.xml。



8、
点击Clean,重新编译仍然会有错。当出现大量错误时,前者会乱报错。这时gen文件夹下com.android.gallery3d下的R文件已经生成。整个工程的错误在包com.android.camera.ui下的各个java文件中,这些java文件都导入了com.android.camera.R,但实质上和camera相关的资源ID都被整合到gen文件夹下的com.android.gallery3d.R文件中了。也即本来应该是camera的R文件整合到gallery的R文件中去了,com.android.camera.R这个文件根本没有生成。因此凡是import com.android.camera.R;有这句话的地方一定会报错,奇怪的是eclipse还显示不出来。用import com.android.gallery3d.R;来代替这句话即可,如图:












9、 在修改了com.android.camera.ui包下的各个java文件后,对com.android.camera包下的java文件也要进行修改,凡是引用了R的地方都会报错,但eclipse可能显示不出来。一定要保证com.android.camera.ui包下凡是引用R文件的地方都要导入Gallery3d.R包。

10、点击Clean,重新编译仍然会有错,此时的错误明显少了好多了,提示res工程的文件有错误,将MTK定义的样式去除掉就ok了,如果提示没有找到资源文件,其实是可以在工程中找到资源的,按下Ctrl + H 搜索没有找到的资源,将其拷贝到对应的工程中。





经过上述步骤,MTK_Android5.1源码Gallery2、Camera模块成功导入Eclipse,并能正常编译在设备上运行。贴上工程完整目录:












[b]欢迎android爱好者加群420221427

[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: