当我设置targetSdkVersion 29或30时,我在android studio上遇到了这个错误。有人知道怎么了吗?在targetSdkVersion 28上可以在任何android版本上工作
type=1400 audit(~z~~sl:0.0:77(:avc:granted{execute}for name=";busybox";dev=";vdc";ino=36845 scontext=u:r:unsested_app:s0:c137,c256,c512,c768 tcontext=u:对象_r:app_data_file:s0:c137、c256、c512,c 768 tclass=file app=com
我想这与此有关:https://developer.android.com/about/versions/10/behavior-changes-10删除了应用主目录的执行权限
您可以在这里找到关于Android 10中引入的这一新限制的答案,该限制限制了在使用targetSdkVersion 29或更高版本时可执行文件仍然可以具有执行权限的位置。
干杯,Jérôme
如果您的目标低于手机上的版本,则表示您在兼容模式下运行,因此不适用某些限制。
这样做是为了让新的操作系统版本不会破坏为早期操作系统版本制作的现有应用程序
不要指望这能长期有效,在下一个操作系统版本中,即使是针对较低SDK 的应用程序,该限制也可能适用
尝试使用Platform.isAndroid
我使用的是flutter,这个代码是Dart语言的,我在这个函数中使用了它,它解决了的错误
import 'dart:io';
Future<Directory> getDirectory() async {
Directory directory;
if (Platform.isAndroid) {
var androidDir = await getExternalStorageDirectory();
directory = Directory('${androidDir!.path}/Your_folder_name');
return directory;
} else {
directory = Directory('/sdcard/Your_folder_name');
return directory;
}
}