平台:android M
需求:
1.客户需求,预置一个客户带Launcher功能的apk.移除系统全部apk.包括SystemUI.
2.工厂需要系统的Launcher3和systemUI才可以完成测试操作.
思路:
基于以上需求,想到一个解决方案,第一次下载软件,系统带systemUI和Launcher3.工厂测试完成后恢复出厂设置,移除systemUI和Launcher3.
解决方案一:
1.Launcher预置到data/app下.
修改:Launcher3/Android.mk
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
2.SystemUI修改
2.1增加一个识别恢复出厂设置的方法.
预置device/mediatek/common/setup文件
修改device/mediatek/common/device.mk
+#setup
+PRODUCT_COPY_FILES += device/mediatek/common/setup:data/app/setup
恢复出厂设置后,该文件被删除,可通过判断该文件的存在来判断时候恢复出厂设置.
2.2 在systemui启动出判断:
SystemServer.java
+if(isFirst()){
+ try {
+ startSystemUi(context);
+ } catch (Throwable e) {
+ reportWtf("starting System UI", e);
+ }
+ }else{
+ Slog.i(TAG, "Do not startSystemUi");
+ }
+ private boolean isFirst(){
+ File file = new File(path);
+ if (file.exists()) {
+ return true;
+ }
+ return false;
+ }
SystemUIApplication.java
- if (mServicesStarted) {
- final int N = mServices.length;
- for (int i = 0; i < N; i++) {
- mServices[i].onBootCompleted();
- }
- }
+ if(isFirst()){
+ if (mServic