在项目里用aapt获取app信息(使用exec调用aapt)
再安卓10以下测试可以在安卓10测试出现问题
java.io.IOException: Cannot run program "/aapt": error=13, Permission denied
路径是对的也可以访问,去搜了下谷歌把安卓10的访问权限给关了
823]16:32
网站提示+1 loper.android.google.cn
三developers
存时的安全性和稳健性,从而提高Android的
整体性能和安全性。
移除了应用主自录的执行权限
以Android10为目标平台的不可信应用无法再
针对应用主目录中的文件调用exec()。这种
从可写应用的主自录执行文件的行为违反了
WX。应用应该仅加载嵌入到应用的APK
文件中的二进制代码。
此外,以Android10为目标平台的应用无法针
对已通过dlopen()打开的文件中的可执行代
码进行内存中修改。这包括含有文本重定位的
所有共享对象(.so)文件。
Android运行时只接受系统生
成的OAT文件
Android运行时(ART)不再从应用进程调用
dey2nat。这项变更章味着ART将仅接受系
个 公 3
口
但是我看其他app在安卓10下能运行
是有什么玄学办法吗?
在SDK版本大于29(即Android10以上)的设备上取消了对二进制文件执行的权限,原文如下:行为变更:以 API 29 及更高级别为目标平台的应用 | Android 开发者 | Android Developers
因为最近也用到了类似的功能,所以我翻了翻404大厂,找到了几个方案:
先感谢在座的各位来回答我的问题,尤其是这位@Just Love Morning 大佬给的思路,这个问题解决了
我主要是参考这一篇 https://stackoverflow.com/questions/60370424/permission-is-denied-using-android-q-ffmpeg-error-13-permission-denied
来做的,主要思路就是把aapt改成.so文件放到jniLibs下,用getApplicationInfo().nativeLibraryDir获取aapt路径下再执行
具体操作等我写一篇博文