eclipse导入Android Launcher3运行

  最近需要定制一个mtk手持设备的Launcher,Android版本是4.4.2,Launcher版本是Launcher 3. 事实上网上已经有不少关于如何将Android 4.0的Launcher 2源码导入eclipse运行的文章了。比如:

1. http://blog.csdn.net/chenshaoyang0011/article/details/7857634

2. http://blog.csdn.net/klpchan/article/details/11843295。

同时我又找到了一片关于eclipse如何导入Launcher 3的文章:

http://blog.csdn.net/deng0zhaotai/article/details/42045359

基本上依照这三篇博文,我成功的将Launcher 3导入了eclipse从而方便做修改定制,遂记录之

  第一步:import工程,命名为Launcher3. 创建完工程后需要选择Android SDK版本,右键工程->Properties->Android选择SDK版本,这里我选择的是API 19.

  第二步:经过第一步后工程中依然会有无数错误,这是因为首先该工程是从源码上拉下来的,工程源码中用了很多Android未开放的API。这时就需要编译Android源码,因为要用到一些编译生成的class.jar文件,这样才能使用这部分API。编译完成后在out/target/common/obj/JAVA_LIBRARIES找到一下几个文件(箭头表示重命名为):

1. android_support_v13/class.jar    -----> android_support_v13.jar

2. framework_intermediates/class.jar  ----->framework.jar

3. common_intermediates/class.jar   ----->common.jar

4. core_intermediates/class.jar     ----->core.jar

上面四个文件用于在工程代码中调用Android未开放的API。在工程的Java Build Path中新建个User Library,然后将这4个jar文件加入该新建的User Library中。需要注意的是这个Library不需要编译进工程,因此在Java Build Path的Order and Export标签卡中,只需要把该Library移动到最上面,不需要勾选前面的复选框。否则编译会出错。

普通的Launcher 3就用到这几个jar。而从本工程的Android.mk文件的下面发现,该工程应该还需要另外的MTK的库,

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += com.mediatek.launcher3.ext
LOCAL_JAVA_LIBRARIES += mediatek-framework

5. mediatek-framework_intermediates/class.jar  ----->mtk_framework.jar

6. com.mediatek.launcher3.ext_intermediates/class.jar   ----->mtk_launcher3_ext.jar

将以上几个jar配置好后,发现仍然有错误。经检查源码发现还需要下面这个两个jar包

7. mediatek-common_intermedias/class.jar  ----->mtk_common.jar

8. com.google.protobuf.jar(这个jar包是从网上下载的)

以上4个jar包需要编译进工程,因为代码中依赖这些包的API不属于Android。如果需要编译进工程中,导入的方式和之前的内部jar包不同。需要在将以上4个jar包添加到工程的libs文件夹中(如果没有则在工程的根目录中新建之)。所有导入到libs文件夹中的jar包,ADT都会自动将其添加到Java Build Path的Android Private Libraries中,而且默认勾选其前面的复选框(代表需要编译进工程)。

  经过上面两次导入jar包后,错误减少了很多。但是工程中仍然有错误。最终查到是缺少了一个类BackupProtos.java。该类应该在com.android.launcher3.backup包中。其中BackupProtos.java在网上可以轻易找到。解决这个问题有两种方法,一种是直接在工程中新建相应的包,同时将BackupProtos.java放入内。另外一种是用jar -cf命令将该文件打包成jar包,然后放入libs文件夹内。

  导入所有依赖的jar包后,发现编译时还是有错,出错提示工程中有重复的dex文件。经排查发现mtk_launcher3_ext.jar包中有com/android/launcher3的目录,推测应该是该包和工程的包产生了冲突。因此,将源码中生成该jar包的文件拉下来,删除com/android/launcher3目录,重新制作jar包并替换掉libs中的原来jar包。

  经过以上的步骤,发现还是有错。 发现是mtk_launcher3_ext.jar中的LauncherLog类调用的Logx类找不到。为了方便,我直接在工程中新建了一个LauncherLog类,并将所有对mtk包中LauncherLog的引用替换。这样Launcher3就移植成功了。

  但是这样还是不能Android模拟器上运行。因为com.android.launcher3的包名和模拟器中的launcher3报名相同,无法安装。一种解决方法是将工程的包名重新命名,这种方法要改动太多的地方。另一种方法是将模拟器上的Launcher3卸载掉。这涉及到如何通过adb删除系统app。运行adb shell, 然后通过下面的命令将/system目录重新挂载为可读写:

su
mount | grep system
#得知哪个盘挂在到/system目录了,比如/dev/sda6
mount -o rw,remount /dev/sda6 /system

