Uruchamianie "cordova build android" - nie można znaleźć atrybutu android: fontVariationSettings i android: ttcIndex

Kiedy uciekam cordova build android --buildConfig xxxx --release, Dostaję 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 używam dwóch komputerów macOS do kompilacji, a ten błąd pojawia się tylko na jednym z nich dla tego samego kodu.

Oto wyjście ./gradlew cdvPrintProps dostaję na dwóch maszynach:

: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żywanych 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?

Author: DTavaszi, 2018-03-08

24 answers

Wystarczy umieścić następujące w Build-extras.gradle

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}
 95
Author: helmson helmson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 05:34:55

Google udostępniło nową wersję28.0.0-alpha1 z com.android.support: support-V4 który dodaje 2 nowe atrybuty (android: fontVariationSettings i android:ttcIndex). Niektóre wtyczki używają najnowszych bibliotek obsługujących Androida, co powoduje niechciane niezgodności.

Wariant 1: Zainstaluj cordova-Android-support-gradle-release plugin.

Dobrze udokumentowana wtyczka, która "wyrównuje różne wersje bibliotek obsługujących Androida określone przez inne wtyczki do konkretnej wersji". Testowany bez żadnych destrukcyjnych zachowań.

cordova plugin add cordova-android-support-gradle-release --fetch

Przeczytaj dokumentację, aby uzyskać pełny zestaw opcji: Readme

Wariant 2 : Dodaj następny fragment kodu w build.gradle pod Platformy / android

/** 
IMPORTANT - Manually added
Problem: 8 March 2018 - Google released version support-v4:28.0.0-alpha1 
which breaks the project with following error: unable to find attribute 
android:fontVariationSettings and android:ttcIndex

Effect: Force a specific version of the library
*/

configurations.all {
    resolutionStrategy.force 'com.android.support:support-v4:27.1.0'
}

Warning: code in build.gradle zostanie nadpisany, jeśli usuniesz / dodasz platformę Android. Jeśli nie chcesz używać wtyczki z jakiegoś powodu lub jakoś nie jest pracując dla ciebie, zamiast tego utwórz hook i Nadpisz plik za każdym razem. Sprawdź drugi komentarz tutaj .

Jeśli problem jest trwały, możesz spróbować:

cordova platform rm android
cordova platform add android

Lub

Upewnij się, że nie masz poprzedniej wersji aplikacji zainstalowanej na testowanym urządzeniu, ponieważ pojawi się niejednoznaczny błąd podczas próby obniżenia istniejącej wersji: "INSTALL_FAILED_VERSION_DOWNGRADE" i " UnhandledPromiseRejectionWarning: Unhandled promise odrzucenie "

 65
Author: Andrew Radulescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-10 11:06:50

Ten sam błąd dzieje się ze mną. Najwyraźniej została wydana nowa wersja biblioteki com.android.support:support-v4, a wtyczka, której używam Definiuje com.android.support:support-v4:+ jako zależność w plugin.xml. Znak + oznacza, że otrzyma najnowszą wersję (28.0.0), która wydaje się być niezgodna z innymi wtyczkami.

Udało mi się zbudować wersję rozwojową, zmieniając wszystkie zależności wtyczek z com.android.support:support-v4:+ na com.android.support:support-v4:27.1.0. Ponadto wykonałem ionic cordova platform remove android i ionic cordova platform add android. Mam nadzieję, że to pomoże, przynajmniej dla rozwoju.

 30
Author: avmatte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-08 02:27:33

Jeśli naprawdę potrzebujesz szybkiej naprawy tego problemu, aby uruchomić kompilację, możesz spróbować dodać następujące linie do platform / android / build.plik gradle:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

W każdym razie ustawienie tej wersji nie jest trwałą poprawką.

 19
Author: stu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-08 12:42:01

Właśnie naprawiłem ten problem, przechodząc do folderu platform / android i edytując plik project.properties) i zamieniając com.android.support:support-v4:+ na com.android.support:support-v4:27.1.0.

 19
Author: Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 11:23:52

To dziwne, ale działa, gdy dodam poniższe linie z tymi samymi wersjami.

To moje powiązane linie w pliku platforms/android/build.gradle:

dependencies {
  compile fileTree(dir: 'libs', include: '*.jar')
  // SUB-PROJECT DEPENDENCIES START
  debugCompile(project(path: "CordovaLib", configuration: "debug"))
  releaseCompile(project(path: "CordovaLib", configuration: "release"))
  compile "com.android.support:support-v4:26.+"
  compile "com.android.support:appcompat-v7:26.+"
  // SUB-PROJECT DEPENDENCIES END
}

// ADDED THESE LINES
configurations.all {
  resolutionStrategy.force 'com.android.support:support-v4:26+'
}

W moim projekcie problem wystąpił z powodu wtyczki' cordova-plugin-crosswalk-webview'.

 15
Author: Muhammed Tanrıverdi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 11:26:05

