AAPT2 derlemesi başarısız oldu: Android 3.0 Canary 1'de geçersiz dimen


88

Android için Hazır Uygulamalar ile oynuyorum.Tüm doğru paketleri yükledim ve Hazır Uygulama desteği ile yeni Uygulama oluşturmaktan yoruldum (yeni uygulama oluştururken Hazır Uygulama kutusunu işaretledim). Sorun şu ki, derleme araçlarıyla her zaman bir sorunla karşılaşıyorum. Başka kimsenin bu sorunu var mı ve herhangi bir geçici çözüm bulabildi.

Çevrem:

  • Android Studio 3.0 Kanarya 1
  • SDK derleyin: 25
  • Derleme Araçları: "26.0.0 rc2"
  • Gradle eklentisi: 3.0.0-alpha1
  • Gradle: Gradle-4.0-milestone1 ve 2'nin her ikisini de denedi
  • Java 1.8 / 1.7
  • İşletim Sistemi: hem Windows 10 hem de Linux Ubuntu 16.4 LTS'yi denedi

Hata:

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

Söz konusu satır şunları içerir (520):

<item format="float" name="abc_disabled_alpha_material_dark" type="dimen">0.30</item>

Umarım sorunu çözmek için size yeterli bilgi vermişimdir. Teşekkür ederim.


4
Yapının çalışmasını sağlamak için bir geçici çözüm olarak, şu anda aapt2'yi devre dışı bıraktım ve yapıyı test etmek için çalışıyor ... bunu gradle.properties dosyanızda android.enableAapt2 = false ayarlayarak yapabilirsiniz. Emin değilim bir stüdyo hatası olabileceğini düşünüyorum ...
BruceWayne

Diğer çözüm ise stackoverflow.com/a/33943562/5125608 Benim için çalışıyor.
anlijudavid

5
Bilginize, en son kanarya derlemesi, 5 yayınlandı ve Google aşağıda bu AAPT2 ile ilgili aşağıdaki AAPT2 ile hala sorun yaşadıklarını belirtti. Artımlı kaynak işlemeyi mümkün kılan AAPT2'yi stabilize etmeye devam ediyoruz. Derlemeniz kaynak işleme sorunu nedeniyle başarısız olursa, lütfen bize bir hata raporu gönderin. AAPT'yi geçici olarak devre dışı bırakmak için, gradle.properties dosyanızda android.enableAapt2 = false değerini ayarlayın. Roboelectric şu anda AAPT2
Infinite Loops

Yanıtlar:


57

Çözüm, geliştirme makinenizi "." Kullanan bir yerel ayara geçirmektir. ondalık işaret olarak.

Aşağıdaki şekilde değiştirilebilir:

görüntü açıklamasını buraya girin


6
Bu benim için çalıştı. Sistem genelinde uygulamak gerekli değildi. Ancak Android-Studio'yu yeniden başlatmak yeterli değildir. Değişiklikleri gradle oluşturma için etkin hale getirmek için oturumu kapatıp tekrar açmanız (veya sisteminizi yeniden başlatmanız) gerekir.
Salim

14
İşe yarıyor! Linux için şunları yapmalısınız: LC_NUMERIC = "en_US.UTF-8" i dışa aktarın ve ardından Android Studio'yu aynı komut isteminde başlatın
sposnjak

17
Studio.sh'nin başına aktarım LC_NUMERIC = "en_US.UTF-8" ekledim ve sorunsuz çalışıyor. Sadece bazı hataların üstesinden gelmek için sistem genelinde yerel ayarımı kesinlikle değiştirmem.
rzehan

7
... ne kadar? Birine, bir uygulamadaki tek bir hata nedeniyle sistem genelinde yerel ayarını değiştirmesini önermek çılgınca. Tarihinizin nasıl biçimlendirileceğini, örneğin e-posta istemcilerinde, hatta dilde ve hemen hemen her şeyi etkileyecektir.
Stephan Henningsen

2
Ben pencerelerdeyim. Herhangi bir öneri?
user2520215

106

Aşağıda dört farklı çözümden bahsedilmiştir : A, B, C ve D; size uygun olanı seçin:

A) Android Studio'yu Ubuntu .desktop başlatıcı dosyasıyla düzeltme

Bu, Android Studio'yu Düzeltme konusundaki genel yaklaşıma yalnızca Ubuntu'ya özgü bir alternatiftir (aşağıya bakın). Kabuğun Düzeltilmesi ile ilgili bölümü hala uygulamak isteyebileceğinizi ve hatta studio.shbu düzeltmeyi tamamen onaylamak için herhangi bir değişikliği geri almak isteyebileceğinizi unutmayın.

