Ответ 1
Обходной путь заключается в том, чтобы переключить вашу машину разработки на язык, который использует ".". как десятичная метка.
Его можно изменить следующим образом:
Я играю с Instant Apps для Android. Я установил все правильные пакеты и устал, чтобы создать новое приложение с поддержкой Instant App (отметьте флажок для Instant App при создании нового приложения). Проблема в том, что я всегда сталкиваюсь с проблемой с инструментами компиляции. У кого-нибудь еще есть эта проблема и удалось найти любой способ обхода.
Моя среда:
Ошибка:
Error: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
aapt2 compile -o /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/res/merged/androidTest/debug /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml
Issues:
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:520 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:521 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:568 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:594 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:595 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:597 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:598 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:599 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:600 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:601 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:602 invalid dimen
- ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:603 invalid dimen
:feature:mergeDebugAndroidTestResources FAILED
В рассматриваемой строке содержится (520):
<item format="float" name="abc_disabled_alpha_material_dark" type="dimen">0.30</item>
Надеюсь, я предоставил вам достаточно информации для решения проблемы. Спасибо.
Обходной путь заключается в том, чтобы переключить вашу машину разработки на язык, который использует ".". как десятичная метка.
Его можно изменить следующим образом:
Ниже приводятся четыре различных решения: A, B, C и D; выберите тот, который вас устроит:
Это альтернатива Ubuntu для общего подхода к установке Android Studio (см. ниже). Обратите внимание, что вы все равно можете реализовать часть об исправлении оболочки и, возможно, даже отменить любые изменения в studio.sh
, чтобы полностью подтвердить это исправление.
Мне надоело исправлять мой studio.sh
для каждого обновления канала, поэтому я придумал лучшее решение, которое устраняет этот шаг. Он работает на Ubuntu и просто включает в себя создание .desktop-пусковой установки, которая задает переменную больного среды, о которой идет речь.
Запишите, где установлен Android Studio 3, например. ~/opt/android-studio-3
.
Подготовьте локальный каталог значков и приложений, если они еще не существуют:
mkdir -vp ~/.local/share/icons ~/.local/share/applications
Создайте значок Android Studio 3, который заставит вашу пусковую установку выделяться из значка по умолчанию и сохранить его в ~/.local/share/icons/android-studio-3.png
. Или вы можете использовать ту, которую я сделал, протирая кусок сыра на оригинале (~/opt/android-studio-3/bin/studio.png
):
Создайте файл запуска Android Studio 3 путем копирования и вставки его в оболочку:
cat <<-EOF > ~/.local/share/applications/android-studio-3.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Android Studio 3
Icon=android-studio-3
Exec=env LC_NUMERIC="en_US.UTF-8" opt/android-studio-3/bin/studio.sh "%f"
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-studio
EOF
Сделайте его исполняемым:
chmod +x ~/.local/share/applications/android-studio-3.desktop
Теперь для сложной части. В идеале вы сможете найти, запустить и создать шорты для Android Studio 3 из Dash:
Но лично мне почти всегда не удается заставить Ubuntu обнаруживать мои новые или измененные файлы .desktop. Одним из решений является выход из системы и повторный вход. Если кто-нибудь знает, как заставить повторное сканирование, пожалуйста, дайте мне знать!
Здесь простое, элегантное и полупостоятельное исправление: измените локаль самой Android-студии, изменив ее запуск script:
Изменить studio.sh
, например. ~/opt/android-studio/bin/studio.sh
или как может быть ваш путь установки.
Где-то в верхней части файла ниже #!/bin/sh
и перед появлением первых строк кода добавьте следующее:
LC_NUMERIC="en_US.UTF-8"
.
Здесь верхняя часть моего studio.sh
для полноты:
#!/bin/sh
#
# ---------------------------------------------------------------------
# Android Studio startup script.
# ---------------------------------------------------------------------
#
LC_NUMERIC="en_US.UTF-8"
message()
{
TITLE="Cannot start Android Studio"
...
Перезапустите Android Studio
Когда вы позже обновите установку Android Studio, он обнаружит, что вы изменили studio.sh
. Вы должны позволить установщику заменить файл, а затем выполнить патч снова, как описано выше. Наконец, перезапустите Android Studio, и вы снова будете готовы. Другие решения не зависят от этого.
Построение из оболочки с помощью gradlew
также требует применения исправления. Это влияет только на оболочку, а не на Android Studio. Выберите один:
Либо укажите исправление для каждого вызова, как это:
LC_NUMERIC="en_US.UTF-8" ./gradlew clean assDebug
Или, чтобы сделать это постоянным для проекта, отредактируйте файл gradlew
в корне проекта и где-нибудь наверху добавьте это:
LC_NUMERIC="en_US.UTF-8"
Как здесь:
#!/usr/bin/env bash
################################################################################
##
## Gradle start up script for UN*X
##
################################################################################
LC_NUMERIC="en_US.UTF-8"
# Add default JVM options here. You can al...
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
...
Или вы можете, конечно, также добавить глобальное и постоянное исправление, хотя использование псевдонима gr
:
cat <<EOF>>~/.bash_aliases
# Fixing Android Studio 3 Canary bug https://stackoverflow.com/a/44304075/2412477
alias gr='LC_NUMERIC="en_US.UTF-8" ./gradlew'
EOF
Обратите внимание, что в Ubuntu добавлены псевдонимы оболочки bash; если вы находитесь на другой ОС, возможно, вам следует добавить в ~/.bashrc или ~/.profile.
Затем запустите новую оболочку и теперь вместо вызова ./gradlew
используйте новый псевдоним gr
:
gr clean assDebug
Очевидным недостатком № 2 является то, что это нужно применять ко всем проектам вручную. Преимущество, я думаю, в том, что это будет автоматически перезаписано при установке нового gradlew, так же как studio.sh
заменяется, поэтому вы можете проверить, исправлена ли ошибка =)
Лично я бы этого не сделал, но я добавил его для полноты, так как это определенно способ заставить appt2 перестать давать ошибки. Добавьте эту строку в свой gradle.properties
: android.enableAapt2=false
Я решил эту проблему, добавив следующую строку в файлы gradle.properties
android.enableAapt2=false
Добавление android.enableAapt2 = false в gradle.properties работал у меня.
Эта проблема исправлена в новейшей версии Android Studio. Обновление Android Studio до версии 3.0 должно решить эту проблему (также нет необходимости отключать AAPT2).
Необходимые библиотеки для 64-разрядных машин:
Если вы используете 64-битную версию Ubuntu, вам необходимо установить 32-разрядные библиотеки со следующей командой:
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386
Если вы используете 64-битную Fedora, команда:
sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686
добавить
maven{
url 'https://maven.google.com'
}
для хранилищ для меня