Невозможно запустить программу «/data/user/0/com.example.chess/files/stockfish-arm64-v8a»: ошибка = 13, разрешение отклоAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно запустить программу «/data/user/0/com.example.chess/files/stockfish-arm64-v8a»: ошибка = 13, разрешение откло

Сообщение Anonymous »

Я новичок в Android и пытаюсь создать шахматное приложение для Android с помощью Stockfish. Я загрузил двоичный файл stockfish и пытаюсь его выполнить, но у меня вылетает ошибка

Код: Выделить всё

Cannot run program "/data/user/0/com.example.chess/files/stockfish-arm64-v8a": error=13, Permission denied
Это код, в котором я пытаюсь скопировать двоичный файл из ресурсов в указанный выше каталог файлов и выполнить его

Код: Выделить всё

        String abi = getAbi();
String stockfishName = "stockfish-" + abi;

File stockfishFile = new File(context.getFilesDir(), stockfishName);
Log.d(TAG, "Stockfish file path: " + stockfishFile.getAbsolutePath());

if (!stockfishFile.exists()) {
Log.d(TAG, "Stockfish file does not exist. Copying from assets...");
copyStockfishFromAssets(stockfishName);
}

logFileDetails(stockfishFile);

Log.d(TAG, "Starting Stockfish process...");
ProcessBuilder pb = new ProcessBuilder(stockfishFile.getAbsolutePath());
pb.redirectErrorStream(true);
try {
process = pb.start();
Log.d(TAG, "Stockfish process started successfully");

Код для copyStockfishFromAssets

Код: Выделить всё

 private void copyStockfishFromAssets(String stockfishName) throws IOException {
Log.d(TAG, "Copying Stockfish from assets: " + stockfishName);
InputStream inputStream = context.getAssets().open(stockfishName);
File outputFile = new File(context.getFilesDir(), stockfishName);

try (FileOutputStream outputStream = new FileOutputStream(outputFile)) {
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
}

Log.d(TAG, "Stockfish copied successfully. Setting executable permission...");
if (!outputFile.setExecutable(true, true)) {
Log.e(TAG, "Failed to set executable permission programmatically");
}
}
Может ли кто-нибудь сказать мне, как выполнить этот двоичный файл?
ПРИМЕЧАНИЕ. Я новичок в Android, поэтому рабочий код или какое-то руководство к нему будет очень полезно

Подробнее здесь: https://stackoverflow.com/questions/790 ... rm64-v8a-e
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»