Android 용 인스턴트 앱을 가지고 놀고 있는데 올바른 패키지를 모두 설치했고 인스턴트 앱 지원이 포함 된 새 애플리케이션을 만드는 데 지쳤습니다 (새 애플리케이션을 만들 때 인스턴트 앱 확인란을 선택 함). 문제는 항상 컴파일 도구에 문제가 있다는 것입니다. 다른 사람이이 문제를 가지고 있고 해결 방법을 찾을 수 있습니까?
내 환경 :
- 안드로이드 스튜디오 3.0 카나리아 1
- SDK 컴파일 : 25
- 빌드 도구 : “26.0.0 rc2”
- Gradle 플러그인 : 3.0.0-alpha1
- Gradle : gradle-4.0-milestone1 및 2를 모두 시도했습니다.
- 자바 1.8 / 1.7
- OS : Windows 10 및 Linux Ubuntu 16.4 LTS를 모두 사용해 보았습니다.
오류:
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의 네 가지 솔루션 이 언급되어 있습니다 . 귀하에게 적합한 것을 선택하십시오.
A) Ubuntu .desktop 런처 파일을 통해 Android Studio 수정
이는 Android Studio 수정 에 대한 일반적인 접근 방식에 대한 Ubuntu 전용 대안입니다 (아래 참조). 셸 수정에 대한 부분을 구현하고 수정 사항을 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
-
이제 까다로운 부분입니다. 이상적으로는 Dash에서 Android Studio 3 용 반바지를 찾고, 시작하고, 만들 수 있어야합니다.
그러나 개인적으로 저는 거의 항상 Ubuntu가 내 새롭거나 변경된 .desktop 파일을 감지하는 데 어려움을 겪습니다. 한 가지 해결책은 로그 아웃했다가 다시 로그인하는 것입니다. 재검색을 강제하는 방법을 아는 사람이 있으면 알려주세요!
B) Android Studio 시작 스크립트 수정
다음은 쉽고 우아하며 반영구적 인 수정입니다. 시작 스크립트를 수정하여 Android 스튜디오 자체의 로케일 만 변경하세요.
-
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 또는 Gradle 업그레이드에 대한 참고 사항
나중에 Android Studio 설치를 업그레이드하면 studio.sh
. 설치 프로그램이 파일을 교체하도록하고 나중에 위에서 설명한대로 패치를 다시 수행해야합니다. 마지막으로 Android Studio를 다시 시작하면 다시 준비됩니다. 다른 솔루션은 이에 영향을받지 않습니다.
C) 쉘 고정; Gradle, Jenkins, 모든 것
를 사용하여 셸에서 빌드 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 셸 별칭이 추가되는 방법입니다. 다른 OS를 사용하고 있다면 ~ / .bashrc 또는 ~ / .profile에 대신 추가해야합니다.
그런 다음 새 셸을 시작하고 지금 호출
./gradlew
하는 대신 새 별칭을 사용합니다gr
.gr clean assDebug
# 2의 분명한 단점은 모든 프로젝트에 수동으로 적용해야한다는 것입니다. 장점은 새 gradlew가 설치 될 때 자동으로 덮어 써진다는 것입니다. studio.sh
교체되는 것과 같이 버그가 수정되었는지 테스트 할 수 있습니다 =)
D) APPT2 모두 비활성화
개인적으로 나는 이것을하지 않을 것이지만, appt2가 오류를주는 것을 멈추게하는 방법이기 때문에 완전성을 위해 추가했습니다. 다음 줄을 추가하십시오 gradle.properties
.android.enableAapt2=false
답변
gradle.properties 파일에 다음 줄을 추가하여이 문제를 해결했습니다.
android.enableAapt2=false
답변
이 문제는 안정적인 최신 Android Studio에서 수정되었습니다. Android Studio를 3.0으로 업그레이드하면이 문제가 해결됩니다 (AAPT2를 비활성화 할 필요도 없음).
답변
사용할 때 단위 (dp)를 추가하지 않았는지 확인하십시오. format="float"
Android Studio를 사용하여 치수를 자동 생성 Extract dimen resource
하고 다음과 같은 단위 유형을 추가 했기 때문에 동일한 문제에 직면했습니다 .
<item name="margin_top" type="dimen" format="float">51.75dp</item>
그것은해야한다:
<item name="margin_top" type="dimen" format="float">51.75</item>
답변
더하다
maven{
url 'https://maven.google.com'
}
저장소가 나를 위해 작동합니다.
답변
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