在 AOSP 中启动时运行 shell 脚本

2023-12-08

我在我的项目中使用 iMX 8 Mini EVK。我从 AOSP 为该板构建 Android 9.0。 现在我想在启动时运行一个脚本。 我做了以下文件更改,但仍然面临问题。

文件:Android_AOSP_build/device/fsl/imx8m/evk_8mm/init.rc

service gea3appservice /vendor/bin/sh /vendor/bin/run.sh 
  class late_start
  user root system
  group root system
  oneshot

文件:Android_AOSP_build/device/fsl/imx8m/evk_8mm/sepolicy/gea3appservice.te

type gea3appservice, domain;
type gea3appservice_exec, exec_type, vendor_file_type, file_type;

init_daemon_domain(gea3appservice)

domain_auto_trans(init, vendor_shell_exec, gea3appservice)

文件:Android_AOSP_build/device/fsl/imx8m/evk_8mm/sepolicy/file_contexts

/vendor/bin/run.sh   u:object_r:gea3appservice_exec:s0

当我手动运行服务时,出现以下错误:

[134.010656]类型= 1400审核(1564667688.236:3740):avc:拒绝{dac_read_search}对于pid=1 comm =“init”capability=2 scontext = u:r:init:s0 tcontext = u:r:init:s0 tclass =能力许可=1

有谁知道这个问题吗?

我尝试了 Android 开发者网站建议的方法

https://source.android.com/security/selinux/device-policy

但我收到以下错误

libsepol.report_failure:永远不允许 system/sepolicy/public/domain.te 的第 1002 行(或policy.conf 的第 11242 行)违反了允许 gea3appservice gea3appservice_exec:file { 执行入口点 };


这对我有用

在 init.mydevice.rc 我有

on property:sys.boot_completed=1
    start init-myservice-sh

service init-myservice-sh /vendor/bin/init.myscript.sh
    class main
    user root
    group root system
    disabled
    oneshot

这是 init.myscript.sh

#!/system/bin/sh

echo '#################  It works  ##################'
cd /system/app
ls -hal

在 device/myvendor/mydevice/sepolicy 文件夹中,我有 file_contexts

/vendor/bin/init\.myscript\.sh      u:object_r:init-myservice_exec:s0

和 init-myservice.te

type init-myservice, domain;
type init-myservice_exec, exec_type, vendor_file_type, file_type;

init_daemon_domain(init-myservice)

allow init-myservice vendor_shell_exec:file rx_file_perms;
allow init-myservice vendor_toolbox_exec:file rx_file_perms;

当然你必须将脚本复制到 bin 目录

PRODUCT_COPY_FILES += \
 $(LOCAL_PATH)/init.myscript.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.myscript.sh

并在 BoardConfig.mk 中

BOARD_SEPOLICY_DIRS := device/myvendor/mydevice/sepolicy

在我的控制台中我可以看到这个

console:/ $ dmesg | grep myservice                                             
[   21.098013] init: starting service 'init-myservice-sh'...
[   21.148562] init: Command 'start init-myservice-sh' action=sys.boot_completed=1 (/vendor/etc/init/hw/init.mydevice.rc:66) took 51ms and succeeded

并尝试这个

console:/ $ init.myscript.sh
#################  It works  ##################

有关更多详细信息,请参阅这篇文章https://source.android.com/security/selinux/device-policy#label_new_services_and_address_denials

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

