Android 内置APK 无法开机(开机后apk闪退)

发布时间:2023年12月17日

介绍

在开发时我们会遇到一些客户提供应用来让我们内置到系统中,当我们内置后有事会导致无法开机,这是由于应用申请了一些敏感权限,我们只要通过log找到应用所需的权限并在白名单中添加即可。

如无法开机先刷正常软件打开 usb调试 成功连接usb后关机
刷入问题软件开机等待一会(烧录软件不要勾选userdata)
输入命令
adb logcat > D:/logs/boot.log
(waiting for device -)如出现括号内容则 ctry+c 重新执行
adb logcat > D:/logs/boot.log
直到进入recover 结束log
打开log 找关键字 whitelist 会提示包名和所需权限

log信息如下 明显是了包名

whitelist: {com.telosystems2.poc: android.permission.READ_LOGS, com.telosystems2.poc: android.permission.MOUNT_UNMOUNT_FILESYSTEMS}

路径:vendor/mediatek/proprietary/frameworks/base/data/etc/privapp-permissions-mediatek.xml

然后在此路径添如下
<privapp-permissions package="com.telosystems2.poc">
        <permission name="android.permission.READ_LOGS"/>
        <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
</privapp-permissions>

以上步骤弄完后 如打开apk闪退 logcat 抓取apklog

FATAL EXCEPTION: main 12-27 18:53:40.594 4001 4001 E AndroidRuntime: Process: com.telosystems2.poc, PID: 4001 12-27 18:53:40.594 4001 4001 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/app/Instatalk/Instatalk.apk!/lib/armeabi-v7a/libairtalkee.so" needed or dlopened by "/apex/com.android.runtime/lib/libnativeloader.so" is not accessible for the namespace "classloader-namespace"

此时需要提取APK的so文件
将apk名改为.zip 无需解压 提取对应目录所有 so文件 拉入到 prebuilts
查看对应库是32/64位 进行编译

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := Instatalk
LOCAL_SRC_FILES := Instatalk.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_DEX_PREOPT := false
LOCAL_ENFORCE_USES_LIBRARIES := false
#此处位32位编译命令
LOCAL_PREBUILT_JNI_LIBS_arm := $(subst $(LOCAL_PATH)/,,$(wildcard $(LOCAL_PATH)/*.so))
include $(BUILD_PREBUILT)

文章来源:https://blog.csdn.net/dsadff546765/article/details/132753257
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。