android - 向其他 Android 应用程序公开二进制文件
问题描述
我想git
在我的 android 设备上作为 CLI 工具使用,可以通过本地终端应用程序使用。我已经成功交叉编译git
,aarch64-linux-android
如果我使用 root shell 将它移动到ext4
设备上的文件系统之一,我可以成功调用它。
但是,不希望使用 root 安装和使用它。我通常让我的设备无根,只是暂时启用根来做这样的实验。以 root 身份安装还不错,但似乎只有ext4
读/写安装的文件系统位于终端应用程序无法读取的位置,所以我不能将它用作非 root 用户,这是一个交易破坏者 *.
如果可能,我更愿意将其打包为 APK,以便可以作为普通用户侧载。我还希望能够从终端应用程序调用它。如果我必须手动调整$PATH
,那很好,但如果 APK 可以将其放置在某个位置或在安装$PATH
时扩展操作系统,则可以加分。$PATH
* (我知道我可以将 /system 重新安装为 r/w 以将其安装为 root,这将使其可用于所有应用程序。我不想修改 /system,因为这样不能保证“恢复出厂设置”给我带来回到工作状态。我知道这将是一个相对安全的更改。如果这真的不可能,我会这样做,但 APK 会更好)
解决方案
我不认为你能做到这一点。Android 旨在防止此类事情发生:每个 APK 只能在(某种程度上)隔离的容器中运行。
APK 无法在根文件夹中安装可执行文件。修改$PATH
也不会起作用(如果系统甚至允许您修改它),因为每个 APK 是由不同的用户执行的,因此环境会有所不同。我什至不确定您是否可以将文件标记为常见文件夹上的可执行文件。
一种解决方法是使可执行文件的路径(如果您可以将文件标记为可执行文件)通过ContentResolver
.
推荐阅读
- reactjs - 使用带有 firebase 身份验证的 react-router
- r - 有没有一种简单的方法可以通过 R 中的并行化一次运行多个循环试验?
- python - 根据位置数量可变的桌子上的位置分配变量
- node.js - 本地 Postgres 连接不返回任何内容
- php - 在 graphql-playground 中测试上传标量类型
- c# - 为什么我会收到这些奇怪的 C# 8“可空引用类型”警告:非可空字段必须在退出构造函数之前包含非空值。?
- python - django.db.utils.DataError: value too long for type character varying(20)
- android - 要创建哪些 Android 模拟器以获得不同屏幕尺寸的代表性样本?
- javascript - 为 React TypeScript 中的 ...props 中的 onClick 属性添加类型
- javascript - 如何停止更漂亮以自动添加新行?