替换系统Launcher流程
做android产品的时候,根据需求会制定各种各样的Launcher,因此,在此记录替换系统Launcher的流程。
1、修改frameworks/base/core/java/android/content/Intent.java中
//public static finalString CATEGORY_HOME = "android.intent.category.HOME";改为
public static final String CATEGORY_RB_HOME = "com.intent.category.RB_HOME";
2、修改api下所有文件android.intent.category.HOME替换为
android.intent.category.RB_HOME
sed -i "s/CATEGORY_HOME/CATEGORY_RB_HOME/g" `grep CATEGORY_HOME -rl ./`
sed -i "s/WIDGET_CATEGORY_RB_HOME_SCREEN/WIDGET_CATEGORY_HOME_SCREEN/g" `grep WIDGET_CATEGORY_RB_HOME_SCREEN -rl ./`
3、修改所有文件中android.intent.category.HOME 替换为android.intent.category.RB_HOME
sed -i "s/category.HOME/category.RB_HOME/g" `grep category.HOME -rl ./`
4、添加APK文件
a.在/package/app/路径下,添加Launcher文件夹,将launcher.apk文件copy到此。
b.添加Android.mk文件
c.将系统Launcher配置信息全部注销。
项目实战
Android 替换系统桌面Launcher
公司做一个定制的APP,就是开机就打开app,按home还是自己app。我找了很多都是修改framework,这样很麻烦,就相当编源码了(我觉得是这样)。
代码示例:
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:sharedUserId="android.uid.system"> <activity android:name=".activity.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.HOME.SEADEE"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity></application>我标记的地方 就是关键地方,
开机的时候会这样显示,还有app一直点返回到退出程序会显示这个。 首先解决 点击返回显示这个东西,就是拦截返回按钮。 我这里在MainActivity中加入此方法
[@Override](https://my.oschina.net/u/1162528)
public void onBackPressed() {
// super.onBackPressed();
}
现在 基本就是完成了,还有一个主要的问题就是,每次要人选哪个是桌面很麻烦,所以思路就来了。Android本身的Launcher.apk 就是桌面,所以要么我们替换系统的Launcher.apk 要么就改源码,把跳转的链接 跳转到我们自己的apk,我这里实现的是前者。
cmd中运行:
adb push C:\Users\BAO\Desktop\HwLauncher6.apk /system/app
这样就OK了 但是出现一个问题,报错: adb remount 失败:remount failed: Operation not permitted 发现是权限的问题。 通过以下方式获取权限 方法:
1:adb devices
会出现就说明 你没有链接上,那么你就要看看是什么原因。我这里是360手机助手。
就是这两个货,
我很多时候AndroidStudio链接不上手机也是这个东西,把它结束进程,
它可能不会立刻关闭,你要等几秒,方正就是一定要关闭它们。
再次输入adb devices
就说明你成功了。
2:adb shell
su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
chmod 777 /system
cd system
chmod 777 app 注意网上很多都是这样,这个地方写错了导致不成功 是chmod 不是chomd
cd app
ls(这一步可以操作可以不操作,主要看你系统的launcher叫什么名字,输入ls 就出现所有apk 找到你的launcher 我这里是HwLauncher6.apk)
chmod 777 HwLauncher6.apk
exit
这样就获取操作/system/app/HwLauncher6.apk 记住是HwLauncher6.apk的读取修改操作 只有他的。 再次在cmd中运行
adb push C:\Users\BAO\Desktop\HwLauncher6.apk /system/app
出现 ok 成功!
以上就是Android开发替换Launcher步骤以及Android系统替换桌面项目实战;有关更多Android开发技术可以参考这本《Android核心技术电子册》学习,里面记录99%的Android核心技术点。详情可以点击查看。
文末
Launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher。Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面,Launcher出错的时候,安卓系统会出现“进程 com.android.launcher 意外停止”的提示窗口。这时需要重新启动Launcher。
网友评论