Я использую Codeassist-unofficial на моем телефоне Android, но Codeassist использует LibaApt2.so в jnilibs dir для составления ресурсов, и я изменяю из него, чтобы перемещать файл AAPT2 из активов в /файл данных /data presect-override »>private File getAapt2Binary() throws IOException {
java.io.File target = new java.io.File(
com.tyron.builder.BuildModule.getContext().getFilesDir(), "aapt2");
if (target.exists() && target.canExecute()) return target;
try (java.io.InputStream in = com.tyron.builder.BuildModule.getContext().getAssets().open("aapt2");
java.io.FileOutputStream out = new java.io.FileOutputStream(target)) {
org.apache.commons.io.IOUtils.copy(in, out);
}
if (!target.setExecutable(true, false))
throw new java.io.IOException("Cannot mark aapt2 as executable");
try {
java.lang.Runtime.getRuntime().exec("chmod 755 " + target.getAbsolutePath()).waitFor();
} catch (Exception ignore) {}
if (!target.canExecute())
throw new java.io.IOException("aapt2 still not executable");
return target;
}
< /code>
и запустить AAPT2 с использованием: < /p>
private void runAapt2(List args, String task) throws CompilationFailedException {
File aapt2;
try {
aapt2 = getAapt2Binary();
} catch (IOException e) {
throw new CompilationFailedException("Unable to obtain aapt2 binary", e);
}
List cmd = new ArrayList();
cmd.add(aapt2.getAbsolutePath());
cmd.addAll(cmd);
getLogger().debug("Running AAPT2 " + task + ": " + cmd);
ProcessBuilder pb = new ProcessBuilder(cmd);
pb.redirectErrorStream(true);
clearLogs();
int exit;
try {
Process p = pb.start();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(p.getInputStream(), Charset.defaultCharset()))) {
String line;
while ((line = br.readLine()) != null) {
log(LOG_LEVEL_ERROR, null, -1, line);
}
}
exit = p.waitFor();
} catch (IOException | InterruptedException e) {
throw new CompilationFailedException("AAPT2 " + task + " execution failed", e);
}
LogUtils.log(mDiagnostics, getLogger());
if (exit != 0) {
throw new CompilationFailedException("AAPT2 " + task + " failed (exit code " + exit + ")");
}
}
< /code>
Я получил: < /p>
com.tyron.builder.exception.CompilationFailedException: AAPT2 compile-project execution failed
at com.tyron.builder.compiler.incremental.resource.IncrementalAapt2Task.runAapt2(IncrementalAapt2Task.java:276)
at com.tyron.builder.compiler.incremental.resource.IncrementalAapt2Task.compileProject(IncrementalAapt2Task.java:114)
at com.tyron.builder.compiler.incremental.resource.IncrementalAapt2Task.run(IncrementalAapt2Task.java:73)
at com.tyron.builder.compiler.BuilderImpl.build(BuilderImpl.java:75)
at com.tyron.builder.compiler.ProjectBuilder.build(ProjectBuilder.java:89)
at com.tyron.code.service.CompilerService.buildProject(CompilerService.java:218)
at com.tyron.code.service.CompilerService.lambda$compile$2$com-tyron-code-service-CompilerService(CompilerService.java:200)
at com.tyron.code.service.CompilerService$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
at com.tyron.completion.progress.ProgressManager.lambda$runAsync$0$com-tyron-completion-progress-ProgressManager(ProgressManager.java:56)
at com.tyron.completion.progress.ProgressManager$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:929)
Caused by: java.io.IOException: Cannot run program "/data/user/0/org.codeassist.unofficial/files/aapt2": error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
at com.tyron.builder.compiler.incremental.resource.IncrementalAapt2Task.runAapt2(IncrementalAapt2Task.java:266)
... 12 more
Caused by: java.io.IOException: error=13, Permission denied
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.(UNIXProcess.java:133)
at java.lang.ProcessImpl.start(ProcessImpl.java:141)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 13 more
< /code>
my Repo. От Google и AI I Bet: < /p>
private File getAapt2Binary() throws IOException {
java.io.File target = new java.io.File(
com.tyron.builder.BuildModule.getContext().getFilesDir(), "aapt2");
if (target.exists() && target.canExecute()) return target;
try (java.io.InputStream in = com.tyron.builder.BuildModule.getContext().getAssets().open("aapt2");
java.io.FileOutputStream out = new java.io.FileOutputStream(target)) {
org.apache.commons.io.IOUtils.copy(in, out);
}
if (!target.setExecutable(true, false))
throw new java.io.IOException("Cannot mark aapt2 as executable");
try {
java.lang.Runtime.getRuntime().exec("chmod 755 " + target.getAbsolutePath()).waitFor();
} catch (Exception ignore) {}
if (!target.canExecute())
throw new java.io.IOException("aapt2 still not executable");
return target;
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ion-denied
Java.io.ioexception: error = 13, разрешение отказано [закрыто] ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1755863280
Anonymous
Я использую Codeassist-unofficial на моем телефоне Android, но Codeassist использует LibaApt2.so в jnilibs dir для составления ресурсов, и я изменяю из него, чтобы перемещать файл AAPT2 из активов в /файл данных /data presect-override »>private File getAapt2Binary() throws IOException {
java.io.File target = new java.io.File(
com.tyron.builder.BuildModule.getContext().getFilesDir(), "aapt2");
if (target.exists() && target.canExecute()) return target;
try (java.io.InputStream in = com.tyron.builder.BuildModule.getContext().getAssets().open("aapt2");
java.io.FileOutputStream out = new java.io.FileOutputStream(target)) {
org.apache.commons.io.IOUtils.copy(in, out);
}
if (!target.setExecutable(true, false))
throw new java.io.IOException("Cannot mark aapt2 as executable");
try {
java.lang.Runtime.getRuntime().exec("chmod 755 " + target.getAbsolutePath()).waitFor();
} catch (Exception ignore) {}
if (!target.canExecute())
throw new java.io.IOException("aapt2 still not executable");
return target;
}
< /code>
и запустить AAPT2 с использованием: < /p>
private void runAapt2(List args, String task) throws CompilationFailedException {
File aapt2;
try {
aapt2 = getAapt2Binary();
} catch (IOException e) {
throw new CompilationFailedException("Unable to obtain aapt2 binary", e);
}
List cmd = new ArrayList();
cmd.add(aapt2.getAbsolutePath());
cmd.addAll(cmd);
getLogger().debug("Running AAPT2 " + task + ": " + cmd);
ProcessBuilder pb = new ProcessBuilder(cmd);
pb.redirectErrorStream(true);
clearLogs();
int exit;
try {
Process p = pb.start();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(p.getInputStream(), Charset.defaultCharset()))) {
String line;
while ((line = br.readLine()) != null) {
log(LOG_LEVEL_ERROR, null, -1, line);
}
}
exit = p.waitFor();
} catch (IOException | InterruptedException e) {
throw new CompilationFailedException("AAPT2 " + task + " execution failed", e);
}
LogUtils.log(mDiagnostics, getLogger());
if (exit != 0) {
throw new CompilationFailedException("AAPT2 " + task + " failed (exit code " + exit + ")");
}
}
< /code>
Я получил: < /p>
com.tyron.builder.exception.CompilationFailedException: AAPT2 compile-project execution failed
at com.tyron.builder.compiler.incremental.resource.IncrementalAapt2Task.runAapt2(IncrementalAapt2Task.java:276)
at com.tyron.builder.compiler.incremental.resource.IncrementalAapt2Task.compileProject(IncrementalAapt2Task.java:114)
at com.tyron.builder.compiler.incremental.resource.IncrementalAapt2Task.run(IncrementalAapt2Task.java:73)
at com.tyron.builder.compiler.BuilderImpl.build(BuilderImpl.java:75)
at com.tyron.builder.compiler.ProjectBuilder.build(ProjectBuilder.java:89)
at com.tyron.code.service.CompilerService.buildProject(CompilerService.java:218)
at com.tyron.code.service.CompilerService.lambda$compile$2$com-tyron-code-service-CompilerService(CompilerService.java:200)
at com.tyron.code.service.CompilerService$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
at com.tyron.completion.progress.ProgressManager.lambda$runAsync$0$com-tyron-completion-progress-ProgressManager(ProgressManager.java:56)
at com.tyron.completion.progress.ProgressManager$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:929)
Caused by: java.io.IOException: Cannot run program "/data/user/0/org.codeassist.unofficial/files/aapt2": error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
at com.tyron.builder.compiler.incremental.resource.IncrementalAapt2Task.runAapt2(IncrementalAapt2Task.java:266)
... 12 more
Caused by: java.io.IOException: error=13, Permission denied
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.(UNIXProcess.java:133)
at java.lang.ProcessImpl.start(ProcessImpl.java:141)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 13 more
< /code>
my Repo. От Google и AI I Bet: < /p>
private File getAapt2Binary() throws IOException {
java.io.File target = new java.io.File(
com.tyron.builder.BuildModule.getContext().getFilesDir(), "aapt2");
if (target.exists() && target.canExecute()) return target;
try (java.io.InputStream in = com.tyron.builder.BuildModule.getContext().getAssets().open("aapt2");
java.io.FileOutputStream out = new java.io.FileOutputStream(target)) {
org.apache.commons.io.IOUtils.copy(in, out);
}
if (!target.setExecutable(true, false))
throw new java.io.IOException("Cannot mark aapt2 as executable");
try {
java.lang.Runtime.getRuntime().exec("chmod 755 " + target.getAbsolutePath()).waitFor();
} catch (Exception ignore) {}
if (!target.canExecute())
throw new java.io.IOException("aapt2 still not executable");
return target;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79742390/java-io-ioexception-error-13-permission-denied[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия