Kiedy uruchamiam cordova build android --buildConfig xxxx --release
, pojawia się następujący błąd:
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex
Dziwne jest to, że do kompilacji używam dwóch maszyn macOS i otrzymuję ten błąd tylko na jednej z nich dla tego samego kodu.
Oto wynik ./gradlew cdvPrintProps
uzyskany na dwóch komputerach:
:cdvPrintProps
cdvCompileSdkVersion=26
cdvBuildToolsVersion=27.0.3
cdvVersionCode=null
cdvMinSdkVersion=21
cdvBuildMultipleApks=true
cdvReleaseSigningPropertiesFile=release-signing.properties
cdvDebugSigningPropertiesFile=null
cdvBuildArch=null
computedVersionCode=152045989
computedArmv7VersionCode=1520459892
computedX86VersionCode=1520459894
Poniżej znajduje się lista użytych wtyczek:
$ cordova plugins list
cordova-custom-config 5.0.2 "cordova-custom-config"
cordova-fabric-plugin 1.1.10 "cordova-fabric-plugin"
cordova-open-native-settings 1.5.0 "Native settings"
cordova-plugin-app-event 1.2.1 "Application Events"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-console 1.1.0 "Console"
cordova-plugin-crosswalk-webview 2.4.0 "Crosswalk WebView Engine"
cordova-plugin-datepicker 0.9.2 "DatePicker"
cordova-plugin-device 2.0.1 "Device"
cordova-plugin-email 1.2.7 "EmailComposer"
cordova-plugin-file 4.3.3 "File"
cordova-plugin-file-transfer 1.6.3 "File Transfer"
cordova-plugin-inappbrowser 1.7.2 "InAppBrowser"
cordova-plugin-network-information 1.3.4 "Network Information"
cordova-plugin-secure-storage 2.6.8 "SecureStorage"
cordova-plugin-splashscreen 4.1.0 "Splashscreen"
cordova-plugin-statusbar 2.4.1 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova.plugins.diagnostic 3.9.2 "Diagnostic"
de.appplant.cordova.plugin.local-notification 0.8.5 "LocalNotification"
ionic-plugin-keyboard 2.2.1 "Keyboard"
Jak mogę rozwiązać ten problem?
Odpowiedzi:
Po prostu umieść śledzenie w build-extras.gradle
źródło
build-extras.gradle
w moim projekcie root dodany kod, aby skopiować go nahooks\after_platform_add
gist.github.com/charlesbedrosian/ ...Google wydało nową wersję 28.0.0-alfa1 z com.android.support:support-v4 która jest dodanie 2 nowych atrybutów (Android: fontVariationSettings i Android: ttcIndex). Niektóre wtyczki używają najnowszych bibliotek obsługujących Androida, co powoduje niepożądane niezgodności.
Opcja 1: Zainstaluj wtyczkę cordova-android-support-gradle-release .
Dobrze udokumentowana wtyczka, która „dopasowuje różne wersje bibliotek Android Support określonych przez inne wtyczki do określonej wersji”. Testowane bez destrukcyjnego zachowania.
Przeczytaj dokumentację, aby uzyskać pełny zestaw opcji: Readme
Opcja 2 : Dodaj następny fragment kodu w build.gradle pod platformami / android
Ostrzeżenie: kod w build.gradle zostanie nadpisany, jeśli usuniesz / dodasz platformę Android. Jeśli z jakiegoś powodu nie chcesz używać wtyczki lub z jakiegoś powodu nie działa, utwórz podpięcie i za każdym razem nadpisuj plik. Sprawdź drugi komentarz tutaj .
Jeśli problem nie ustąpi, możesz spróbować:
LUB
Upewnij się, że na testowanym urządzeniu nie masz zainstalowanej poprzedniej wersji aplikacji , ponieważ podczas próby zmiany istniejącej wersji na starszą wersję pojawi się niejednoznaczny błąd: „INSTALL_FAILED_VERSION_DOWNGRADE” i „UnhandledPromiseRejectionWarning: Unhandled Promise Rejection”
źródło
Przydarza mi się ten sam błąd. Najwyraźniej
com.android.support:support-v4
została wydana nowa wersja biblioteki, a wtyczka, której używam, definiujecom.android.support:support-v4:+
jako zależność wplugin.xml
. Na+
znak oznacza, że będzie uzyskać najnowszą wersję (28.0.0), co wydaje wydaje się być niezgodne z innych wtyczek.Udało mi się zbudować wersję rozwojową, zmieniając wszystkie zależności wtyczek z
com.android.support:support-v4:+
nacom.android.support:support-v4:27.1.0
. Wykonałem równieżionic cordova platform remove android
iionic cordova platform add android
. Mam nadzieję, że to pomoże, przynajmniej w rozwoju.źródło
Właśnie rozwiązałem ten problem, przechodząc do folderu platforma / Android, edytując
project.properties
plik) i zastępująccom.android.support:support-v4:+
gocom.android.support:support-v4:27.1.0
.źródło
Jeśli naprawdę potrzebujesz szybkiej naprawy tego problemu, aby kompilacja działała, możesz spróbować dodać następujące wiersze do pliku platform / android / build.gradle:
W każdym razie ustawienie wersji tutaj nie jest trwałym rozwiązaniem.
źródło
To dziwne, ale działa, gdy dodam poniższe wiersze z tymi samymi wersjami.
Oto moje powiązane wiersze w
platforms/android/build.gradle
pliku:W moim projekcie problem wystąpił z powodu wtyczki „cordova-plugin-crosswalk-webview”.
źródło
Mam ten sam błąd, ale nie w kompilacji Cordova. Nowa wersja
com.android.support:appcompat-v7
zależności i, ale niezgodna wersja znajduje się w trzecim pakiecie zależnym odcom.android.support:appcompat-v7
., Więc nie mogę naprawić trzeciego pakietu za pomocą @avmatte rozwiązania .Użyj rozwiązania @ Sai Teja , aby znaleźć niekompatybilny pakiet:
Następnie napraw to za pomocą:
Powyższy kod wymusza wersję zależności.
źródło
Miałem ten sam błąd. Przeprowadziłem pełne badanie w katalogu wtyczek dla com.android.support:support-v4:+ i zastąpiłem go statycznym kodem wersji.
Dla mnie com.android.support:support-v4:23.4.0 działał dobrze. Nie było wtedy potrzeby usuwania i ponownego dodawania platformy Android.
źródło
Oto prosty sposób na naprawienie tego problemu, który będzie się utrzymywał, gdy katalog platformy zostanie odbudowany i nie ma potrzeby przeglądania wszystkich wtyczek w celu znalezienia winowajcy. Utwórz plik
build-extras.gradle
z następującą zawartością:Następnie utwórz plik
after_platform_add/010_copy_build_extras.js
o następującej zawartości:Teraz odtwórz platformę Android i użyje ona przypiętej biblioteki wsparcia.
źródło
<platform name="android"> <hook src="hooks/copy_build_extras.js" type="before_build" /> </platform>
process.argv[2]
jestbuild
dla mnie!Rozwiązanie znalazłem na Ionic Forum, które było jedynym rozwiązaniem, które u mnie zadziałało:
Biegać:
platforma ionic cordova rm android
Biegać:
platforma ionic cordova dodaj [email protected]
Biegać:
ionic cordova plugin dodaj cordova-plugin-androidx
Biegać:
ionic cordova plugin dodaje adapter cordova-plugin-androidx
Upewnij się, że Twój gradle.properties ma:
cdvMinSdkVersion = 19
Upewnij się, że plik build.gradle zawiera:
Upewnij się, że plik config.xml zawiera:
od: https://forum.ionicframework.com/t/firebase-app-unable-to-compile-on-android-with-aapt-error/166564/7
co jest również obsługiwane w odpowiedzi stackoverflow: https://stackoverflow.com/a/56656680/839691
źródło
Ionic 3
aplikacji. Dziękuję Ci!Niektóre z twoich bibliotek powinny używać
Znajdź, który to jest, z
I dodaj tę bibliotekę jako moduł, jeśli nie używa określonej wersji w swojej najnowszej aktualizacji (Podnieś również problem w tej bibliotece!;))
Dzięki @avmatte!
EDYCJA: Możesz również zażądać gradle, aby wymusić wersję biblioteki
źródło
Miałem wczoraj ten sam problem niespodziewanie. Zaczęło się losowo, ale po przeczytaniu wygląda na to, że ma to związek z aktualizacją, o której wspomniał powyżej @ cpro90. Jednak próbowałem i nie mogłem znaleźć miejsca, w którym dokonać niezbędnej ręcznej zmiany.
W końcu zidentyfikowałem, że przyczyną problemu jest moja wtyczka cordova-plugin-crosswalk-webview. Na GitHubie znalazłem problem z powtórką wtyczki dziś rano i miał ponad 520 wyświetleń do obiadu.
@UNUMObile zasugerował następujące w
build.gradle
pliku, aby wymusić globalną wcześniejszą wersję:To zadziałało dla mnie natychmiast i może pomóc innym z innymi wtyczkami, które również były zależne od „com.android.support:support-4:<28. Wydaje się, że problemem jest nowa wersja 28.
Mam nadzieję, że to pomoże komuś ruszyć do przodu.
źródło
Kilka wskazówek dla programisty Kotlin:
Jeśli zastosujesz się do tych odpowiedzi tutaj, na pewno nie masz
support-v4
biblioteki w swoim projekcie, ale nadal widzisz ten błąd, zapoznaj się zktx
biblioteki.Właśnie odkryłem, że używam najnowszej
1.0.0-alpha1
wersji biblioteki ktx i ten błąd się pojawia; po tym, jak wróciłem do wersji0.3
, wszystko wróciło do normy.źródło
Dodaj następujące wiersze do swoich platform / android / build.gradle
jeśli nadal masz problem, spróbuj uruchomić to polecenie:
źródło
W swoim
build.gradle
pliku dodajA w
project.properties
pliku zmieńcordova.system.library.3
nacordova.system.library.3=com.android.support:support-v13:27.+
.źródło
Dla użytkowników Phonegap Build , jak wspomniał @catu w komentarzu, możesz wypróbować tę wtyczkę, której celem jest zapobieganie awariom kompilacji spowodowanym przez dołączenie różnych wersji bibliotek pomocniczych .
źródło
Po prostu napraw ten problem, umieszczając następujące wiersze kodu w pliku platform / android / app / build.gradle, zaraz po bloku buildscript {}:
źródło
Miałem ten sam problem po zainstalowaniu wtyczki cordova-plugin-file-opener2. Został usunięty po wykonaniu: Opcja 1: Zainstaluj wtyczkę cordova-android-support-gradle-release. wtyczka cordova dodaj cordova-android-support-gradle-release --fetch
źródło
Innym podejściem z tym samym rozwiązaniem jest utworzenie haka. Jest trwały (po ponownej instalacji platformy), możesz go zatwierdzić i nie wymaga ponownego dodawania platformy.
Init hook w config
Zainstaluj zależność FS w swoim projekcie:
Uruchom kompilację:
źródło
BARDZO PROSTE I PRAWIDŁOWE SPOSÓB ROZWIĄZANIA!
Po prostu zaktualizuj sdk i dodaj najnowszą 2 wersję Androida ... i uruchom ponownie komputer! Gotowe...
Teraz mamy czas, aby porozmawiać o samochodach i sporcie ...
źródło
Miałem ten sam problem i żadne z podanych rozwiązań mi nie pomogło. Zainstalowanie najnowszej wersji Android SDK Build-tools (27.0.3) rozwiązało mój problem.
źródło
Link do rozwiązania
Wynika to z wtyczki kompatybilnej. Usuń tę wtyczkę, jeśli masz starszą wersję (mniejszą niż 1.2.0 ) i ustaw [email protected]
Pracuję w mojej sprawie. Dzięki :)
źródło
aktualizacje odpowiedzi @Brad Pitcher:
hooks/copy_build_extras.js
config.xml
build-extras.gradle
w korzeniu reżźródło
Miałem problem z odpowiedzią natywną i był on spowodowany następującymi wierszami w moim
android/app/build.gradle
:itp...
Najwyraźniej to + rozwiązało się do nowej wersji 17.0.0, która zepsuła moją kompilację.
Zmiana + na 16.0.0 (lub 16.0.1 dla Play-Services-Base) rozwiązała mój problem
źródło
Ten problem zabijał mnie od tygodnia.
Ostatecznie skończyłem
[email protected]
Zmieniłem
android/project.properties
się, zmieniającTa zmiana w końcu wyciągnęła mnie z otchłani ciemności z komunikatem o błędzie ttcIndex.
Wtedy otrzymałem ten błąd
Błąd był najwyraźniej spowodowany problemem z wersją Java. Potem
android/build.gradle
zmieniłem się z następującą zmianąZauważ też, że mam
cordova-android-support-gradle-release
zainstalowaną wtyczkę, ale nie mam pojęcia, czy jej potrzebuję.źródło
Jest to zduplikowany wpis w values.xml w folderze o nazwie
support-compat-28.0.0-alpha1.aar
.Ten plik w systemie Windows znajdziesz pod adresem
\users\YOURUSERID\.gradle\caches\transforms-1\files-1.1
Będąc w tym folderze, musisz przejść o kilka poziomów głębiej do values.xml .
W tym pliku wyszukaj element
<declare-styleable name="FontFamilyFont>
.W tym elemencie usuń CZTERY linie za pomocą
android:
nim.Po wprowadzeniu tej zmiany mogę ponownie budować bez błędów.
źródło