一,预装到system/preinstall
-
这个目录下的apk会在系统第一次启动,在launcher启动之前安装到用户data目录,用户可自行卸载。
-
将apk放在
android/device/softwinner/common/prebuild-common/preinstallapk/
目录中,apk的名字不可使用中文,空格或者特殊符号,否则可能安装不成功。
接着在同目录的Android.mk文件中加入:include $(CLEAR_VARS) LOCAL_MODULE := APK_MODULE_NAME(apk名) LOCAL_MODULE_TAGS := optional LOCAL_CERTIFICATE := PRESIGNED LOCAL_MODULE_PATH := $(TARGET_OUT)/preinstall LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_SRC_FILES := $(LOCAL_MODULE).apk include $(BUILD_PREBUILT)
-
在方案mk文件
android/device/softwinner/octopus-perf/octopus_perf.mk
中PRODUCT_PACKAGES项中加入:#预装多个apk用"\"分开 PRODUCT_PACKAGES += APK_MODULE_NAME(apk名)
二,预装到system/app
-
如果apk有lib,则将其放到
android/device/softwinner/common/prebuild-common/apk/apklib
目录中,并在同目录的Android.mk文件中加入:include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional #so库的文件名,建议将同一apk的so库写在一起,用"\"分开; LOCAL_PREBUILT_LIBS := libjni1.so \ libjni2.so include $(BUILD_MULIT_PREBUILT)
-
将apk放入
android/device/softwinner/common/prebuild-common/apk/
目录下,并在同目录的Android.mk文件中加入:include $(CLEAR_VARS) LOCAL_MODULE := APK_MODULE_NAME(apk名) LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := APPS LOCAL_SRC_FILES := $(LOCAL_MODULE).apk LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_CERTIFICATE := PRESIGNED LOCAL_REQUIRED_MODULES := libjni1 \ libjni2 #如果使用上面第一点的的方式添加so库,则不使用这个 #LOCAL_PREBUILT_JNI_LIBS := @lib/$(TARGET_ARCH)/libjni.so(使用@直接引用apk内部so) #如果有两个apk包名相同,而apk名字不同,则可以把不用的那个apk名字加在此处,有意想不到的效果! #LOCAL_OVERRIDES_PACKAGES := OVERRIDES_MODULE(要替换的apk) include $(BUILD_PREBUILT)
-
在方案mk文件
android/device/softwinner/octopus-perf/octopus_perf.mk
中PRODUCT_PACKAGES项中加入:#预装多个apk用"\"分开 PRODUCT_PACKAGES += APK_MODULE_NAME(apk名)
三,将apk添加到指定目录(system/priv-app)
将apk放在常规目录里,如:android/device/softwinner/octopus-common/apk
,然后设置此目录下的Android.mk,基本和其他apk一样的设置,但是要添加一行:
#这个宏如果设置为true,就代表要将apk添加到system/priv-app,不设置或者设置为false,则不添加到此目录;
LOCAL_PRIVILEGED_MODULE := true
注:安装到此目录下的apk不可卸载.