Android:在 AOSP 构建中包含 su 二进制可执行文件

2024-01-31

从源代码构建 Android 后,我一直试图将 su 二进制文件包含在 /out/.../system/xbin/su 中。我有 su 二进制文件(来自 Chainfire)作为可执行文件,但我似乎无法将其包含在 AOSP 构建中。

我遇到的所有示例或解决方案都在 Android_Source_Root 中讨论了以下内容:

  1. 从中删除 su 目录system/extras/并将 su-binary 目录(取自 ChainsDD)包含在 external/ 中。
  2. 修改文件system/extras/su/Android.mk with "LOCAL_MODULE_TAGS := 可选“和文件build/target/product/core.mk将 su 包含在 PRODUCT_PACKAGES 中。

所有这些文件的 su 目录中都有 su.c、su.h 和其他文件,用于构建 su 包。

我想知道的是,当我仅拥有“su 二进制可执行文件”而不需要包含 su.c 或任何这些文件时,如何在 AOSP 构建中包含 su ? su目录应该放在哪里,Android.mk文件的内容是什么?

请提供建议并感谢您的宝贵时间。


我设法解决了我提到的问题。以下是我解决该问题的两种方法,但我遇到了“面临的问题”标题中解释的另一个问题。

*注意:我将su二进制文件放在prebuilts/su中

解决方案1

我修改了device.mk文件中的device/目录。我将以下内容添加到文件中。

PRODUCT_COPY_FILES += \
    prebuilts/su/su:system/xbin

解决方案2

我修改了device.mk文件中的device/目录。我将以下内容添加到文件中。

PRODUCT_PACKAGES += \
    su

然后我添加并插入以下内容到Android.mk文件输入prebuilts/su/su.

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := su
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_CLASS := EXECUTABLES

LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
LOCAL_UNSTRIPPED_PATH := $(LOCAL_MODULE_PATH)

include $(BUILD_PREBUILT)

面临的问题

我无法在将 su 二进制文件复制到system/xbin目录。我尝试了以下几种方法,但没有结果。

  1. 我在以下行之后添加了以下内容解决方案1它一直给我错误chmod ... file cannot be found.

        $(shell chmod 6755 out/<product>/system/xbin/su)
    
  2. 我在中添加了以下内容解决方案2之前的Android.mk文件include $(BUILD_PREBUILT)行,但没有更改文件的权限。

    #Trial 1.
    SU_BINARY := $(LOCAL_MODULE_PATH)/su
    $(SU_BINARY)-post: su
        $(shell chmod 6755 $(LOCAL_MODULE_PATH)/su)
    
    #Trial 2 without "-post".
    SU_BINARY := $(LOCAL_MODULE_PATH)/su
    $(SU_BINARY): su
        $(shell chmod 6755 $(LOCAL_MODULE_PATH)/su)
    
    #Trial 3.
    SU_BINARY := $(LOCAL_MODULE_PATH)/su
    $(SU_BINARY): su
        chmod 6755 $(LOCAL_MODULE_PATH)/su
    

有人可以建议如何chmod文件?感谢您的时间。

已解决的问题

解决方案 1(针对问题 1)

先更改文件的权限chmod 6755 prebuilts/su/su。在 device.mk 文件中包含以下内容device/目录。

PRODUCT_COPY_FILES += \
    prebuilts/su/su:system/xbin

解决方案 2(针对问题 2)

只需将以下内容添加到之前的Android.mk文件中即可include $(BUILD_PREBUILT)

