关于内置APK客户可卸载问题

正确内置应用的方法
MTK 官方文档推荐两种方式
方法一:
7) 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以 预制一个名为Test的APK为例
8) 将 Test.apk 放到 packages/apps/Test 下面;
9) 在 packages/apps/Test 下面创建文件 Android.mk,文件内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
include $(BUILD_PREBUILT)
10) 打开文件 build/target/product/${Project}.mk (其中 ${Project} 表示工程名)
将 Test 添加到 PRODUCT_PACKAGES 里面。
11) 将从Test.apk解压出来的 so库拷贝到alps/vendor/mediatek/${Project}/artifacts/out/target/product/${Project}/system/lib/目录下,若无 so 库,则去掉此步;
12) 重新 build 整个工程
注意:这个比不能卸载的多了一句
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)


方法二:
4) 将需要预置的 apk 拷贝到:
vendor/mediatek/${Project}/artifacts/out/target/product/${Project}/data/app/
5) 重新 build 整个工程
注意:如果没有相应目录则需手动创建。


两种方法不同造成的区别是
若使用第二种方法,有可能出现这样的问题:若此apk需要云端更新时,更新后的文件安装时,会提示签名冲突,安装失败
第一种方法有个关键字
LOCAL_CERTIFICATE := PRESIGNED
加这句的效果是:告诉编译系统,此apk不需要系统签名,这样就不会有应用不能升级的问题了
(但是如果多方合作出image时,因为代码不开放,但是还需要系统签名的权限,那么就需要修改应用的签名
Android.mk中 LOCAL_CERTIFICATE := platform)

若想预置可卸载的apk可以在线升级安装,推荐第一种方法

高手达人轻拍砖,纯分享

相关文档
最新文档