然后使用adb uninstall命令或者直接删除/system/app文件夹中对应的apk文件就可以卸载系统软件了。这样就可以在模拟器上运行我们导入的Launcher3工程了。  

时间: 2024-10-06 17:56:40

eclipse导入Android Launcher3运行的相关文章

Eclipse导入Android项目的正确方法

直接上图: 在android 中导入项目后 包出现错误的解决方法 选中项目,右击打开Properties: 1.检查android选项页中是否勾选了project build target. 2.检查java build path 中 orler and explort 中是否勾选上了相应的android libraries. 3.打开菜单栏中windows -> preferences : java -> compiler 然后更换jdk版本,一般是将1.6换成1.5就无错了. 本人用这个方

eclipse导入android项目后出现错误的解决方法

eclipse导入android项目后出现错误的解决方法 出现这样的错误是因为没有为项目指定sdk的原因 为项目指定sdk的方法右键点击工程名称,弹出菜单中点击“Properties->Android”,在Project build target 中指定你要使用的SDK版本即可

eclipse — 导入android项目后识别成java项目的问题及解决

最近在eclipse导入android项目的时候遇到了奇葩问题,再此记录 遇到的问题就是:将完好的android项目导入到eclipse的时候,原本这是一个很容易的事情,但是导入成功后发现,,,靠eclipse居然识别成了java项目导致不能"run as android appliciation",,,问题的根本在哪我不知道,搜索类似问题,有大神说是.project文件问题... 修改方法: 在eclipse中新建一个android项目(这样就一定是android项目,可以"

Eclipse导入Android项目的方法(转)

原文:http://www.cnblogs.com/SkyD/archive/2010/11/25/1887219.html 看网上流传的Eclipse导入项目的方法都是在新建Android程序时使用“Create project form existing source”选项实现的导入,虽然也能实现,但感觉很山寨的样子,而且导入的项目还在原位,Eclipse不会自动将其复制到workspace目录,且如果预先将项目复制到workspace目录再导入的话就会报错,提示这里已经有一个同名项目了.

Android开发中遇到的问题(五)——Eclipse导入Android项目出现"Invalid project description overlaps the location of another project"错误的解决办法

一.错误描述 使用如下的命令手动创建一个Android项目 android create project -n LinearLayoutTest -t 1 -p E:/Android/workspace/LinearLayoutTest -k me.gacl.ui -a MainActivity 命令执行完成之后就会在E:/Android/workspace目录下创建一个名字为LinearLayoutTest的Android项目,如下图所示: E:/Android/workspace目录就是我的

将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例)

网上翻了几百篇博客,看了半天,要不就是写的乱七八糟看不懂,要不就是隐藏了一些细节,要不就是实现不了,最后还是在Android官网上看明白了,而且说得有条有理,以后遇到不懂的一定要先翻官网. 参考资料:https://developer.android.com/studio/projects/add-native-code.html?utm_source=android-studio#link-gradle 1. 导入eclipse到Android studio 1. 导入工程: 点击如下所示:

Eclipse导入Android Studio的项目

感谢各位大神,已经归纳好了:http://www.360doc.com/content/15/0323/13/11800748_457387176.shtml.在此,我只是根据个人理解,将内容再整理一下,仅供参考.声明:如果该文侵犯了你的著作,抱歉,请及时通知,我会马上删除. 下面开始谈谈将Android Studio项目导入到eclipse的具体操作: 其实最重要的一点是了解两编译环境生成目录的相似之处:Android Studio项目中src/main目录下的文件才是真正的项目代码,main

Eclipse导入Android签名

本篇主要参照http://blog.csdn.net/wuxy_shenzhen/article/details/20946839 在安装安卓apk时经常会出现类似INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误提示,也就是签名出错.特别是在Eclipse中想生成apk后直接push到系统中时,另外手动签名就比较麻烦,这个时候把签名导入Eclipse中,在生成apk时自动签名就显得尤为重要了. 一.生成签名 1.android 源码目录build\target\

eclipse导入android项目红叉和红色感叹号怎么解决

解决办法如下:第一步:你要确保这个项目没有问题,有的项目本身就有问题,例如:xml文件,java程序等本身就有错.第二步:在Eclipse菜单中选择“Project”----〉Clean 解决不了,下一步第三步:右键选择项目,选择“Resource----〉Clean up” 解决不了,看下一步第四步:右键选择项目,选择“Build Path..” 查看Libraries下是否有虚拟路径,如果有请删除,解决不了请看下一步第五步:打开project.properties文件,查看target=an