前言
         欢迎大家我分享和推荐好用的代码段~~
声明
         欢迎转载,但请保留文章原始出处:
         CSDN
http://www.csdn.net
         雨季o莫忧离:http://blog.csdn.net/luckkof

正文

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 里面。

5)     将从Test.apk解压出来的 so库拷贝到alps/vendor/mediatek/${Project}/artifacts/out/target/product/${Project}/system/lib/目录下,若无 so 库,则去掉此步;

6)     重新 build 整个工程

三、如何预置APK使得用户可以卸载?

有两种方法:

方法一:

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 卸载后,恢复出厂设置时能恢复?

为了让用户在将预置的 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_name/system目录下新建一个名为appbackup的文件夹,将该应用的apk文件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。

以上操作过程,DCC 上面也有相应的文档可供参考,文档的名字叫: Android SD upgrade application note.docx,里面有一项:MTK special factory reset,就详细地介绍了以上操作步骤。

Android 如何预置APK M的更多相关文章

  1. MTK Android O1平台预置apk

    在MTK Android O1平台预置apk为可卸载时.预置到旧的路径system/vendor/operator/app会编译报错,"You cannot install files to ...

  2. Android预置Apk方法

    这一套8.0过时了 需要修改pms代码 否则apk会被pms删除掉 因为工作需要,经常要开发和合入系统App,所以在此开篇作为收集和记录Android合入系统应用的方法,以备日后查阅. 一.预置apk ...

  3. MTK Android 预置APK

    [FAQ03038] 如何预置APK [DESCRIPTION]1, 如何将带源码的 APK 预置进系统?2, 如何将无源码的APK预置进系统?3, 如何预制APK使得用户可以卸载?4, 如何使得用户 ...

  4. Android 预置APK

    1.   预置apk,使其不可卸载   第一步:      在 "/vendor/huawei/packages/apps" 目录下创建一个对应名称的文件夹.   第二步:   将 ...

  5. MTK 预置apk

    一.如何将带源码的APK预置进系统? 1)     在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例 2)     将 Test ...

  6. [Android Pro] Android打包一个Apk后,如何查看它的VersionCode、VersionName 等等。

    Android打包成Apk后,其实是一个压缩文件,我们用winrar打开也能看到里面的文件结构.还能看到AndroidManifest.但是里面的内容有点问题. 不知道是因为加密还是Android就是 ...

  7. 上载android应用的apk文件变成了zip-网下转载的解决方案

    下载android应用的apk文件变成了zip--网上转载的解决方案 下载android应用的apk文件变成了zip--网上转载的解决方案 解决方案一. 最近把开发的android应用放在公司网站上, ...

  8. Xamarin如何生成Android项目的APK

    Xamarin如何生成Android项目的APK 首先需要选择Release模式生成项目.然后从“生成”菜单中选择Export Android Package命令,就可以导出APK包.APK保存在An ...

  9. NDK(11)Android.mk编译APK模板

    转自 :  http://hubingforever.blog.163.com/blog/static/1710405792011656434982/ 以下仅是使用Android.mk编译APK程序的 ...

随机推荐

  1. 快速将wax配置到项目中进行lua开发

    通过Finder浏览到你保存该项目的文件夹.创建三个新的文件夹:wax.scripts和Classes. 第一:首先,下载源代码的压缩包.Wax放在GitHub上(https://github.com ...

  2. C#编程(七十二)----------DynamicObject和ExpandoObject

    DynamicObject和ExpandoObject 1.ExpandoObject表示一个对象,该对象包含可在运行时动态添加和移除的成员.这个类和动态类型有关,这个类能做些什么? 案例: //Ex ...

  3. android studio每次启动都要在fetching Android sdk compoment information停好久 怎么解决?

    网上有人给出了方案:1)进入刚安装的Android Studio目录下的bin目录.找到idea.properties文件,用文本编辑器打开.2)在idea.properties文件末尾添加一行: d ...

  4. 限制EditText必须输入中文的方法

    给EditText做限制时,我们想要输入的字符串必须都是中文,不出现任何其他字符,下面的类可以很好的实现这个要求. InputLenLimit.java package com.kale.button ...

  5. [Android Pro] 开发一流的 Android SDK:Fabric SDK 的创建经验

    cp from : https://academy.realm.io/cn/posts/oredev-ty-smith-building-android-sdks-fabric/ Ty Smith T ...

  6. 安卓开发环境配置及HelloWorld

    一:JAVA 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1.1 ...

  7. 使用Mobx插件查看mobx的变量值

    mobx浏览器调试:可以知道store值.方法 在chrome上安装插件Mobx,可以查看store.history.match.location等内容

  8. CSS 强制换行和禁止换行强制换行 和禁止换行样式

    强制换行 1.word-break: break-all;       只对英文起作用,以字母作为换行依据. 2.word-wrap: break-word;   只对英文起作用,以单词作为换行依据. ...

  9. noip 1998 洛谷P1013 进制位

    题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E K ...

  10. 里氏替换原则(Liskov Substitution Principle,LSP)

    肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑.其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的. 定义1:如果对每一 ...