ANDROID-预制APK的四种方法总结

举例是RK3368-android8.1为例

1.第一种是device里面

若是希望可卸载预安装,新增文件夹 device/rockchip/rk3368/preinstall_del
若是不可卸载预安装,新增文件夹 device/rockchip/rk3368/preinstall
若是恢复出厂设置后不再恢复预安装应用,新增文件夹 device/rockchip/rk3368/preinstall_del_forever preinstall_del_forever

 2.第一种是package里面

系统设置为例:\sdk\packages\apps\Settings  

 3.第三种是frameworks里面

系统UI为例:\sdk\frameworks\base\packages\SystemUI

4.第四种是 vendor里面

视频播放为例:\sdk\vendor\rockchip\common\apps\RkVideoPlayer

注意:方法二和方法三只在删除自带APK里面使用,尽量不要在package和frameworks添加预制APK

最常用的是方法一

方法四比较麻烦的是设置Android.mk

 

###############################################################################
# MirrorService
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MirrorService
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE :=
LOCAL_PRIVILEGED_MODULE :=true
LOCAL_CERTIFICATE := platform
#LOCAL_OVERRIDES_PACKAGES := 
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#LOCAL_REQUIRED_MODULES :=
#LOCAL_PREBUILT_JNI_LIBS :=
include $(BUILD_PREBUILT)

 然后预制的APK名单可以去

 基本上就没有了,一步一个脚印,给自己一个总结 END!

强化篇:

最近预制又遇到问题了,预制之后报错

FAILED: /bin/bash -c "(mkdir -p out/target/product/rk3288/vendor0 ) && (cp -Rf out/target/product/rk3288/vendor/* out/target/product/rk3288/vendor0/ ) && (mkdir -p out/target/product/rk3288/obj/PACKAGING/vendor_intermediate

error: ext4_allocate_best_fit_partial: failed to allocate 4237 blocks, out of space?

