Android如何将无源码APK预置安装进系统
在我们的开发过程中,我们通常会需要将我们自己的apk直接安装进系统,使其开机可用,不需要再手动安装,这样做的好处有两个
1.使这个apk变成系统apk,其权限也变成系统权限,就不需要考虑这个apk是否有系统权限问题.
2.将这个apk与系统固件集成,不需要额外的安装,适合产品固件升级使用.
那么如何将无源码的apk预置进我们的系统呢,有两个方法.
方法一: 将apk放入packages/apps下,
-
在packages/apps目录下新建一个文件夹如"Test",然后在此文件夹里放入我们需要预置的apk,例如Test.apk
-
然后编写一个编译这个apk的 Android.mk,如下:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := Test LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_TAGS := optional LOCAL_BUILT_MODULE_STEM := package.apk LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_SRC_FILES := $(LOCAL_MODULE).apk LOCAL_CERTIFICATE := PRESIGNED include $(BUILD_PREBUILT)
其中LOCAL_MODULE := Test中Test为apk的名字,根据自己名字编写.
-
这一步是最容易忽视的,在编写完以上两步之后需要添加编译刚刚新添加的Test目录,需要在build/target/product/${Project}.mk中添加:
PRODUCT_PACKAGES += \ Test
-
重新编译,然后你就会发现out/target/product/Product/system/app/里看到你添加的apk,其中Product是根据自己的产品,比如我的是RK3326,就会是out/target/product/rk3326_mid/system/app/
方法二: 将apk放入device目录
-
在device/product/Product/下,其中这两个product是根据自己的产品而定,比如我的是rk3326,我的目录就是device/rockchip/rk3326,在这个目录下创建Test目录
-
将apk放入Test目录.
-
编写Android.mk放入Test目录,Android.mk如方法一
-
在device.mk中添加
PRODUCT_PACKAGES += \ Test
-
编译整个系统,在out下就可以看到刚刚预置的apk.