Как использовать файл aar вручную и правильно?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как использовать файл aar вручную и правильно?

Сообщение Anonymous »

Я прочитал «Как создать APK-файл Android без Gradle в командной строке?» и «Как скомпилировать приложение Android с помощью aapt2 без использования каких-либо инструментов сборки?», но оба ответа, похоже, не соответствуют моей цели (пытался использовать файл aar для создания приложения Android, имеющего внешнюю зависимость, вручную, ради обучения и понимания). как эти инструменты сборки Android работают внутри).
Я загружаю файл aar с сайта https://maven.google.com/web/index.html ... yout:2.2.0 и использовал этот сценарий сборки в качестве руководства по сборке пакета приложения Android без студии gradle/android, он успешно собирается без каких-либо запросов ошибки, однако во время выполнения выдает ошибку:

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

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.helloworld/com.example.helloworld.main}: android.view.InflateException: Binary XML file line #2 in com.example.helloworld:layout/activity_main: Binary XML file line #2 in com.example.helloworld:layout/activity_main: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3645)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:138)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7965)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)
Caused by: android.view.InflateException: Binary XML file line #2 in com.example.helloworld:layout/activity_main: Binary XML file line #2 in com.example.helloworld:layout/activity_main: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
Caused by: android.view.InflateException: Binary XML file line #2 in com.example.helloworld:layout/activity_main: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
Caused by: java.lang.ClassNotFoundException: androidx.constraintlayout.widget.ConstraintLayout
Причина сбоя довольно очевидна: он не может разрешить символ ConstraintLayout, который используется в XML-файле макета, но я не знаю, как это исправить, Я попытался связать библиотеку ограниченийlayout-2.2.0/classes.jar, но после ее пересборки она все равно выдает ошибку.
Вот пошаговая инструкция по сборке приложения. (при условии, что загруженный файл AAR уже извлечен и debug.keystore уже создан):

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

aapt2 compile --dir res -o resources.zip
aapt2 compile --dir constraintlayout-2.2.0/res -o resources-constraintlayout.zip
aapt2 link --manifest AndroidManifest.xml --auto-add-overlay -R ./resources-constraintlayout.zip --java generated/ -I ~/Android/Sdk/platforms/android-34/android.jar -o ./sample.apk resources.zip
javac -classpath constraintlayout-2.2.0/classes.jar -classpath ~/Android/Sdk/platforms/android-34/android.jar -source 17 -target 17 -sourcepath com:generated generated/com/example/helloworld/R.java com/example/helloworld/main.java -d build/obj
d8 --release --classpath constraintlayout-2.2.0/classes.jar --classpath ~/Android/Sdk/platforms/android-34/android.jar --output . $(find build/obj/ -type f)
zip -uj ./sample.apk classes.dex
zipalign -p -f -v 4 ./sample.apk ./aligned_sample.apk
apksigner sign --ks debug.keystore --ks-pass pass:android --out ./signed_sample.apk ./aligned_sample.apk
Чтобы воспроизвести проблему, я создал репозиторий git, содержащий сценарий сборки и файл исходного кода.

Подробнее здесь: https://stackoverflow.com/questions/793 ... d-properly
Ответить

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

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

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

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

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