android 添加预装的方法
方法1:
frameworks/base/services/java/com/android/server/pm/PackageManagerService.java
synchronized (mPackages) {
mHandlerThread.start();
mHandler = new PackageHandler(mHandlerThread.getLooper());
+ if(SystemProperties.getBoolean("persist.sys.firstRun", true)){
+ File targetDir = new File("/data/app");
+ File dir = new File("/system/media/app");
+ if(dir.exists()){
+ for(File file : dir.listFiles()){
+ File targetFile = new File(targetDir,file.getName());
+ FileUtils.copyFile(file,targetFile);
+ FileUtils.setPermissions(targetFile.getAbsolutePath(), FileUtils.S_IRUSR| FileUtils.S_IWUSR | FileUtils.S_IRGRP| FileUtils.S_IROTH, -1, -1);
+ }
+ }
+ SystemProperties.set("persist.sys.firstRun","false");
+ }
File dataDir = Environment.getDataDirectory();
方法二:
init.rc中添加:
+chmod 0777 /system/bin/preinstall.sh
+service preinstall /system/bin/preinstall.sh
+ class main
+ user root
+ group root
+ oneshot
+ console
+ disabled
on property:dev.bootcomplete=1
chown media media /sys/class/vm/mirror
chmod 0664 /sys/class/vm/mirror
+ start preinstall
write /sys/class/vm/mirror 0
start usbpm
preinstall.sh
#!/system/xbin/busybox sh
echo "do preinstall job"
if [ ! -e /data/system.notfirstrun ]; then
echo "do preinstall job"
pm install /system/preinstall/xxx.apk
touch /data/system.notfirstrun
else
echo "do nothing"
fi
xx.mk
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/preinstall.sh:system/bin/preinstall.sh
# pre-installed apks
PRODUCT_COPY_FILES += \
$(call find-copy-subdir-files,*.apk,$(LOCAL_PATH)/apk,system/preinstall)
方法二(二)
init.rc
on property:init.svc.bootanim=stopped
start preinstall
service preinstall /system/bin/preinstall.sh
user root
group root
disabled
oneshot
xx.mk
ifeq ($(BUILD_WITH_THIRDPART_APK),true)
PRODUCT_PACKAGES += \
preinstall.sh \
$(patsubst vendor/amlogic/prebuilt/preinstallation/%,%,$(wildcard vendor/amlogic/prebuilt/preinstallation/*.apk))
endif
preinstall.sh
#!/system/bin/sh
MARK=/data/local/symbol_thirdpart_apks_installed
PKGS=/system/preinstall/
if [ ! -e $MARK ]; then
echo "booting the first time, so pre-install some APKs."
busybox find $PKGS -name "*\.apk" -exec sh /system/bin/pm install {} \;
# NO NEED to delete these APKs since we keep a mark under data partition.^M
# And the mark will be wiped out after doing factory reset, so you can install^M
# these APKs again if files are still there.^M
# busybox rm -rf $PKGS^M
touch $MARK
echo "OK, installation complete."
fi
Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := preinstall.sh
LOCAL_SRC_FILES := preinstall.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT)/bin
include $(BUILD_PREBUILT)
manager_apk := $(patsubst $(LOCAL_PATH)/%,%,$(wildcard $(LOCAL_PATH)/*.apk))
$(foreach t,$(manager_apk), \
$(eval include $(CLEAR_VARS)) \
$(eval LOCAL_MODULE := $(notdir $(t))) \
$(eval LOCAL_MODULE_TAGS := optional) \
$(eval LOCAL_MODULE_CLASS := ETC) \
$(eval LOCAL_MODULE_PATH := $(TARGET_OUT)/preinstall) \
$(eval LOCAL_SRC_FILES := $(t)) \
$(eval LOCAL_CERTIFICATE := shared) \
$(eval include $(BUILD_PREBUILT)) \
)
$(LOCAL_INSTALLED_MODULE): $(notdir $(manager_apk))
android 添加预装的方法相关推荐
- Android添加单元测试的方法与步骤
一.修改配置文件AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <man ...
- Android添加apn的方法
对于新的物联网卡,需要添加apn才能正常使用.apn一般由运营商提供,拿到apn后,我们可以使用手工添加apn的方式来验证apn 能否正常使用.手工验证可以后,将可以将apn的信息添加到apns-co ...
- android 怎么加链接地址,Android TextView添加超链接的方法示例
本文实例讲述了Android TextView添加超链接的方法.分享给大家供大家参考,具体如下: public class Link extends Activity { @Override prot ...
- android 添加广告用proguard混淆后不显示问题解决方法
android 添加有米广告,打开proguard混淆后,广告不显示了,解决方法是keep所有引用的jar package 1 -keep public class net.youmi.android ...
- android 加网络权限管理,Android添加用户组及自定义App权限的方法
Android:4.4.4 一.应用场景 在Android设备上,现在我们外接了一个USB转串口的设备,设备节点是/dev/ttyUSB0: # ls -l /dev/ttyUSB0 crw-rw-- ...
- Android中添加驱动的方法
Android 添加驱动的两种方式 下面介绍,在Android系统中如何将驱动添加到kernel中. 要求:将驱动queue.c添加kernel中. 方案:下面介绍2种实现方案.2种方案的本质是一样的 ...
- Android滑动冲突解决方法
Android滑动冲突解决方法 滑动冲突 首先讲解一下什么是滑动冲突.当你需要在一个ScrollView中嵌套使用ListView或者RecyclerView的时候你会发现只有ScrollView能够 ...
- android+启动脚本,imx6q android 添加开机启动脚本
1.在xx/out/target/product/sabresd_6dq/root/init.rc中添加以下内容 ========================================== ...
- android添加商品到购物车,Android使用动画动态添加商品进购物车
本文实例为大家分享了Android添加商品进购物车的具体代码,供大家参考,具体内容如下 1.首先展示下效果图 2.讲一下思路,小球由加号位置运动到购物车位置,首先得获得这两个点在整个屏幕中的坐标,然后 ...
最新文章
- html5声频audio和视频video
- 【Python】json
- JSONObject和JSONArray的关系
- android 图片传递,如何使用包在Android活动之间传递图像(位图)?
- JVM 内存设置大小
- Java泛型程序设计
- day19异常File类
- java-web 过滤器 amp; 监听器 amp; 拦截器
- 《自己动手写操作系统》实践(一)
- 关于写的Java书籍进展
- Java 学生选课系统 源代码
- android safe mode
- 笔记本计算机无法上无线网络,笔记本电脑无线网络连接不上原因有哪些【详细介绍】...
- 以太坊实战篇-创建并运行一个最简单的转账合约
- scrapy settings和管道的深入
- Win10系统U盘重装恢复出厂设置的方法
- 实验十八 IEEE 802.15.4和ZBR协议仿真
- 高精地图:激光雷达点云与高精地图融合
- uniapp微信小程序的各种弹框提示(轻提示)
- 小学教师计算机培训记录内容,小学教师个人的培训工作总结