Saya bermain-main dengan Aplikasi Instan untuk Android. Saya menginstal semua paket yang benar dan lelah untuk membuat Aplikasi baru dengan dukungan Aplikasi Instan (centang kotak Aplikasi Instan saat memasukkan aplikasi baru). Masalahnya adalah saya selalu mengalami masalah dengan alat kompilasi. Apakah ada orang lain yang memiliki masalah ini dan dapat menemukan solusi untuk itu.
Lingkungan saya:
- Android Studio 3.0 Canary 1
- Kompilasi SDK: 25
- Alat Bangun: "26.0.0 rc2"
- Plugin Gradle: 3.0.0-alpha1
- Gradle: mencoba gradle-4.0-milestone1 dan 2
- Java 1.8 / 1.7
- OS: mencoba Windows 10 dan Linux Ubuntu 16.4 LTS
Kesalahannya:
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
Baris yang dimaksud berisi (520):
<item format="float" name="abc_disabled_alpha_material_dark" type="dimen">0.30</item>
Semoga saya memberikan informasi yang cukup kepada Anda untuk menyelesaikan masalah tersebut. Terima kasih.
Jawaban:
Solusinya adalah dengan mengalihkan mesin pengembangan Anda ke lokal yang menggunakan "." sebagai tanda desimal.
Itu dapat diubah dengan cara berikut:
sumber
Di bawah ini disebutkan empat solusi berbeda: A, B, C, dan D; pilih salah satu yang cocok untuk Anda:
A) Memperbaiki Android Studio melalui file peluncur .desktop Ubuntu
Ini adalah alternatif khusus Ubuntu untuk pendekatan umum tentang Memperbaiki Android Studio (lihat di bawah). Perhatikan bahwa Anda mungkin masih ingin menerapkan bagian tentang Memperbaiki shell , dan mungkin bahkan mengembalikan modifikasi apa pun
studio.sh
untuk sepenuhnya mengonfirmasi perbaikan ini.Saya bosan menambal
studio.sh
untuk setiap pembaruan kenari, jadi saya datang dengan solusi yang lebih baik yang menghilangkan langkah ini. Ini berfungsi di Ubuntu dan hanya melibatkan pembuatan peluncur .desktop yang menetapkan variabel lingkungan sakit yang dimaksud.Catat di mana Android Studio 3 Anda diinstal, misalnya
~/opt/android-studio-3
.Siapkan ikon lokal dan direktori aplikasi Anda, jika belum ada:
mkdir -vp ~/.local/share/icons ~/.local/share/applications
Buat ikon Android Studio 3 yang akan membuat peluncur Anda menonjol dari ikon default dan simpan di dalamnya
~/.local/share/icons/android-studio-3.png
. Atau Anda bisa menggunakan yang saya buat dengan menggosokkan sepotong keju pada aslinya (~/opt/android-studio-3/bin/studio.png
):Buat file peluncur Android Studio 3 dengan menyalin dan menempelkannya ke dalam shell:
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
Jadikan itu dapat dieksekusi:
chmod +x ~/.local/share/applications/android-studio-3.desktop
Sekarang untuk bagian yang sulit. Idealnya Anda harus dapat menemukan, memulai, dan membuat celana pendek untuk Android Studio 3 dari Dash:
Tetapi secara pribadi, saya hampir selalu kesulitan mendapatkan Ubuntu untuk mendeteksi file .desktop saya yang baru atau yang diubah. Salah satu solusinya adalah keluar dan masuk kembali. Jika ada yang tahu cara memaksa pemindaian ulang, beri tahu saya!
B) Memperbaiki skrip mulai Android Studio
Berikut ini perbaikan yang mudah, elegan, dan semi-permanen: Hanya ubah lokal Android Studio itu sendiri dengan memodifikasi skrip startupnya:
Sunting
studio.sh
misalnya~/opt/android-studio/bin/studio.sh
atau apapun jalur instalasi Anda.Di suatu tempat di bagian atas file, di bawah
#!/bin/sh
dan sebelum baris kode pertama muncul, tambahkan ini:LC_NUMERIC="en_US.UTF-8"
.Inilah bagian atas saya
studio.sh
untuk kelengkapan:#!/bin/sh # # --------------------------------------------------------------------- # Android Studio startup script. # --------------------------------------------------------------------- # LC_NUMERIC="en_US.UTF-8" message() { TITLE="Cannot start Android Studio" ...
Mulai ulang Android Studio
Catatan tentang Mengupgrade Android Studio atau Gradle
Saat nanti Anda mengupgrade penginstalan Android Studio, itu akan mendeteksi bahwa Anda telah memodifikasi
studio.sh
. Anda harus membiarkan penginstal mengganti file, dan kemudian melakukan patch lagi seperti dijelaskan di atas. Terakhir, mulai ulang Android Studio, dan Anda akan siap lagi. Solusi lain tidak terpengaruh oleh ini.C) Memperbaiki cangkang; Gradle, Jenkins, semua itu
Membangun dari cangkang menggunakan
gradlew
juga membutuhkan perbaikan untuk diterapkan. Ini hanya memengaruhi shell dan bukan Android Studio. Pilih salah satu:Tentukan perbaikan pada setiap pemanggilan seperti ini:
LC_NUMERIC="en_US.UTF-8" ./gradlew clean assDebug
Atau untuk menjadikannya permanen untuk proyek , edit
gradlew
file di root proyek dan di suatu tempat di bagian atas tambahkan ini:LC_NUMERIC="en_US.UTF-8"
Seperti di sini:
#!/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" ...
Atau Anda tentu saja dapat juga menambahkan memperbaiki global dan permanen meskipun penggunaan alias,
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
Perhatikan ini adalah bagaimana alias bash shell ditambahkan di Ubuntu; jika Anda menggunakan OS berbeda, mungkin Anda harus menambahkan ~ / .bashrc atau ~ / .profile.
Kemudian mulai shell baru dan sekarang alih-alih meminta,
./gradlew
gunakan alias barugr
:gr clean assDebug
Kerugian yang jelas dari # 2 adalah bahwa ini harus diterapkan pada semua proyek secara manual. Keuntungannya, menurut saya, adalah ini akan otomatis ditimpa ketika gradlew baru dipasang, seperti
studio.sh
diganti, jadi Anda bisa menguji apakah bug telah diperbaiki =)D) Menonaktifkan APPT2 secara bersamaan
Secara pribadi saya tidak akan melakukan ini, tetapi saya telah menambahkannya untuk kelengkapan karena ini pasti adalah cara untuk membuat appt2 berhenti memberikan kesalahan. Tambahkan baris ini ke
gradle.properties
:android.enableAapt2=false
sumber
android.enableAapt2
(atau serupa) kefalse
di mygradle.properties
. Terima kasih banyak atas jawaban yang membantu :)Saya memecahkan masalah ini dengan menambahkan baris berikut ke file gradle.properties
android.enableAapt2=false
sumber
export LC_NUMERIC="en_US.UTF-8"
ke .bashrc Anda yang berfungsi seperti pesona bagi sayaMasalah ini telah diperbaiki di Android Studio stable terbaru. Mengupgrade Android Studio Anda ke 3.0 akan menyelesaikan masalah ini untuk Anda (juga tidak perlu menonaktifkan AAPT2).
sumber
Pastikan Anda tidak menambahkan satuan apa pun (dp) saat menggunakan
format="float"
Saya menghadapi masalah yang sama karena saya membuat dimens secara otomatis menggunakan Android Studio menggunakan
Extract dimen resource
dan menambahkan tipe unit seperti:<item name="margin_top" type="dimen" format="float">51.75dp</item>
Harus:
<item name="margin_top" type="dimen" format="float">51.75</item>
sumber
Menambahkan
maven{ url 'https://maven.google.com' }
ke repositori bekerja untuk saya
sumber
Pustaka yang diperlukan untuk mesin 64-bit:
Jika Anda menjalankan Ubuntu versi 64-bit, Anda perlu menginstal beberapa pustaka 32-bit dengan perintah berikut:
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386
Jika Anda menjalankan Fedora 64-bit, perintahnya adalah:
sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686
sumber