LOCAL_POST_INSTALL_CMD := chmod 6755 $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:在 AOSP 构建中包含 su 二进制可执行文件 的相关文章

  • 使用匕首柄作为依赖注入来处理多个改造客户端?

    我想在我的 android 应用程序中使用两个不同的后端 具有不同的响应格式 我使用 hilt 作为依赖注入 并对网络调用进行改造 这非常适合工作 因为我已经添加了第二个服务器网络文件和应用程序模块 所以它给了我错误 该错误列在最后 我需要
  • 使用 ColorMatrix 调整亮度

    我正在尝试使用 ColorMatrix 调整图像的亮度 当尝试调整色相时 您可以在 Photoshop 中看到此选项 亮度和亮度也是两个不同的功能 但我不知道要更改哪些值才能实现此目的 目前我可以使用此代码更改色调 public stati
  • 如何在Android上获取当前播放曲目的路径[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想编写一个应用程序将当前播放的音乐流式传输到另一台设备 两个设备之间的连接确实有效 我还可以通过 wifi 传输一些字符串 但在获取
  • Kotlin Android Firebase 数据库哈希映射转换为类

    我正在尝试从 firebase 数据库获取数据 断点显示它正在获取数据 但看起来我没有正确地将其分配给我的班级 这会导致此异常 java lang ClassCastException 无法将 java util HashMap 转换为 班
  • 服务如何在后台运行 - Android

    今天的采访中我被问到了这个问题 什么是服务 我对此的回答是 Service 是 Android 的基本组件 它没有 UI 并且在后台运行 Service 是否在主线程上运行 不 那么它是如何在后台运行的呢 我心里一片空白 有人可以解释一下如
  • 需要对某些片段禁用 CollapsingToolbarLayout 的展开

    我有一个AppCompatActivity控制替换许多片段 这是我的布局 活动 main xml
  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • 在 Android 市场中以编程方式检查我的应用程序版本

    目前 我正在启动时检查应用程序版本代码 并将其与我的服务器上的最新版本代码进行匹配 并根据此匹配 我发送用户从 Android 市场获取最新更新 它运行良好 但我的问题是我必须手动更改服务器上的最新版本代码 并且我不知道新版本何时发布APK
  • 如何在 Android 中创建始终位于顶部的全屏覆盖 Activity

    我希望能够创建一个始终位于 Android 显示前面的 Activity 它不应该接收任何输入 只需将其传递到其下面的任何应用程序即可 像平视显示器之类的东西 我能够研究我需要将底层窗口类型设置为 TYPE SYSTEM ALERT 但看起
  • 使用 RoboSpice 有没有办法从异常中获取 HTTP 错误代码?

    我正在编写一个使用 RoboSpice 的应用程序 在请求侦听器 onRequestFailure SpiceException arg0 中 有没有办法确定该错误是由于发生 401 HTTP 错误而导致的 我有一个后端服务 当令牌过期时
  • 构建应用程序时出现 BufferOverflowException

    每次我想运行我的 Android 应用程序时 我都会收到错误 2013 11 02 13 05 36 Dex Loader Unable to execute dex java nio BufferOverflowException Che
  • 本地管理的广播接收器泄漏?

    当应用程序被系统杀死时 本地 即使用 LocalBroadcastManager 管理 BroadcastReceiver 是否有可能泄漏 我需要它的具体用例是我想在活动的 onCreate onDestroy 中注册 注销 Broadca
  • 如何在Room的数据库迁移中正确添加索引?

    我在迁移 Room 数据库时遇到问题 在更新的数据库中 我必须将一个字段从整数更改为双精度值 我读到它并不像听起来那么容易 为了做到这一点 我必须使用这个更改后的属性创建新的临时表 复制前一个表中的所有值 删除旧的值 最后重命名临时表 我的
  • 使用 twitter API 1.1 在 Android 应用程序中显示 twitter feed

    基本上我想展示这个提要 https en twitter com epl live https en twitter com epl live在我的应用程序中 由于 twitter 更改了其 api 1 1 每个调用都必须经过授权 我发现的
  • onStart() 到底做了什么? - 安卓[重复]

    这个问题在这里已经有答案了 一段时间以来 我一直想知道 onStart 函数在 android 生命周期中的确切作用 网上的大多数资源只是说 它在您的活动在屏幕上可见之前被调用 但到目前为止我所做的应用程序我从未使用过onStart 我在
  • Grade Plugin 3-alpha1 输出文件导致错误

    我正在尝试将项目更新到 Android Studio 3 build gradle 文件中不再接受以下代码片段 applicationVariants all variant gt variant outputs each out gt d
  • 在 VideoView 开始播放之前,TextView 不会显示

    我编写了一个android应用程序 它有两个视图 TextView上方的VideoView 位于ScrollView内部 我遇到了一个问题 直到VideoView开始播放视频 TextView才显示 并且我有一个黑屏 这可能需要很长一段时间
  • Android:我的应用程序太大并给出“无法执行 dex:方法 ID 不在 [0, 0xffff]: 65536”?

    我正在尝试将我的应用程序与 Box Dropbox 和 Google Drive 集成 所有这 3 项服务都需要许多第 3 方 jar 此外 我的应用程序已经需要一些第三方 jar 现在 当我尝试从 Eclipse 运行我的应用程序时 出现
  • 将主题应用到 v7 支持操作栏

    我正在使用support v7库来实现ActionBar在我的应用程序中 我的styles xml file
  • Android Webview隐私浏览

    我在我的 Android 应用程序中使用 webview 从多个站点获取一些网页 我对 webview 行为有一些疑问 webview 是否存储历史记录 cookie 表单自动填充信息 如果是的话 我们可以阻止它这样做吗 如果 Webvie

随机推荐