预置APK文件到sdcard下

客户需求,要预置APK文件到data/media/0/System/APK文件下,也就是说客户要求预置资源文件到sdcard,系统第一次启动的时候,加载完谷歌向导之后,会启动客户的另外一个应用来选择是否安装预置到SD卡的应用文件,此应用可在文件浏览器中找到并且可安装卸载,恢复出厂设置之后,预置的文件APK文件保留。

如果只是预置可卸载的文件,恢复出厂设置不可恢复,很简单,只需要在Android.mk文件中加上:LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)就可以了。

不过这次需求是预置APK文件(非安装好的),在第一次启动之后加载完谷歌向导后,会启动客户另外一个已经预安装好的应用来选择是否要安装此应用,并且此应用可卸载,恢复出厂设置之后还要在SD卡中,预置文件到SD卡上比较简单,主要问题是恢复出厂设置还要在预置的APK文件还要在SD卡中。

下面直接给出解决方案:

1.预置到sdcard: 在项目的配置文件中,利用 PRODUCT_COPY_FILES 分别拷贝文件到system目录下与/data/media/0/System/APK,如下:

PRODUCT_COPY_FILES += \
 tyconfig/tyOverSeaCommon/packages/apps/3rd_Oversea/archos/preset_apps/100Games_Archos_50_Neon_100_AB46.apk:data/media/System/APK/100Games_Archos_50_Neon_100_AB46.apk \
tyconfig/tyOverSeaCommon/packages/apps/3rd_Oversea/archos/preset_apps/100Games_Archos_50_Neon_100_AB46.apk:system/pre-install/100Games_Archos_50_Neon_100_AB46.apk 
这样保证系统第一次启动的时候可以满足需求,之所以会要在system/pre-install/目录下拷贝一份,是为了备份一下这个文件,在恢复出厂设置的时候要把/system/pre-install目录下的文件拷贝到/data/media/文件下。

2.恢复出厂设置,文件可以恢复。

在恢复出厂设置这一块代码下手,恢复出厂设置会把/data分区跟/cache全部清除,data分区清除意味着预置的APK文件也将会被清除掉。所以,在/data,以及/cache清除完毕后,可以做一个操作,复制/system/pre-install/目录下的文件到/data/media/0/System/APK目录,这样就能够保证在恢复出厂设置之后,预置的APK文件还在sdcard中。

bootable/recovery/recovery.cpp

//拷贝方法,需要把 build/libs/host/include/host/CopyFile.h 与 /build/libs/host/CopyFile.c文件拷贝至recovery.cpp同级目录
#include "CopyFile.h"
static int
apply_pre_installed_apps() {
	if (ensure_path_mounted("/data")) {
		ui_print("copy_app_data: mount /data failed!");
		return -1;
	}
	if (ensure_path_mounted("/system/")) {
		ui_print("copy_app_data: mount /system failed!");
		return -1;
	}

        //保证对应目录存在
        if(mkdir("/data/media/",00777) != 0)
        {  
            LOGE("create /media failed\n"); 
        }
        if(mkdir("/data/media/System/",00777) != 0)
        {  
            LOGE("create /System 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值