[ 81% 45/55] build out/target/product/rk3288/obj/NOTICE.html
Combining NOTICE files into HTML
Combining NOTICE files into text
[ 89% 49/55] Target vendor0 fs image: out/target/product/rk3288/vendor0.img
FAILED: /bin/bash -c "(mkdir -p out/target/product/rk3288/vendor0 ) && (cp -Rf out/target/product/rk3288/vendor/* out/target/product/rk3288/vendor0/ ) && (mkdir -p out/target/product/rk3288/obj/PACKAGING/vendor_intermediates && rm -rf out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"fs_type=ext4\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"system_size=2147483648\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"userdata_fs_type=f2fs\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"cache_size=69206016\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"vendor_fs_type=ext4\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"vendor_size=117440512\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"extfs_sparse_flag=-s\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"squashfs_sparse_flag=-s\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"selinux_fc=out/target/product/rk3288/root/file_contexts.bin\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"skip_fsck=true\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (PATH=out/host/linux-x86/bin/:\$PATH ./build/tools/releasetools/build_image.py out/target/product/rk3288/vendor0 out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt out/target/product/rk3288/vendor0.img out/target/product/rk3288/system ) && (size=\$(for i in out/target/product/rk3288/vendor; do stat --format \"%s\" \"\$i\" | tr -d '\\n'; echo +; done; echo 0); total=\$(( \$( echo \"\$size\" ) )); printname=\$(echo -n \"out/target/product/rk3288/vendor\" | tr \" \" +); img_blocksize=135168; twoblocks=\$((img_blocksize * 2)); onepct=\$(((((121110528 / 100) - 1) / img_blocksize + 1) * img_blocksize)); reserve=\$((twoblocks > onepct ? twoblocks : onepct)); maxsize=\$((121110528 - reserve)); echo \"\$printname maxsize=\$maxsize blocksize=\$img_blocksize total=\$total reserve=\$reserve\"; if [ \"\$total\" -gt \"\$maxsize\" ]; then echo \"error: \$printname too large (\$total > [121110528 - \$reserve])\"; false; elif [ \"\$total\" -gt \$((maxsize - 32768)) ]; then echo \"WARNING: \$printname approaching size limit (\$total now; limit \$maxsize)\"; fi ) && (echo \"Target vendor1 fs image: out/target/product/rk3288/vendor1.img\" ) && (mkdir -p out/target/product/rk3288/vendor1 ) && (cp -Rf out/target/product/rk3288/vendor/* out/target/product/rk3288/vendor1/ ) && (mkdir -p out/target/product/rk3288/obj/PACKAGING/vendor_intermediates && rm -rf out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"fs_type=ext4\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"system_size=2147483648\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"userdata_fs_type=f2fs\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"cache_size=69206016\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"vendor_fs_type=ext4\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"vendor_size=117440512\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"extfs_sparse_flag=-s\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/ve 
ndor_image_info.txt ) && (echo \"squashfs_sparse_flag=-s\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"selinux_fc=out/target/product/rk3288/root/file_contexts.bin\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (echo \"skip_fsck=true\" >>  out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt ) && (PATH=out/host/linux-x86/bin/:\$PATH ./build/tools/releasetools/build_image.py out/target/product/rk3288/vendor1 out/target/product/rk3288/obj/PACKAGING/vendor_intermediates/vendor_image_info.txt out/target/product/rk3288/vendor1.img out/target/product/rk3288/system ) && (size=\$(for i in out/target/product/rk3288/vendor; do stat --format \"%s\" \"\$i\" | tr -d '\\n'; echo +; done; echo 0); total=\$(( \$( echo \"\$size\" ) )); printname=\$(echo -n \"out/target/product/rk3288/vendor\" | tr \" \" +); img_blocksize=135168; twoblocks=\$((img_blocksize * 2)); onepct=\$(((((121110528 / 100) - 1) / img_blocksize + 1) * img_blocksize)); reserve=\$((twoblocks > onepct ? twoblocks : onepct)); maxsize=\$((121110528 - reserve)); echo \"\$printname maxsize=\$maxsize blocksize=\$img_blocksize total=\$total reserve=\$reserve\"; if [ \"\$total\" -gt \"\$maxsize\" ]; then echo \"error: \$printname too large (\$total > [121110528 - \$reserve])\"; false; elif [ \"\$total\" -gt \$((maxsize - 32768)) ]; then echo \"WARNING: \$printname approaching size limit (\$total now; limit \$maxsize)\"; fi )"
error: failed to build out/target/product/rk3288/vendor0.img from out/target/product/rk3288/vendor0
Running:  mkuserimg.sh -s out/target/product/rk3288/vendor0 out/target/product/rk3288/vendor0.img ext4 vendor 117440512 -D out/target/product/rk3288/system -L vendor out/target/product/rk3288/root/file_contexts.bin
make_ext4fs -s -T -1 -S out/target/product/rk3288/root/file_contexts.bin -L vendor -l 117440512 -a vendor out/target/product/rk3288/vendor0.img out/target/product/rk3288/vendor0 out/target/product/rk3288/system
error: ext4_allocate_best_fit_partial: failed to allocate 4237 blocks, out of space?
Creating filesystem with parameters:
    Size: 117440512
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7168
    Inode size: 256
    Journal blocks: 1024
    Label: vendor
    Blocks: 28672
    Block groups: 1
    Reserved block group size: 7
[ 89% 49/55] Construct recovery from boot
chunk 0: type 0 start 0 len 8142858
chunk 1: type 2 start 8142858 len 2939648
chunk 2: type 0 start 9646876 len 3300
Construct patches for 3 chunks...
patch   0 is 209 bytes (of 8142858)
patch   1 is 4062086 bytes (of 1504018)
patch   2 is 194 bytes (of 3300)
chunk   0: normal   (         0,    8142858)         209
chunk   1: deflate  (   8142858,    6232277)     4062086  (null)
chunk   2: normal   (  14375135,      10017)         194
[ 89% 49/55] Building with Jack: out/target/common/obj/APPS/LiveTv_intermediates/classes.noshrob.jack
ninja: build stopped: subcommand failed.
make: *** [ninja_wrapper] Error 1

#### make failed to build some targets (01:28 (mm:ss)) ####

经过一番查改之后,解决方法:吧空间改大,因为预制APK太大了

\sdk\device\rockchip\rk3288\parameter.txt
FIRMWARE_VER:7.1
MACHINE_MODEL:rk3288
MACHINE_ID:007
MANUFACTURER:RK3288
MAGIC: 0x5041524B
ATAG: 0x60000800
MACHINE: 3288
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
CMDLINE: console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:
0x00002000@0x00002000(uboot),
0x00002000@0x00004000(trust),
0x00002000@0x00006000(misc),
0x00008000@0x00008000(resource),
0x0000C000@0x00010000(kernel),
0x00010000@0x0001C000(boot),
0x00010000@0x0002C000(recovery),
0x00038000@0x0003C000(backup),
0x00040000@0x00074000(cache),
0x00400000@0x000B4000(system),
0x00008000@0x004B4000(metadata),
- 0x00038000@0x004BC000(vendor0),
- 0x00038000@0x004f4000(vendor1),
- 0x00001000@0x0052c000(oem),
- -@0x0052d000(userdata)
+ 0x0007D000@0x004BC000(vendor0),
+ 0x0007D000@0x00539000(vendor1),
+ -@0x005B6000(userdata)

问题二:

 资料都说这个是吧APK预制到data分区

我编译的时候out/data/app/目录下面都有APK,但是程序一下载进去就不见APK安装,我给这个分区权限,但是还是无法预制到,直接push到里面重启也是安装成功的,

 解决方法:data分区很奇怪,无解

最后还是改成了

 安装到system/app分区了,我也很无奈.

问题三:

遇到google控件删除

\sdk\vendor\partner_gms\products\gms.mk

 

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旋风旋风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值