前面遇到类似问题,是通过静默安装解决的。
后来查了下资料
编译会对 apk 进行对齐操作,那么就会导致使用 v2 签名的未对齐过的 apk 在编译后签名失效,进而无法成功安装。
可用out目录下编译生成的apk,
执行adb install安装,如果报的V2签名问题,可通过拷贝方式进行内置
android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(shell mkdir -p $(TARGET_OUT)/preloadapp/Testapp)
$(shell cp -r $(LOCAL_PATH)/Testapp.apk $(TARGET_OUT)/preloadapp/Testapp)
LOCAL_PACKAGE_NAME := Testapp
参考链接
预置“APK Signature Scheme v2”签名的apk失败 · 大专栏
另一种解法,mk加上下面这个属性
LOCAL_REPLACE_PREBUILT_APK_INSTALLED := $(LOCAL_PATH)/$(LOCAL_MODULE).apk
预置APK失败提示找不到so文件
这是因为Google在N上对selinux有更严格的限制,APK的so文件被selinux挡住了:
01-01 12:00:39.520000 5326 5326 W om.skype.raider: type=1400 audit(0.0:64): avc: denied { read } for name="libSkypeAndroid.so" dev="mmcblk0p22" ino=770074 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u: object_r:system_data_file:s0 tclass=file permissive=0
参考如下的solution:
Add the policy to alps/device/MediaTek/common|[platfrom]/sepolicy/basic|bsp|full/xxx.te
#====================== untrusted_app.te ======================
allow untrusted_app system_data_file:file r_file_perms;
[FAQ19894]N上预置APK失败提示找不到so文件-一牛网论坛 (16rd.com)
mtk faq:采用Signature Scheme v2签名方式的APK预置失败-一牛网论坛 (16rd.com)
Android 12 部分app内置成可卸载开机后找不到应用问题_android预制的apk在out目录有生成但是开机没有该应用-CSDN博客