2.3.1 Launcher编译与批改
首先准备系统源码,并且编译。前面有一篇博文主要讲解了源码的编译,这里就不再细说。
1.将Launcher2项目导入eclipse中,这时候会有很多错误,先别急看下面:
2.添加Launcher2使用的包文件。
因为有很多东西都是隐藏的,所以在这里我们不得不用到系统编译之后的jar包,在这里找到生成包的路径为:out/target/common/obj/JAVA_LIBRARIES
1)framework_intermediates/classes.jar :android的框架类
2)android-common_intermediates/classes.jar :com.android.common.Search这个类的引用
3)core_intermediates/classes.jar :dalvik.system.VMRuntime这个类引用
以上都需要添加,方法:BuildPath->Configure Build Path...->Libraries->Add Library->UserLibrary->User Libraries...->New...(自己取名字然后一个个的加进去)
例如:android_framework,android_common,android_core.然后把对应的jar包添加进去
(注意:这里涉及包的顺序问题,所以,首先要移除android自身的包,然后添加这仨,最后把android自身的包添加进来)
3.修改Launcher2包名称为Launcher3,改掉包名称,用到的地方必须全部改掉。com.android.launcher3
这里注意了:在AndroidManifest里面有这么一段,可能有人不理解,
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.launcher"
android:sharedUserId="@string/sharedUserId"
>
<original-package android:name="com.android.launcher3" /> ... ...
大致意思是:我在的包original-package android:name="com.android.launcher3在项目中用 package="com.android.launcher" 这个代替。也就是说,在项目中要用到com.android.launcher3的地方com.android.launcher都被它替代了。
AndroidManifest.xml文件里面,还有这么一句话删除之android:sharedUserId="android.uid.shared"
4.这样在模拟器上就能运行,但是,这里还有一个错误,SearchWidgetProvider does not have android.permission.BIND_APPWIDGET.意思就是没权限,怎么办呢,有两种方法:一是和rom一样的签名二是做成系统应用,这个是在第一次绑定默认appid的时候,出现的问题。之后没出现问题了。
具体要修改的地方,根据自己的需求来,哈哈
不知道大家发现没有,在模拟器上menu键也能解锁哟,不知道大家发现没有,哈哈