教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> > 电脑基础知识> 如何预置APK

如何预置APK

上传者:苏均宇
|
上传时间:2015-05-06
|
次下载

如何预置APK

MTK 6582 6572 如何内置APK

Platform: FAQ Content

[DESCRIPTION]

1, 如何将带源码的 APK 预置进系统?

2, 如何将无源码的APK预置进系统?

3, 如何预置APK使得用户可以卸载,恢复出厂设置时不能恢复?

4, 如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?

[SOLUTION]

一、如何将带源码的APK预置进系统?

1) 在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以

预置一个名为Test的APK 为例

2) 将 Test APK的Source code 拷贝到 Test 文件夹下,删除 /bin 和 /gen 目

3) 在 Test 目录下创建一个名为 Android.mk的文件,内容如下:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := Test

include $(BUILD_PACKAGE)

4) 打开文件 build/target/product/${Project}.mk (其中 ${Project} 表示工程

名)

将 Test 添加到 PRODUCT_PACKAGES 里面。

5) 重新 build 整个工程

二、如何将无源码的 APK 预置进系统?

1) 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名

为Test的APK为例

2) 将 Test.apk 放到 packages/apps/Test 下面

3) 在 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

include $(BUILD_PREBUILT)

4) 打开文件 build/target/product/${Project}.mk (其中 ${Project} 表示工程

名)

将 Test 添加到 PRODUCT_PACKAGES 里面。

MTK 6582 6572 如何内置APK

5) 将从Test.apk解压出来的 so库拷贝到alps/vendor/mediatek/${Project}/

artifacts/out/target/product/${Project}/system/lib/目录下,若无 so 库,则去掉此步;

6) 重新 build 整个工程

注:Google在KK上修改protection Level为System的permission控管机制 如果App使用System Level的permission,需要預置到/system/priv-app底下 (原在/system/app)。

举例来讲:

关于获取副SD卡的写入权限的案例,App需要在AndroidManifest.xml宣告WRITE_MEDIA_STORAGE permission获取副卡的写入权限

(Ref:

已知android.permission.WRITE_MEDIA_STORAGE属于SystemOrSignature level的permission,定义如下:

KK上,您需要采用以下方法,获取该permission:

修改Android.mk,增加LOCAL_PRIVILEGED_MODULE := true,以声明app需要放在/system/priv-app下。

三、如何预置APK使得用户可以卸载,恢复出厂设置时不能恢复?

1) 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例

2) 将 Test.apk 放到 packages/apps/Test 下面;

3) 在 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)

4) 打开文件 build/target/product/${Project}.mk (其中 ${Project} 表示工程

名)

将 Test 添加到 PRODUCT_PACKAGES 里面。

5) 重新 build 整个工程

注意:这个比不能卸载的多了一句

LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)

MTK 6582 6572 如何内置APK

四、如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复? 有两种方法:

方法一:预置apk到system/vendor/operator下面

具体做法如下:

在packages/apps下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例:

1) 将Test.apk 放到 packages/apps/Test 下面;

2) 在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)/vendor/operator/app

include $(BUILD_PREBUILT)

3) 打开文件 build/target/product/${Project}.mk (其中 ${Project} 表示工

程名), 将 Test 添加到 PRODUCT_PACKAGES 里面

4) 重新 build 整个工程

方法二:使用MTK_SPECIAL_FACTORY_RESET,再配合.keep_list / .restore_list

为了让用户在将预置的 APK 卸载后,恢复出厂设置时能恢复,敝司做了一个 Feature,但在ALPS.GB.TDFD.MP.V1.7和 ALPS.GB.FDD2.MP.V4.7版本后支持,若贵司版本低于此版本,请申请 Patch ALPS00092543;

大致的做法是:

- 在vendor/mediatek/project_name/artifacts/out/target/product/project_

将该应用的apk文件name/system目录下新建一个名为appbackup的文件夹,

copy到appbackup文件夹下

- 在mediatek/config/project_name/ProjectConfig.mk文件中添加定义:MTK_SPECIAL_FACTORY_RESET=yes

- 在vendor/mediatek/project_name/artifacts/out/target/product/project_name/data/app下创建一个.restore_list,并且在其中添加语句:

