如何预置Android 手机 APK

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何预置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)
  
  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 整个工程
  
参考技术A 只有获得最高权限才能预置追答

还有就是有的软件预置到手机中的话会出现问题,譬如打不开了。

MTK Android O1平台预置apk

在MTK Android O1平台预置apk为可卸载时。预置到旧的路径system/vendor/operator/app会编译报错,"You cannot install files to out/target/product/xxx/system/vendor while building a separate vendor.img!"改为预置到vendor/operator/app就可以编译通过,预置可卸载成功,恢复出厂设置可恢复。
旧的
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_PREBUILT_JNI_LIBS := 
#LOCAL_PRIVILEGED_MODULE := true
LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
修改LOCAL_MODULE_PATH为
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/operator/app
以上。   


















以上是关于如何预置Android 手机 APK的主要内容,如果未能解决你的问题,请参考以下文章

怎样预置Android 手机 APK

Android:裁剪系统预置应用

MTK Android O1平台预置apk

MTK平台 Android9 预置apk找不到so

Android 添加自己的apk作为Launcher

Android平台GB28181设备接入端预置位查询(PresetQuery)探讨和技术实现