Mam ten sam błąd, ale nie w Cordova build. Nowa wersja com.android.support:appcompat-v7 i zależności.Ale niezgodna wersja jest w trzecim pakiecie, który jest zależny od com.android.support:appcompat-v7. więc nie mogę naprawić trzeciego pakietu za pomocą rozwiązania @avmatte.

Użyj rozwiązania @ Sai Teja , aby znaleźć niekompatybilny pakiet:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

Następnie naprawiono przez:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-compat:{the_same_version}'
        force 'com.android.support:appcompat-v7:{the_same_version}'
        force 'com.android.support:support-core-utils:{the_same_version}'
        force 'com.android.support:support-core-ui:{the_same_version}'
        force 'com.android.support:support-fragment:{the_same_version}'
        force 'com.android.support:support-annotations:{the_same_version}'
        ...
    }
}

Powyższy kod wymusza wersję zależności.

 8
Author: doit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-08 06:11:28

Miałem ten sam błąd. Czy kompletne badania w katalogu plugin dla com.android.wsparcie: wsparcie-v4:+ i zastąpił go statycznym kodem wersji.

Dla mnie, com.android.wsparcie: wsparcie-v4:23.4.0 zadziałało. Nie było potrzeby usuwania i ponownego dodawania Platformy android.

 8
Author: cpro90,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-08 09:57:35

Oto prosty sposób, aby to naprawić, który będzie trwał, gdy katalog platformy zostanie przebudowany i nie ma potrzeby przeglądania wszystkich wtyczek, aby spróbować znaleźć winowajcę. Utwórz plik build-extras.gradle o treści:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

Następnie utwórz plik after_platform_add/010_copy_build_extras.js o następującej treści:

#!/usr/bin/env node

var fs = require('fs');

var rootdir = process.argv[2];
var android_dir = `${rootdir}/platforms/android`;
var gradle_filename = 'build-extras.gradle';
var gradle_file = `${rootdir}/${gradle_filename}`;
if (fs.existsSync(android_dir) && fs.existsSync(gradle_file)) {
  fs.createReadStream(gradle_file)
    .pipe(fs.createWriteStream(`${android_dir}/${gradle_filename}`));
}

Teraz odtworzyć platformę android i będzie korzystać z przypiętej biblioteki wsparcia.

 8
Author: Brad Pitcher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-08 21:46:34

Niektóre biblioteki powinny używać

com.android.support:support-v4:+

Znajdź, który to jest, z

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

I dodać tę bibliotekę jako moduł, jeśli nie używa konkretnej wersji w swojej najnowszej aktualizacji (również Zgłoś problem w tej bibliotece! ;) )

Dzięki @avmatte!
 4
Author: Sai Teja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-08 04:12:40

Wczoraj miałem ten sam problem. Zaczęło się losowo, ale po przeczytaniu, wygląda na to, że ma to związek z aktualizacją, jak wspomniano powyżej przez @ cpro90. Jednak próbowałem i nie mogłem znaleźć, gdzie dokonać niezbędnej ręcznej zmiany.

Ostatecznie zidentyfikowałem, że problem został spowodowany przez mój cordova-plugin-crosswalk-webview plugin. Na Githubie znalazłem problem na plugin repro dziś rano i miał ponad 520 odsłon przez lunch.

@UNUMObile zasugerował w pliku build.gradle, Aby wymusić wcześniejszą wersję globalnie:

configurations.all {
    resolutionStrategy.force 'com.android.support:support-v4:24.0.0'
}

To działało natychmiast dla mnie i może pomóc innym z innymi wtyczkami, które również miały swoją zależność od ' com.android.support: support-4: Mam nadzieję, że to pomoże komuś ruszyć naprzód.

 4
Author: Chris Scutt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 11:29:11

Kilka wskazówek dla programisty Kotlina:

Jeśli podążasz za tymi odpowiedziami tutaj, jesteś pewien, że nie masz support-v4 biblioteki w swoim projekcie, ale nadal widzisz ten błąd, spójrz na bibliotekę ktx.

Po prostu dowiedziałem się, że używam najnowszej wersji 1.0.0-alpha1 dla biblioteki ktx i ten błąd się pojawia; po zmianie z powrotem na wersję 0.3, wszystko wróciło do normy.

 4
Author: Anthonyeef,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-13 14:30:52

W Twoim pliku build.gradle Dodaj

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

I w pliku project.properties Zmień cordova.system.library.3 na cordova.system.library.3=com.android.support:support-v13:27.+.

 3
Author: aman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-13 08:01:23

Dla użytkowników PhoneGap Build, Jak @catu wspomniał w komentarzu, możesz wypróbować tę wtyczkę, której celem jest , aby zapobiec awariom kompilacji spowodowanym włączeniem różnych wersji bibliotek wsparcia.

 1
Author: user276648,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-05 02:48:19

Po prostu napraw ten problem, umieszczając następujące linie kodu w platforms / android / app / build.plik gradle, zaraz po buildscript {} block:

configurations.all {
    resolutionStrategy {
            force 'com.android.support:support-v4:27.1.0'
    }
}
 1
Author: Kush,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-27 11:16:40

