预置应用主要有4种情况:
1、如何将带源码的应用预置进系统?
2、如何将无源码的应用预置(APK)进系统?
3、如何预置应用使得用户可以卸载,恢复出厂设置时不能恢复?
4、如何预置应用使得用户可以卸载,恢复出厂设置时能够恢复?
实现方法:
1、如何将带源码的应用预置进系统?
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 整个工程。
2、如何将无源码的应用预置(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 整个工程。
注意:如果App使用系统级别的permission,需要预置到/system/priv-app目录下(原来在/system/app)。
例如:获取SD卡的写入权限,需要在AndroidManifest.xml中声明WRITE_MEDIA_STORAGE的permission获取SD卡写入权限。需要采用以下方法,获取该permission:修改Android.mk,增加LOCAL_PRIVILEGED_MODULE:=true,以声明app需要放在/system/priv-app下。
3、如何预置应用使得用户可以卸载,恢复出厂设置时不能恢复?
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)。
4、如何预置应用使得用户可以卸载,恢复出厂设置时能够恢复?
在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 整个工程
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)