gpt4 book ai didi

bash - 如何向 AOSP 中的预构建应用程序(无源代码)添加额外权限

转载 作者:行者123 更新时间:2023-11-29 09:25:24 33 4
gpt4 key购买 nike

我有一个没有特定 android 权限的应用程序(例如 android.permission.CHANGE_CONFIGURATION )。

  • 我没有它的源代码。
  • 我正在研究 AOSP。

  • 我预先构建了这个应用程序,如:
  • 将APK放入/device/model/apps/HERE
  • 在 Android.mk 中添加这些片段代码:
  • define PREBUILT_templateByMe
    LOCAL_MODULE := $(1)
    LOCAL_MODULE_CLASS := APPS
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    LOCAL_CERTIFICATE := PRESIGNED
    LOCAL_SRC_FILES := $$(LOCAL_MODULE).apk
    LOCAL_REQUIRED_MODULES := $(2)
    include $(BUILD_PREBUILT)
    endef
    define PREBUILT_APP_templateByMe
    include $$(CLEAR_VARS)
    LOCAL_MODULE_TAGS := optional
    $(call PREBUILT_templateByMe, $(1), $(2))
    endef
    prebuilt_appsByMe := \
    myapp
    $(foreach app,$(prebuilt_appsByMe), \
    $(eval $(call PREBUILT_APP_templateByMe, $(app),)))
    include $(call all-makefiles-under,$(LOCAL_PATH))

    它运行良好,并且 myapp 预构建到操作系统。

    现在我想将该特定的 android 权限( android.permission.CHANGE_CONFIGURATION )添加到 myapp。

    我读了 this , this和许多其他文档,但我不知道应用程序的这个 XML 文件的内容;或者有可能吗?!
    (这些链接是否有助于指导我了解 XML 文件内容的正确方向? thisthis)

    我尝试了另一种方法,但没有用(预安装应用程序并通过 shell 脚本添加权限:
    注:首先,我应该说它以前在另一个自定义 AOSP 上工作过,但在这个上不起作用!
  • 将APK放入/device/model/apps/HERE
  • 在 Android.mk 中添加此代码片段
  • include $(CLEAR_VARS)
    LOCAL_MODULE := myapp.apk
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_PATH := $(TARGET_OUT)/preinstall
    LOCAL_SRC_FILES := myapp.apk
    include $(BUILD_PREBUILT)
    include $(CLEAR_VARS)
    LOCAL_MODULE := preinstall.sh
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_PATH := $(TARGET_OUT)/preinstall
    LOCAL_SRC_FILES := preinstall.sh
    include $(BUILD_PREBUILT)
  • preinstall.sh 的内容:
  • #!/system/bin/sh MARK=/data/local/symbol_thirdpart_apks_installed
    PKGS=/system/preinstall/
    if [ ! -e $MARK ]; then
    echo "booting the first time, so pre-install some APKs."
    busybox find $PKGS -name "*\.apk" -exec sh /system/bin/pm install {} \; touch $MARK
    echo "OK, installation complete."
    fi
    busybox sh /system/bin/pm grant com.example.myapp android.permission.CHANGE_CONFIGURATION;
  • 在 init.rc 文件中将此 shell 脚本称为启动服务,例如:on boot
    start preinstallByMe
  • service preinstallByMe /system/bin/sh /system/preinstall/preinstall.sh
    class main
    user root
    group root
    disabled
    oneshot

    但似乎不是电话。
  • 即使 init.rc 文件中的这些片段代码也不起作用:
  • service installapk /system/preinstall/preinstall.sh
    class main
    oneshot
  • on boot
    exec /system/preinstall/preinstall.sh
  • busybox /system/preinstall/preinstall.sh
  • pm grant com.example.myapp android.permission.CHANGE_CONFIGURATION;

  • 注:如果我从 shell 手动调用 preinstall,它就可以工作。
    附注:如果您不允许调用您的脚本,您可以通过在 /system/core/include/private/android_filesystem_config.h 中添加类似内容来为其添加权限。 :
    { 00755, AID_ROOT, AID_ROOT, 0, "system/preinstall/preinstall.sh"},
    导致第二种方式(预安装并通过 shell 添加权限),在这个自定义 AOSP 中,不起作用,我将从头开始,通过预构建将特定的 android 权限添加到我的应用程序中; 但是如果有人知道第二个解决方案有什么问题,我很感激。

    最佳答案

    在shell脚本文件中,你必须使用:

    pm grant com.example.myapp android.permission.CHANGE_CONFIGURATION

    并将shell脚本复制到/system/bin/

    在 init.rc 中,启动完成后执行 shell:
    on property:sys.boot_completed=1
    exec /system/bin/preinstall.sh

    我已经成功了

    关于bash - 如何向 AOSP 中的预构建应用程序(无源代码)添加额外权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397443/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com