举例是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