Dodaj następujące linie do Platformy / android / build.gradle

  configurations.all {
        resolutionStrategy {
            force 'com.android.support:support-v4:27.1.0'
        }
    }

Jeśli nadal masz problem spróbuj uruchomić to polecenie:

cordova plugin add cordova-android-support-gradle-release --fetch
 1
Author: karan bhatia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-17 11:55:04

Innym aprochem z tym samym rozwiązaniem jest stworzenie haka. Jest trwały (po ponownej instalacji platformy), możesz go zatwierdzić i nie wymaga ponownego dodawania platformy.

%project% \ scripts \ android\Android-support-version.js

#!/usr/bin/env node

var fs = require('fs');

function replace_strings_in_file(filename, replacementsObject) {
  if (fs.existsSync(filename)) {
    var data = fs.readFileSync(filename, 'utf8');
    Object.keys(replacementsObject).forEach(function (to_replace) {
      var replace_with = replacementsObject[to_replace];
      data = data.replace(to_replace, replace_with);
    });
    console.log(data);
    fs.writeFileSync(filename, data, 'utf8');
  } else {
    console.log('file not found');
  }
}

module.exports = function (context) {
  var rootdir = process.argv[2];
  if (rootdir) {
    replace_strings_in_file("platforms/android/project.properties", {'com.android.support:support-v4:+': 'com.android.support:support-v4:27.1.0'});
    console.log('com.android.support version fix');
  }
};

Init hook in config

%project% \ config.xml

...
<platform name="android">
  <hook src="scripts/android/android-support-version.js" type="before_build" />
  ...

Zainstaluj zależność fs do swojego projektu:

Npm i fs --save-dev

Run build:

Cordova build android

 0
Author: pavelety,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-11 23:47:15

SUPER PROSTY I POPRAWNY SPOSÓB ROZWIĄZANIA!

Wystarczy zaktualizować sdk i dodać najnowszą 2 wersję Androida... i uruchom ponownie komputer! Załatwione...

Teraz mamy czas, aby porozmawiać o samochodach i sporcie...

 0
Author: AriWais,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 16:32:59

Miałem ten sam problem i Żadne z podanych rozwiązań nie zadziałało na mnie. Instalacja najnowszej wersji Android SDK Build-tools (27.0.3) rozwiązała mój problem.

 0
Author: Daniel W.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-30 16:51:33

Aktualizacje @ Brad Pitcher ' s odpowiedź:

hooks/copy_build_extras.js

#!/usr/bin/env node

var fs = require('fs');

module.exports = function (context) {
  var rootdir         = context.opts.projectRoot;
  var android_dir     = `${rootdir}/platforms/android`;
  var gradle_filename = 'build-extras.gradle';
  var gradle_file     = `${rootdir}/${gradle_filename}`;
  if (fs.existsSync(android_dir) && fs.existsSync(gradle_file)) {
    fs.createReadStream(gradle_file)
      .pipe(fs.createWriteStream(`${android_dir}/${gradle_filename}`));
  }
};

config.xml

<platform name="android">
    <allow-intent href="market:*" />
    <hook src="hooks/copy_build_extras.js" type="before_build" />
</platform>

build-extras.gradle w katalogu głównym

configurations.all {
  resolutionStrategy {
    force 'com.android.support:support-v4:27.1.0'
  }
}
 0
Author: Exlord,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-18 10:34:34

Jeśli używasz ionic i masz ten błąd, rozwiąż go, wykonując następujące czynności:

-cordova platform rm android
-cordova platform add android

To może być możliwe rozwiązanie

 0
Author: Raphael Andrey Martinez Velasq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-28 20:20:00

Miałem ten sam problem po zainstalowaniu wtyczki cordova-plugin-file-opener2. Po zrobieniu: Opcja 1: Zainstalować cordova-android-support-Gradle-release plugin. wtyczka cordova dodaj cordova-Android-support-gradle-release -- fetch

 0
Author: DineshS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-04 11:36:01

To zduplikowany wpis wartości.xml w folderze o nazwie support-compat-28.0.0-alpha1.aar.

Znajdziesz ten plik w systemie Windows pod adresem \users\YOURUSERID\.gradle\caches\transforms-1\files-1.1

Po wejściu do tego folderu musisz przejść kilka poziomów głębiej do wartości .xml .

W tym pliku wyszukaj element <declare-styleable name="FontFamilyFont>.

W tym elemencie Usuń cztery linie z android: w nim.

Po dokonaniu tej zmiany mogę zbudować ponownie Bez błędów.

 -1
Author: Henk Kelder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 11:32:19

Rozwiązanie link

Jest to spowodowane wtyczką compat. Usuń tę wtyczkę, jeśli masz starszą wersję (mniej niż1.2.0) and set [email protected]

Cordova plugin RM cordova-plugin-compat --force

Cordova plugin dodaj [email protected]

Platforma Cordova RM android

Ionic cordova platform dodaj [email protected]

Pracuję przy mojej sprawie. Dzięki:)

 -1
Author: Pranay Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-04 10:27:22