Компиляция базового приложения Android без Gradle — ошибки d8JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Компиляция базового приложения Android без Gradle — ошибки d8

Сообщение Anonymous »

Я хочу перенести небольшую утилиту, прототип которой я разработал, в Windows как простое приложение. Я использую компьютер 10-летней давности, поэтому, насколько я понимаю, такие инструменты, как Gradle и Android Studio, будут работать слишком медленно, чтобы я мог выполнять осмысленные быстрые итерации (а также набор инструментов Windows и сборка I. Я также ничего не знаю о структуре приложения Android). , поэтому просмотр различных этапов компиляции в любом случае поучителен.
Я перечислю этапы, через которые я прошел, а затем свою текущую ошибку, так как я понятия не имею, была ли моя установка или Проблема может быть вызвана каким-то более ранним этапом. Я получаю ошибки при компиляции примера приложения.
Я следую этому руководству: https://hereket.com/posts/android_from_command_line/(Я установил инструменты сборки/платформы и образ для версии 28.0.3 и имею JDK 22).
У меня были следующие различия:
1- aapt будет не запускается, если папка gen не была явно создана заранее
2- d8 отказался от параметра *.class, поэтому я сгенерировал список файлов вручную.
Я работал вокруг проблемы, упомянутой здесь: ошибка при запуске инструмента dx или d8 для Android таким же образом.
d8 в настоящее время выдает следующую ошибку:

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

java.lang.IllegalArgumentException
at com.android.tools.r8.org.objectweb.asm.ClassReader.(ClassReader.java:160)
at com.android.tools.r8.org.objectweb.asm.ClassReader.(ClassReader.java:143)
at com.android.tools.r8.org.objectweb.asm.ClassReader.(ClassReader.java:418)
at com.android.tools.r8.graph.JarClassFileReader.read(JarClassFileReader.java:66)
at com.android.tools.r8.dex.ApplicationReader$ClassReader.lambda$readClassSources$1(ApplicationReader.java:231)
at java.base/java.util.concurrent.ForkJoinTask$AdaptedInterruptibleCallable.compute(ForkJoinTask.java:1689)
at java.base/java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(ForkJoinTask.java:1641)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Команда ввода:

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

d8 --debug --output __build\apk\my_classes.jar --no-desugaring  __build\obj\
com\user\android_build_test\MainActivity.class \obj\com\user\android_
build_test\R$attr.class __build\obj\com\user\android_build_test\R$id.class __build\obj\com\user\android_build_test\R$layout.class __build\obj\com\user\
android_build_test\R$style.class __build\obj\com\user\android_build_test\R.cl
ass
Единственная разница в том, что я указываю ему абсолютный путь.
Если вместо этого я удалю все файлы, кроме одного, у которого удален путь, я получу:

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

Error in R.class:
Error with input file: R.class
Compilation failed
(etc. - same call stack)
Есть идеи, что является причиной этого? Если да, то есть идеи, как я мог бы это решить, не имея, по-видимому, значительного количества неявных знаний?

Подробнее здесь: https://stackoverflow.com/questions/783 ... -d8-errors
Ответить

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

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

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

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

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