原创作品,转载注明出处:http://blog.csdn.net/deng0zhaotai/article/details/49531409
由于手上没有Android4.4的机器,只有Android4.0的平板,所以后续的源码修改是以Android4.0.4 的Launcher2来分析从Android4.0.4中取出的Launcher2源码是要在源码下进行编译的,目录如下:
我想在ADT下进行调试,在ADT上新建一个工程,把src和res、AndroidManifest.xml导入,导入肯定会有很多错,导入后的工程,在这里我把包名改了,方便后面在平板上调试,可以以一个独立的apk 安装调试,不影响原来的Launcher
由于Launcher是在源码下编译的,用到了很多@hide的函数,在ADT下需要导入几个包才能在ADT下编译
这几个包可以在编译源码后找到,原名是
把上面的三个库添加进来,添加方法可以百度下有很多
添加后的库
调整库的优先级
在工程中可以看到
AndroidManifest.xml文件的修改
添加
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
对<activity android:name="com.android.launcher2.Launcher"/> <intent-filter>的修改
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY" />
</intent-filter>
对权限的修改,由于android:name="android.permission.BIND_APPWIDGET"是系统级的,在ADT上可以先删除,不影响我们的调试
<uses-permission android:name="android.permission.BIND_APPWIDGET" />
重要的包名也要修改
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.deng.launcher2" >
下面就是修改src和res目录了,由于包名修改导致很多src和res中的包名没有改过来引起的,根据需要修改就可以,这里不一一举例修改。
LauncherProvider.java文件修改了数据库
private static final String TAG = "Launcher.LauncherProvider";
private static final boolean LOGD = false;
private static final String DATABASE_NAME = "launcher_deng.db";
private static final int DATABASE_VERSION = 9;
static final String AUTHORITY = "com.deng.launcher2.settings";
static final String TABLE_FAVORITES = "favorites";
static final String PARAMETER_NOTIFY = "notify";
对应在AndroidManifest.xml文件中也要修改
<provider
android:name="com.deng.launcher2.LauncherProvider"
android:authorities="com.deng.launcher2.settings"
android:readPermission="com.deng.launcher2.permission.READ_SETTINGS"
android:writePermission="com.deng.launcher2.permission.WRITE_SETTINGS" />
最后会把修改过的Launcher2上传的
先看下修改后第一次运行的界面
可在Eclipse上编译调试的代码可以到:http://pan.baidu.com/s/1mgldZwk下载