在 AOSP 中启动时运行 shell 脚本 的相关文章

  • 使用库来维护免费/付费的应用程序版本

    维护免费 付费应用程序版本的共识似乎是使用库 并从每个活动中设置一个标志 以从代码库中获取不同的功能 这有多安全 据我了解 一个人可以root他们的手机 获取APK 并且可以对其进行反编译 即使代码被混淆 也不难看出该应用程序是带有标志的包
  • 使用 android AudioTrack 在左或右扬声器中播放声音

    我正在应用程序中的 AudioTrack 的帮助下播放声音 但我想在特定扬声器 耳朵中播放声音 即左扬声器或右扬声器或两个扬声器 以下代码是我用来播放声音的 private AudioTrack generateTone double fr
  • 在 Anko DSL 中创建自定义 View/ViewGroup 类

    我想创建一个自定义视图 它只是一些 Android 视图的包装 我考虑创建一个自定义 ViewGroup 来管理其子视图的布局 但我不需要这么复杂 我基本上想做的是 class MainActivity verticalLayout tex
  • android webview 函数 onPagefinished 被调用两次

    我的android webview功能onPageFinished被调用两次 我不知道为什么 但它在 android 2 2 上运行良好 但当我将其升级到 4 时 它就不起作用了 代码附在下面 Code Override public vo
  • 如何获取.so文件的依赖项列表?

    假设我有libFoo so为 android arm 编译 我不确定它链接到什么STL实现 有options http developer android com intl ru ndk guides standalone toolchai
  • 毕加索动画加载图像

    我有以下代码在毕加索中加载图像 使用可绘制的占位符在图像下载时显示 不过 我想要的是一个动画旋转进度条样式的旋转器 它可以在图像加载时不断地旋转 就像我在大多数专业应用程序中看到的那样 毕加索似乎不支持这一点 只支持静态图像可绘制 有没有办
  • 如何从一个代码库创建多个 Android 应用

    我有一个 Android 代码库 它使用带有设置的 API 来获取多个应用程序的不同数据 所有应用程序都使用相同的代码库 但进行一两个设计调整 那么如何重用主代码库而不必每次都复制整个 Android 项目呢 iPhone 在同一个项目中使
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • 如何强制从本机代码打开 Android 软键盘?

    我有一个游戏 当用户触摸屏幕时 它使用从 C 到 Java 的回调来强制打开软键盘 Java代码很简单是这样的 this inputMethodManager toggleSoftInput InputMethodManager SHOW
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • finish() 完成活动但它仍然在后台

    我有一个关于 android studio 中活动的 finish 方法的问题 我有这个简单的代码 public class MainActivity extends AppCompatActivity Override protected
  • Android Studio - 值必须 ≥ 0

    我在 Android Studio 中收到与光标有关的错误 我的代码中有以下行 String data cursor getString cursor getColumnIndex columnIndex columnIndex 被传递到该
  • JavaDoc 在 Android 项目中不起作用

    我在 Ubuntu 10 04 上使用 Eclipse 3 5 2 进行 Android 开发 我安装了 来自 Ubuntu 存储库的 Sun JDK Eclipse 3 5 2 经典 来自 eclipse org 解压到 opt ecli
  • onClick 未在带有子项的 LinearLayout 上触发

    我有一个自定义的 LinearLayout 和一个较小的 TextView 子级 我希望能够单击 TextView 未覆盖的区域 因此我将 clickable true 和 onclicklistener 设置为 LinearLayout
  • 如何确保应用程序在 Linux 上持续运行

    我试图确保脚本在开发服务器上保持运行 它会整理统计数据并提供网络服务 因此它应该会持续存在 但一天中有几次 它会因未知原因而消失 当我们注意到时 我们只需再次启动它 但这很麻烦 并且某些用户没有权限 或专有技术 来启动它 作为一名程序员 我
  • onBackPressed 隐藏 不破坏 Activity

    我知道如何取消后退按键 以便活动 主窗口保持可见 public void onBackPressed return 我的目标是隐藏该活动 但是 在没有完成它的情况下 您如何在 onBackPressed 事件中做到这一点 即我想达到 onP
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • Android 自定义警报对话框中的 OnClickListener

    我是一个自学成才的初学者 感谢耐心 谢谢 在 Eclipse 中 我使用自己的 xml 文件 custom dialog 创建了一个自定义警报对话框 称为 usernamealert 如果用户尚未输入用户名 即 username lengt
  • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

    如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计

