Android4.4集成第三方APK(不含源码)方法(高通),用户可卸载,恢复出厂设置可恢复

一、准备需要集成的第三方APK

1、第三方apk在一般源码路径vendor下,如:

      vendor/company/test/test.apk,

      vendor/company/test/test1.apk

2、编译的时候需要将vendor/company/test/下的apk文件拷贝到out目录下的system目录中,需要在vendor/company/test/目录下写个脚本copy_file.sh,跟随系统编译,就不用手动拷贝到out的对应目录下了.具体内容如下:

#!/bin/bash

mkdir -p out/target/product/${TARGET_PRODUCT}/system/vendor/backup/
cp -r vendor/company/test/backup/testApp out/target/product/${TARGET_PRODUCT}/system/vendor/backup/

二、、要保证应用可卸载,就必须把应用放在data目录下,并且恢复出厂设置可恢复,但是data目录的数据会被清理掉,所以常规方法将apk预置到data是不可行的。

      有没有办法解决呢?我们知道在system目录下的文件是受到保护的,也就是说恢复出厂设置system目录下的文件是不得清理掉的,那我们可不可以预先将apk文件预置到system目录下,设备第一次启动的时候,通过自动运行脚本将system目录下的apk文件拷贝到data目录下,然后在data目录下新建个文件标志位保证设备第一次运行才会拷贝,恢复出厂重置后该标志文件将被清除,又可以将system目录下的apk拷贝到data目录下。

      答案是可行的,具体实现方案如下:

      1、在LINUX/android/device/qcom/<product>/  路径下编写相应的loadbackuptestapk.sh脚本,该脚本的作用就是将system/目录事先放置的第三方apk拷贝到data目录下,loadbackuptestapk.sh内容如下:

#!/system/bin/sh
PRELOAD_DEST=/data/app
PRELOAD_FLAG=${PRELOAD_DEST}/backupapp_state
PRELOAD_SOURCE=/system/vendor/backup/testApp

if [ ! -d ${PRELOAD_DEST} ]
then
	mkdir -p ${PRELOAD_DEST}
fi

if [ ! -f ${PRELOAD_FLAG} ]
then
	files=$(ls ${PRELOAD_SOURCE}/)
	for i in ${files};do
		cp ${PRELOAD_SOURCE}/${i} ${PRELOAD_DEST}/${i}
		chmod 755 ${PRELOAD_DEST}/${i}
	done
	echo "installed" > ${PRELOAD_FLAG}
fi

2、在device目录下修改该文件: LINUX/android/device/qcom/<product>/<product>/<product>*_features.mk, 添加内容如下:

$(shell (vendor/company/test/copy_file.sh))

PRODUCT_COPY_FILES += \
   $(LOCAL_PATH)/loadbackuptestapk.sh:system/bin/loadbackuptestapk.sh

  作用就是编译的时候执行copy_file.sh脚本,复制apk到system对应目录下;并将loadbackuptestapk.sh脚本拷贝到out对应目录下。

三、文件脚本准备就绪了,开机的时候就需要运行loadbackuptestapk.sh脚本即可。需要修改LINUX/android/device/qcom/common/rootdir/etc/init.qcom.rc文件,在内容最后增加如下内容:

on post-fs-data
    mkdir /data/app 0771 system system 
    start loadbackuptestapk
service loadbackuptestapk /system/bin/loadbackuptestapk.sh
    user system
    group system
    disabled
    oneshot

作用就是指定脚本的权限,执行脚本。

至此,集成第三方apk,用户可卸载,恢复出厂设置可恢复功能已经完成。

发布了10 篇原创文章 · 获赞 0 · 访问量 2198

猜你喜欢

转载自blog.csdn.net/h1217256980/article/details/102502324
今日推荐