studio.shHer kanarya güncellemesine yama yapmaktan yoruldum , bu yüzden bu adımı ortadan kaldıran daha iyi bir çözüm buldum. Ubuntu üzerinde çalışır ve söz konusu hasta ortam değişkenini belirleyen bir .desktop başlatıcısı oluşturmayı içerir.

  1. Android Studio 3'ün nerede kurulu olduğunu not edin, ör ~/opt/android-studio-3.

  2. Halihazırda mevcut değilse, yerel simgenizi ve uygulamalar dizininizi hazırlayın:

    mkdir -vp ~/.local/share/icons ~/.local/share/applications
    
  3. Başlatıcıyı varsayılan simgeden ayıracak ve içine kaydedecek bir Android Studio 3 simgesi oluşturun ~/.local/share/icons/android-studio-3.png. Veya benim yaptığım peyniri orijinalin üzerine sürterek kullanabilirsiniz ( ~/opt/android-studio-3/bin/studio.png):

    android-studio-3.png

  4. Bunu kopyalayıp bir kabuğa yapıştırarak bir Android Studio 3 başlatıcı dosyası oluşturun:

    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
    
  5. Çalıştırılabilir yapın:

    chmod +x ~/.local/share/applications/android-studio-3.desktop
    
  6. Şimdi işin zor kısmı. İdeal olarak, Android Studio 3 için Dash'tan şort bulabilmeniz, başlatabilmeniz ve oluşturabilmeniz gerekir:

Zevk için

Ancak kişisel olarak, Ubuntu'nun yeni veya değiştirilmiş .desktop dosyalarımı algılamasını sağlamakta neredeyse her zaman sorun yaşıyorum. Çözümlerden biri, oturumu kapatıp tekrar açmaktır. Yeniden taramayı nasıl zorlayacağını bilen biri varsa lütfen bana bildirin!

B) Android Studio başlangıç ​​komut dosyasını düzeltme

İşte kolay, zarif ve yarı kalıcı bir düzeltme: Android Studio'nun yerel ayarını yalnızca başlangıç ​​komut dosyasını değiştirerek değiştirin:

  1. Düzenleme studio.shörn ~/opt/android-studio/bin/studio.shYükleme yol olabilir ya da her neyse.

  2. Dosyanın üst kısmında, altına #!/bin/shve ilk kod satırlarının görünmesinden önce şunu ekleyin:

    LC_NUMERIC="en_US.UTF-8".

    İşte studio.shbütünlüğümün en üst kısmı :

    #!/bin/sh
    #
    # ---------------------------------------------------------------------
    # Android Studio startup script.
    # ---------------------------------------------------------------------
    #
    
    LC_NUMERIC="en_US.UTF-8"
    
    message()
    {
      TITLE="Cannot start Android Studio"
    ...
    
  3. Android Studio'yu yeniden başlatın

Android Studio veya Gradle'ı Yükseltme Hakkında Bir Not

Daha sonra Android Studio kurulumunuzu yükselttiğinizde, değişiklik yaptığınızı algılar studio.sh. Yükleyicinin dosyayı değiştirmesine izin vermeli ve ardından yamayı yukarıda açıklandığı gibi yeniden gerçekleştirmelisiniz. Sonunda Android Studio'yu yeniden başlatın ve tekrar hazır olacaksınız. Diğer çözümler bundan etkilenmez.

C) Kabuğun sabitlenmesi; Gradle, Jenkins, hepsi

Kabuk kullanarak inşa etmek gradlewde düzeltmenin uygulanmasını gerektirir. Bu yalnızca kabuğu etkiler, Android Studio'yu etkilemez. Birini seçin:

  1. Her çağrıda aşağıdaki gibi düzeltmeyi belirtin:

    LC_NUMERIC="en_US.UTF-8" ./gradlew clean assDebug

  2. Veya bunu proje için kalıcı hale getirmek için ,gradlew dosyayı projenin kök dizininde düzenleyin ve en üstte bir yere şunu ekleyin:

    LC_NUMERIC="en_US.UTF-8"

    Burası gibi:

    #!/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"
    ...
    
  3. Yoksa elbette ayrıca, bir takma ad kullanımı olsa küresel ve kalıcı bir düzeltme ekleyebilirsiniz 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'ya bash kabuk takma adlarının bu şekilde eklendiğini unutmayın; Farklı bir işletim sistemindeyseniz bunun yerine ~ / .bashrc veya ~ / .profile eklemelisiniz.

    Sonra yeni bir kabuk başlatın ve şimdi çağırmak yerine ./gradlewyeni takma adı kullanın gr:

    gr clean assDebug

# 2'nin açık dezavantajı, bunun tüm projelere manuel olarak uygulanması gerektiğidir. Bence avantajı, yeni bir gradlew yüklendiğinde bunun otomatik olarak üzerine yazılacağıdır, tıpkı studio.shdeğiştirildiği gibi , böylece hatanın giderilip giderilmediğini test edebilirsiniz =)