随机推荐

  • 从 Excel VBA 关闭 Word 应用程序

    我试图在宏开始时关闭所有打开的 Word 应用程序实例 尽管我不知道哪些文档已打开 并且无法将它们设置为对象 这将关闭所有正在运行的 Word 文档 你需要On Error Resume Next以防止在没有运行 Word 应用程序实例时出
  • 如何从webview中获取html内容?

    从 webview 获取 html 代码的最简单方法是什么 我尝试了stackoverflow和google的几种方法 但找不到确切的方法 请说一下具体的方法 public class htmldecoder extends Activit
  • 构造函数中的依赖注入容器

    为什么将容器放在构造函数中这么糟糕 例如 您想要在另一个类 C 的构造函数中解析类 B 因为您需要将类 B 与解析的依赖项一起使用 您开始按照您希望的方式使用类 C 就像使用 B 一样 但使用依赖关系已解决 为什么将容器放在构造函数中这么糟
  • 从嵌入的 Google 表格中删除 Google 边框

    我希望将 Google 表格嵌入到 Google 扩展程序中 足够简单 只需使用自动生成的嵌入代码并将其粘贴到 html 文件中即可 这就是我所做的
  • iOS otool 检测私有 api [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我是第一次 ios 开发人员 找不到任何有关私有 ap
  • 为什么在 JavaScript 中“Object instanceof Function”和“Function instanceof Object”都返回 true?

    为什么在 JavaScript 中同时执行这两项操作Object instanceof Function and Function instanceof Object return true 我在 Safari WebInspector 中
  • 詹金斯在失败的阶段继续管道

    我有一个带有一堆管道的詹金斯设置 我编写了一个新的管道 可以立即启动所有管道 我想建造其他阶段 即使其中一个阶段失败了 目前的脚本看起来像这样 stage CentOS6 build centos6 testing stage CentOS
  • Nokogiri 可以解释 javascript 吗? - 网页抓取

    我们正在尝试抓取此页面上的可用性 http www equityapartments com new york new york city apartments midtown west mantena apartments aspx 我需
  • 增加 FD_SETSIZE 的限制并选择

    我想增加我的系统的 FD SETSIZE 宏值 有没有办法增加 FD SETSIZE 这样 select 就不会失败 按照标准 没有办法增加FD SETSIZE 一些程序和库 例如 libevent 尝试通过为fd set对象并传递大于的值
  • MongoDB 基于每个元素对多个文档中的数组求和

    我有以下文档结构 针对此示例进行了简化 id ObjectId sdfsdf result 1 3 5 7 9 id ObjectId asdref result 2 4 6 8 10 我想得到这些的总和result数组 但不是总和 而是一
  • RubyMine 的运行配置导致 Ubuntu 上出现“Yarn 需要 Node.js 4.0”错误

    在我的 Elementary OS 机器 基于 Ubuntu 的操作系统 上 使用以下命令创建新的 Ruby on Rails 项目后rails new yarntest并将其加载到 RubyMine 中 我无法使用 RubyMine 的
  • 静态全局和本地标识符的隐藏

    以下程序是在课堂上分发的练习工作表上的 我们被要求提供它的输出 但根据我对链接的理解 file2 c 不应该有两个静态标识符 b 的实例 但程序编译时会出现警告并运行得很好 我的问题是 为什么允许这样做 我认为静态链接的要点是能够访问该文件
  • JMeter JSR 223 语言 js 与 javascript

    关于 JSR 223 采样器语言 我可以选择 javascript ECMAScript ECMA 262 第 51 版 Oracle Nashorn 1 8 0 144 and Node js ECMAScript ECMA 262 版本
  • ios - 混合 MIDI 文件,每个文件都有自己的声音字体

    我正在寻找一种方法来混合 2 个或更多 MIDI 文件 每个文件都有自己的声音字体文件 我找到了一个文件的以下代码 并尝试做多个音乐播放器 但我想这不应该是正确的方法 而且我每秒都会听到一些奇怪的流行声音 那么有没有其他方法 也许没有音乐播
  • 如何唯一化元组元素?

    我有一个字典结果元组 result name xxx score 120L name xxx score 100L name yyy score 10L 我想将其统一 统一操作后result name xxx score 120L name
  • 通过清除内存违规来中止而不是段错误

    我在处理 C 字符串时遇到了这种奇怪的行为 这是 K R 书中的一个练习 我应该编写一个函数 将一个字符串附加到另一个字符串的末尾 这显然要求目标字符串分配足够的内存 以便源字符串适合 这是代码 strcat Copies contents
  • jQuery - 可以将背景图像调整为设定大小吗?

    我现在的情况是 我迫切需要将 div 的背景图像调整到一定的大小 有谁知道这是否可以用 jQuery 实现 我知道它需要的大小 它不必随着 div 的大小而调整大小 35 000 张图像已缩放到错误的尺寸 并且需要上线 因此无法调整图像大小
  • 新应用程序上的 Windows Phone 8 错误

    我正在使用 Visual Studio 2012 n Windows 8 企业版创建 Windows Phone 8 应用程序 当我创建一个新的应用程序并想运行它只是为了看看它是否有效时 会立即弹出此错误 System NullRefere
  • 现代计算机的堆栈和堆空间

    当用 C 语言编写时 如何知道启动程序时内存中有多少可用堆栈空间 堆空间怎么样 我如何知道程序执行期间使用了多少内存 这都是 Win32 特定的 不是真正 C 特定的 只是操作系统 API 创建线程时 默认情况下它会获得 1MB 堆栈空间
  • 在 AOSP 中启动时运行 shell 脚本

    我在我的项目中使用 iMX 8 Mini EVK 我从 AOSP 为该板构建 Android 9 0 现在我想在启动时运行一个脚本 我做了以下文件更改 但仍然面临问题 文件 Android AOSP build device fsl imx