`

android 如何预置APK

 
阅读更多
android 如何预置APK

一、如何将带源码的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) www.2cto.com

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。

From: http://www.2cto.com/kf/201211/169358.html
分享到:
评论

相关推荐

    在Android系统源码中预置APK的方法

    "在Android系统源码中预置APK的方法" 在Android系统源码中预置APK是一种常见的需求,今天我们来分享这篇文章,教你如何在Android系统源码中预置APK。预置APK可以将我们需要的APK预置到系统中,以便用户使用。 预置...

    android修改默认google拼音输入法及预置apk

    预置apk意味着将应用集成到系统镜像中,使得该应用在设备启动时就已经存在。首先,你需要将Google拼音输入法的apk文件添加到`system/app`或`system/priv-app`目录下,根据应用是否需要系统权限来选择合适的目录。...

    Android.mk编译内置无源码apk

    在本场景中,我们将讨论如何使用`Android.mk`来编译内置一个无源码的APK,即`wukong.apk`,并将其预置到Android系统的`packages/apps/wukong`目录下。 首先,让我们深入了解`Android.mk`。这是一个Makefile,遵循...

    android apk内置

    本文将详细解析如何在MTK(MediaTek)平台的Android系统中预置APK,无论是有源码的还是无源码的,并讨论如何使预置的APK允许用户卸载以及在恢复出厂设置后能够恢复。 **一、预置带源码的APK** 1. 在`packages/apps...

    预置三方apk的so文件和so文件的执行权限.txt

    在深入探讨预置三方APK的SO文件及其执行权限之前,我们先来理解一下SO文件的基本概念以及其在Android系统中的作用。 #### SO文件简介 SO文件是Shared Object的简称,在Linux或类Unix系统中通常用于实现动态链接库...

    Android系统预装APK——为什么加入的apk没有显示出来?

    (1)在packages/apps下面创建和APK名字一样的目录(2)将WeChat.apk放到packages/apps/WeChat下面(3)在packages/apps/WeChat里创建Android.mk文件: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # ...

    Android PAI (PlayAutoInstall)预装APK 功能

    Android PAI(PlayAutoInstall)预装APK功能是一种针对Android设备的自动化应用程序安装机制,主要目的是为了在设备启动或首次设置时自动安装预先定义的应用程序。这一特性通常被设备制造商或运营商用于预装他们的...

    android 9内置apk可卸载的问题

    csdn博客看了许多,内置apk可卸载,总结起来三种。 第一种:说改android.mk, 放在data/app下面。 第二种:写一个脚本,开机的时候把目录复制到data/app下面。 第三种:改PackageManagerService.java,放在vendor/...

    Android系统 预置带jar包的源码到系统

    本案例实现源码带jar包预置到系统中编译,其中最主要的还是Android.mk文件的编写,由于平台不同可能下载之后无法直接在Android系统中编译,全志平台-T3是可以直接编译通过。demo仅提供参考,不做商业用途。

    Android Chrome预置主页及书签

    预置Chrome浏览器默认主页和书签方法,文件包含所需的工程文件及配置说明文档 可参考: blog:http://blog.csdn.net/jiulousanti/article/details/38869909

    可以卸载系统APK的方法

    在Android系统中,APK(Android Package)是应用程序的基本安装包,通常分为用户安装的应用(User Apps)和系统应用(System Apps)。系统应用是预装在Android设备中的应用,它们通常具有较高的权限,并且默认情况下...

    Android系统中的.apk文件和dex文件

    ### Android系统中的.apk文件和dex文件 #### 1. .apk文件 **APK**是**Android Package**的缩写,即Android安装包。它类似于Symbian平台上的Sis或Sisx文件,以及PC上的.exe安装文件。通过将APK文件直接传输到...

    回音噪音处理Demo.apk

    将实现各个平台上能快速使用的音频处理库。 核心算法包括: NS(Noise Suppression 噪声抑制) VAD(Voice Activity Detection 静音检测) ... AGC(Auto Gain Control 自动增益控制) 现在只有一个Android Demo 。

    Android应用开发之将SQLite和APK一起打包的方法

    在Android Studio中,预置的SQLite数据库处理方式有所不同。开发者通常会使用`SQLiteAssetHelper`库,这是一个方便的辅助类,能自动处理将数据库文件复制到正确的目录。 8. **注意事项**: - 为了确保数据安全,...

    TensorFlow Lite所有示例应用APK.zip

    压缩包中的"下载地址.txt"可能提供了APK的下载链接,用户可以通过安装这个APK在Android设备上体验图像分类功能。应用可能包含以下关键组件: - **Activity**: 主界面,用户可以通过相机或者本地图片进行图像分类。 -...

    工厂模式apk,附带源码,可以安装运行

    在Android开发领域,工厂模式并非是一种设计模式,而是指设备制造商为了调试和测试设备而预置的一种特殊模式,通常称为“工程模式”或“工厂模式”。在这个模式下,用户可以访问到设备的一些隐藏功能,如硬件测试、...

    android 7.0/8.0/9.0/10.0默认授予app权限

    7.0/8.0/9.0/10.0app在运行时都需要申请运行时权限 默认给与app所要申请的权限 不会弹出授权的申请框

    Android开发之APP安装后在桌面上不显示应用图标的解决方法

    Android应用图标在桌面上不显示的解决方法 Android应用图标在桌面上不显示是一个常见的问题,经常会困扰开发者。本文将详细介绍Android应用图标在桌面上不显示的解决方法,涉及Android activity相关属性设置技巧。 ...

    android打开pdf文件demo

    这个"android打开pdf文件demo"是一个APK工程,专门用于展示如何在Android设备上实现这一功能。以下将详细讲解涉及的知识点: 1. **Android SDK**:这个项目是基于Android SDK构建的,需要开发者对Android的开发环境...

Global site tag (gtag.js) - Google Analytics