/system/appbackup/xxx.apk(注意,.restore_list中的每一行都要以"/system” 开头)

当卸载了data/app下的apk后,再恢复出厂设置,系统会从 .restore_list 中读取apk的名字,然后从 appbackup 文件中把apk重新拷贝到data/app下,从而恢复data/app下已经卸载了的apk。

同时,还需要在vendor/mediatek/project_name/artifacts/out/target/product/project_name/data/app目录下创建一个空文件,命名为.keep_list(.keep_list的用途是,如果安装了A,B,C三个APK到DATA,在恢复出厂设置时,想要将

MTK 6582 6572 如何内置APK

A保留,那么就将A写入到.KEEP_LIST,这样,A会被保留,B,C会被删除。如果没有这个文件,那么所有的APK都会被保留。具体可以参考FAQ03437和FAQ05341)。

以上操作过程,DCC 上面也有相应的文档可供参考,文档的名字叫: Android

里面有一项:SD upgrade application note.docx,MTK special factory reset,

就详细地介绍了以上操作步骤。

注:该方法从kk开始不建议使用,原因:从KK版本开始,DVM取dex文件的路径变成了绝对路径,而PMS和installd用的都是文件路径,如果用MTK_SPECICAL_FACTORY_RESET配合.restore_list的方式恢复apk的话,这种上下不sync会导致一些问题,比如:恢复出厂设置后三方应用报错、恢复出厂设置后user版本move to phonestorage报错、多次恢复出厂设置开机提示"Android系统正在升级"等。

[DESCRIPTION]

如何确认apk的签名?

[SOLUTION]

预置在vendor/.../system/app下面的apk会被签上系统签名,这有可能导致apk由于签名不一致从而无法升级,比如按照此方法预置Gmail。

请到我司MTK online上,搜索FAQ,关键字“预置apk”,按照写android.mk的方式预置apk,android.mk中的关键的一点是:

LOCAL_CERTIFICATE := PRESIGNED

同时,可以使用如下command来确认apk使用的key(下面${your_apk}代表apk的名字):

jarsigner -verify -verbose -certs ${your_apk}>log.txt

log.txt里面Email address、CN、 OU、 O对应的信息就是apk签名相关的信息。

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注视频

三年级英语单词记忆下册(沪教版)第一二单元复习
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,湖北省
外研版英语三起5年级下册(14版)Module3 Unit2
沪教版牛津小学英语(深圳用) 四年级下册 Unit 3
精品·同步课程 历史 八年级 上册 第15集 近代科学技术与思想文化
第19课 我喜欢的鸟_第一课时(二等奖)(人美杨永善版二年级下册)_T644386
冀教版小学数学二年级下册第二单元《有余数除法的整理与复习》
第12章 圆锥曲线_12.7 抛物线的标准方程_第一课时(特等奖)(沪教版高二下册)_T274713
冀教版小学数学二年级下册第二单元《有余数除法的竖式计算》
沪教版八年级下册数学练习册20.4(2)一次函数的应用2P8
冀教版小学数学二年级下册第二单元《余数和除数的关系》
苏教版二年级下册数学《认识东、南、西、北》
冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣
8.对剪花样_第一课时(二等奖)(冀美版二年级上册)_T515402
冀教版英语四年级下册第二课
第五单元 民族艺术的瑰宝_15. 多姿多彩的民族服饰_第二课时(市一等奖)(岭南版六年级上册)_T129830
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
北师大版八年级物理下册 第六章 常见的光学仪器(二)探究凸透镜成像的规律
沪教版牛津小学英语(深圳用) 四年级下册 Unit 12
人教版历史八年级下册第一课《中华人民共和国成立》
19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T502436
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,安徽省
七年级英语下册 上海牛津版 Unit5
8 随形想象_第一课时(二等奖)(沪教版二年级上册)_T3786594
外研版英语七年级下册module3 unit2第一课时
苏科版数学八年级下册9.2《中心对称和中心对称图形》
二次函数求实际问题中的最值_第一课时(特等奖)(冀教版九年级下册)_T144339
冀教版英语三年级下册第二课
北师大版小学数学四年级下册第15课小数乘小数一