4nt*_*ine 5 executable android android-security
我的 Android 应用程序包含一组可执行文件,这些可执行文件在首次运行时提取到应用程序目录 (/data/data/%package%/)。如果针对 Android 28 ( targetSdkVersion),它工作得很好。自 2020 年 11 月 2 日起,Google Play 不允许使用它,所有应用程序都必须定位到 29。因此它因权限异常而停止工作。
现在可执行文件应该放在哪个目录中?
附言。一些类似的应用程序也有同样的问题。
小智 9
https://developer.android.com/about/versions/10/behavior-changes-10#execute-permission
\n当针对 API 29 (Android 10 / Q) 或更高版本时,不可能再拥有存储在应用程序主目录 (data) 中的文件的执行权限,这正是您所描述的 (/data/data/ %包裹%/)。
\n此 Android 10 修改在提交中引入: https: //android-review.googlesource.com/c/platform/system/sepolicy/+/804149,然后由 Google 正式确认: https: //issuetracker.google.com /问题/128554619
\n各个项目正在讨论这一重大变化,例如termux /termux-app#1072 。一种推荐且(希望)面向未来的方法是将程序二进制文件提取到应用程序的本机 lib 目录中(使用 android:extractNativeLibs=true),其中文件仍然可以执行,但以只读方式存储以提高安全性。
\n以下示例展示了如何在 Termux 中处理此更改,并在 android-10 分支中提交f6c3b6f或在其他项目中展示如何通过将 .zip 存档中的所有文件提取到jniLibs/中来在 Android 上运行 Erlang 运行时abi”子目录(对于 64 位 ARM,“abi”是 arm64-v8a,对于 32 位 ARM,“abi”是 armeabi-v7a,等等),并使用Android 平台期望的强制lib___.so 文件名格式。可执行文件可以简单地手动移动到正确的项目文件夹中,重要的是使用 lib___.so 格式作为文件名。
\n在 Android Manifest 文件中,设置属性 android:extractNativeLibs="true" 将在安装时将这些 lib___.so 文件提取到正确的本机 lib 目录中,并支持执行权限。如果需要,最终可以在常用应用程序目录中创建符号链接以使用常规可执行文件名称,而不是难以操作的 lib___.so 版本。
\n谢谢,J\xc3\xa9r\xc3\xb4me
\n| 归档时间: |
|
| 查看次数: |
7629 次 |
| 最近记录: |