D) APPT2'nin hep birlikte devre dışı bırakılması

Şahsen ben bunu yapmazdım, ama kesinlikle appt2'nin hata vermeyi bırakmasını sağlamanın bir yolu olduğu için bunu bütünlük için ekledim. Bu satırı şuraya ekle gradle.properties:android.enableAapt2=false


10
bu, kabul edilen cevaptan çok daha iyi bir çözüm gibi görünüyor
lelloman

2
Nedense bu benim için çalışmıyor. Android Studio 3.0 Canary 3 aldım ve tüm bunları ayarladıktan sonra birleştirme sorunu devam ediyor. Yerel ayarım en_US.UTF-8
vladaman

1
Canary 3'e yeni güncelledim ve buraya tekrar kopyalayıp yapıştırmak için geldim, hala benim için çalışıyor
lelloman

1
@vladaman Bu bariz kayan nokta hatasını düzeltir, ancak Android Studio 3.0 canary 3 hala öncekinden daha katıdır ve kaynak dosyalarınızda önceden kabul edilen bazı hatalar artık birleştirme hatasına neden olacaktır. Bugün itibariyle, tasarım kitaplığı önizlemesinin
sorunlu olduğunu

1
@Stephan Henningsen, 26.X sürümünde SDK, araçlar ve kitaplıkları kullanmama rağmen, neyi yanlış yapabilirdim bilmiyorum. Zaten sadece ayarıyla aapt2 devre dışı bırakarak hatayı kendim sabit android.enableAapt2(veya benzeri) falseskinTenimde gradle.properties. Yine de yararlı yanıt için çok teşekkürler :)
Maxr1998

33

Gradle.properties dosyalarına aşağıdaki satırı ekleyerek bu sorunu çözdüm

android.enableAapt2=false

2
Bu cevabın açıklamasını hak ettiğini düşünüyorum.
ksugiarto

bu cevap yardımcı oldu, ancak sorunu çözmüyor sadece buna neden olan gradle modülünü kapatıyor, aapt2'ye ihtiyacınız varsa, o zaman kesinlikle export LC_NUMERIC="en_US.UTF-8"benim için cazibe gibi çalışan .bashrc'nize ekleyin
lukassos

1
MAC OS kullanıcıları ne olacak?
HendraWD

Windows ortamında geliştiriyorum, bunun için ne gibi değişikliğe ihtiyacım var?
Mehbube Arman

android.enableAapt2 = false kullanımdan kaldırılıyor ve
2018'in

1

Bu sorun, en yeni kararlı Android Studio'da düzeltildi. Android Studio'nuzu 3.0'a yükseltmek bu sorunu sizin için çözecektir (ayrıca AAPT2'yi devre dışı bırakmanıza gerek yoktur).


0

Kullanırken herhangi bir birim (dp) eklemediğinizden emin olun. format="float"

Aynı sorunla karşı karşıyaydım çünkü Android Studio kullanarak boyutları otomatik olarak oluşturdum Extract dimen resourceve aşağıdaki gibi birim türü ekledi:

<item name="margin_top" type="dimen" format="float">51.75dp</item>

Olmalı:

<item name="margin_top" type="dimen" format="float">51.75</item>


-6

Ekle

maven{
 url 'https://maven.google.com'
}

depolar benim için çalışıyor


@EugenPechanec Evet
Romuald DANSOU

Bu hiç mantıklı değil. İhtiyaç duyduğunuzda depoyu kaçırdıysanız, kaynakları birleştirecek kadar ileri gidemezsiniz. Eksik bağımlılıklar nedeniyle derleme başarısız olur. Depoya ihtiyacınız olmasaydı, belirtilmesi hiçbir şeyi değiştirmezdi. OP, projelerine google maven repo referansını zaten eklememiş olsalardı, inşa sürecinde bu kadar ileri gidemezdi. Cevabınız eldeki soruna çözüm sağlamıyor. Başka değişiklikler de yapmış olmalısın.
Eugen Pechanec

-6

64 bit makineler için gerekli kitaplıklar:

Ubuntu'nun 64 bit sürümünü çalıştırıyorsanız, aşağıdaki komutla bazı 32 bit kitaplıkları yüklemeniz gerekir:

sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386

64 bit Fedora çalıştırıyorsanız, komut şu şekildedir:

sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686

Bu paketleri kurmanın OP'de eldeki sorunu nasıl çözeceğini anlamıyorum. Bu problem, deflate sıkıştırma yöntemiyle nasıl ilişkilidir? Kendi kendime lib32z1 kurmadım ve bu stackoverflow.com/a/44304075/2412477'yi uyguladıktan sonra kurulumum çalışıyor ; Potansiyel olarak gereksiz paketleri kurmadan önce herkesin bunu denemesini tavsiye ederim.
Stephan Henningsen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.