Android7桌面Launcher3源码移植到eclipse遇到的错误问题

Launcher源码移植到eclipse和Android Studio遇到的平台问题

一. 需求:将高通SC60launcher3源码移植到eclipse和studio上编译生成apk
二. 条件:高通系统源码
Eclipse工具(版本4.5.1,ADT23.0.7)
Studio工具(版本3.2)
三. 导入eclipse操作

  1. File→import→Existing Android Code Into Workspace→导入代码相关目录

Android7桌面Launcher3源码移植到eclipse遇到的错误问题
2. 首先肯定是报错的,中心思想是先解决res资源文件错误,在考虑代码里引入的代码错误
Android7桌面Launcher3源码移植到eclipse遇到的错误问题

将此文件删除后,clean项目后又有新的错误

Android7桌面Launcher3源码移植到eclipse遇到的错误问题
点击发现是android版本引起的,将版本改为6.0以上,有键点击项目,选择Properties,弹框选择Android,选择android版本,我这里最高为6.0(最好用android7.1),选择后apply,ok后,在clean项目,此错误消失。

Android7桌面Launcher3源码移植到eclipse遇到的错误问题

发现新的错误,引用不规范,将@id/page_indicator"改为
@+id/page_indicator",在clean项目,此错误消失
Android7桌面Launcher3源码移植到eclipse遇到的错误问题

Android7桌面Launcher3源码移植到eclipse遇到的错误问题
Android7桌面Launcher3源码移植到eclipse遇到的错误问题

Ctrl+H全局搜索colorSecondary,发现在values/styles中有同样引用给为一致,clean项目,此错误消失。
这个时候发现res资源错误问题初步解决。

3.Src代码错误,先解决项目src_config中引用的代码,移植拷贝到src中

Android7桌面Launcher3源码移植到eclipse遇到的错误问题

操作:将src_config/com/android/launcher3文件夹复制到src/com/android/launcher3中,clean项目

在观察android.mk文件,查看引用的资源

Android7桌面Launcher3源码移植到eclipse遇到的错误问题

在高通系统代码中找到引用的v4,v7包,由于
v4包在目录:prebuilts\sdk\current\support\v4
v7的palette包目录:prebuilts\sdk\current\support\v7\palette\libs
v7的recycleview包目录: prebuilts\sdk\current\support\v7\recyclerview\libs以及res资源
prebuilts\sdk\current\support\v7\recyclerview\res

直接将android-support-v7-palette.jar放入项目libs文件夹中,
由于recycleview的引用包含res资源,在eclipse中需要以依赖项目的方式引用,
如何创建依赖项目,很简单创建一个android项目,将jar包以及res资源放入项目中
Android7桌面Launcher3源码移植到eclipse遇到的错误问题
AndroidManifest.xml包名为android.support.v7.recyclerview




project.properties中添加依赖属性android.library=true
在主工程中Properties→android→Library框中添加依赖项目,然后→apply→ok→在clean 项目

Android7桌面Launcher3源码移植到eclipse遇到的错误问题
Mk文件中LOCAL_MODULE := launcher_proto_lib引用的库,在目录out\target\common\obj\JAVA_LIBRARIES\libprotobuf-java-nano_intermediates\javalib.jar
将jar包导入libs文件夹中

Android7桌面Launcher3源码移植到eclipse遇到的错误问题

此时clean项目,在观察源码中报错位置

Android7桌面Launcher3源码移植到eclipse遇到的错误问题
根据红点提示操作将jre版本改为1.7版本,修改后clean项目

在观察源码中报错位置

Android7桌面Launcher3源码移植到eclipse遇到的错误问题
在源码中全局搜索find . -name “LauncherLogProto.java”,找到路径out\target\common\obj\APPS\Launcher3_intermediates\src\proto\src\com\android\launcher3\userevent\nano\LauncherLogProto.java,经文件夹src拷贝到目录中

Android7桌面Launcher3源码移植到eclipse遇到的错误问题

修改后clean项目

在观察源码中报错位置

Android7桌面Launcher3源码移植到eclipse遇到的错误问题
此路径报错,是因为是调用了framework中代码,全局搜索find . -name "AlphabeticIndex.java"发现在目录中
out\target\common\obj\JAVA_LIBRARIES\android_system_stubs_current_intermediates
有jar包的集成,可以将该jar包引用到项目中
将jar包拷贝到项目中,注意此时不能放入libs文件夹中,由于该jar包的代码与项目的android sdk的代码有重复引用,所以要优先引用frameworks源码的jar包,需要优先引用,
操作:
1.将jar包拷贝到本地目录中,
2.Properties→Java Build Path→选择Libraries→选择Add External JARs…,选择jar包路径→Apply→Order and Export→选中classes.jar包,点击top置顶→Apply→OK
3.clean 项目后,代码初步没有报错。

Android7桌面Launcher3源码移植到eclipse遇到的错误问题

Android7桌面Launcher3源码移植到eclipse遇到的错误问题

Android7桌面Launcher3源码移植到eclipse遇到的错误问题

此时项目已经移植成功,运行项目,在bin文件夹下生成没有签名的apk。