我已经完成了Chess UI应用程序,现在想加载一个Chess引擎来测试我的UI是否真的与UCI兼容。国际象棋引擎位于Android设备的“下载”文件夹中(“ / storage / emulated / 0 / Download”)。这是运行的代码:
try {
File f = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
String path = f.getAbsolutePath();
String stockfishPath = path + "/Stockfish-9-armv64v8";
engineProcess = Runtime.getRuntime().exec(stockfishPath);
processReader = new BufferedReader(new InputStreamReader(
engineProcess.getInputStream()));
String sCurrentLine;
ArrayList<String> output = new ArrayList<>();
while ((sCurrentLine = processReader.readLine()) != null) {
output.add(sCurrentLine);
}
processWriter = new OutputStreamWriter(
engineProcess.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
当我运行它时,它在exec()方法上失败,因为它声称它找不到文件,即使该文件存在于Android设备上也是如此。我尝试在exec()方法上运行“ ls”命令,但“模拟”中的文件夹为空。显而易见的原因可能是因为我没有查看/访问这些文件的权限,但是我需要知道我该怎么做(尽管在清单文件中添加了READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE)。
是否有可能将引擎嵌入到项目中的某个位置(在资源中?),并以某种方式将adb-shell嵌入其中?
答案 0 :(得分:0)
仅通过使用-noexec
标志装入SD卡,就不能这样做。
将内部存储器与chmod +x
一起使用将是唯一可用的选项。