[android] “cordova build android”실행-android : fontVariationSettings 및 android : ttcIndex 속성을 찾을 수 없습니다.

을 실행 cordova build android --buildConfig xxxx --release하면 다음 오류가 발생합니다.

ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex

이상한 점은 컴파일을 위해 두 대의 macOS 컴퓨터를 사용하고 있으며 동일한 코드에 대해 그중 하나에서만이 오류가 발생한다는 것입니다.

다음은 ./gradlew cdvPrintProps두 컴퓨터에서 얻은 결과입니다 .

: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

다음은 사용 된 플러그인 목록입니다.

$ 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"

이 문제를 어떻게 해결할 수 있습니까?



답변

build-extras.gradle 에 다음을 입력하십시오.

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


답변

구글 은 2 개의 새로운 속성 (android : fontVariationSettings 및 android : ttcIndex)을 추가하는 com.android.support:support-v4 의 새 버전 28.0.0-alpha1 을 출시했습니다 . 일부 플러그인은 원치 않는 비 호환성을 초래하는 최신 안드로이드 지원 라이브러리를 사용하고 있습니다.

옵션 1 :
설치 코르도바 – 안드로이드 – 지원 – Gradle을 출시 플러그인을.

“다른 플러그인에서 지정한 다양한 버전의 Android 지원 라이브러리를 특정 버전에 맞추는”잘 문서화 된 플러그인입니다. 파괴적인 동작없이 테스트되었습니다.

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

전체 옵션 세트에 대한 문서를 읽으십시오. Readme

옵션 2 : platform / android 아래의 build.gradle 에 다음 코드 스 니펫 추가

/**
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'
}

경고 : Android 플랫폼을 제거 / 추가하면 build.gradle의 코드를 덮어 씁니다. 어떤 이유로 플러그인을 사용하고 싶지 않거나 어떤 식 으로든 작동하지 않는 경우, 대신 후크를 만들고 매번 파일을 덮어 씁니다. 여기에서 두 번째 댓글을 확인 하세요 .

문제가 지속되면 다음을 시도해보십시오.

cordova platform rm android
cordova platform add android

또는

기존 버전을 다운 그레이드하려고 할 때 모호한 오류가 표시되므로 테스트하는 기기에 이전 버전의 앱이 설치되어 있지 않은지 확인하세요 .


답변

나에게도 같은 오류가 발생합니다. 분명히 새 버전의 com.android.support:support-v4라이브러리가 출시되었으며 내가 사용하는 플러그인 com.android.support:support-v4:+plugin.xml. 이 +표시는 다른 플러그인과 호환되지 않는 것으로 보이는 최신 버전 (28.0.0)을 얻을 것임을 의미합니다.

모든 플러그인 종속성을에서 com.android.support:support-v4:+로 변경하여 개발 버전을 빌드 할 수있었습니다 com.android.support:support-v4:27.1.0. 또한 나는 ionic cordova platform remove androidionic cordova platform add android. 적어도 개발에 도움이되기를 바랍니다.


답변

난 그냥 플랫폼 / 안드로이드 폴더로 이동하여이 문제를 해결하고 편집 한 project.properties) 파일을 교체 com.android.support:support-v4:+와 함께 com.android.support:support-v4:27.1.0.


답변

빌드를 실행하기 위해 해당 문제에 대한 빠른 수정이 필요한 경우에는 다음 행을 platform / android / build.gradle 파일에 추가해보십시오.

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

어쨌든 여기에서 버전을 설정하는 것은 지속 가능한 수정이 아닙니다.


답변

이상하지만 동일한 버전으로 아래 줄을 추가하면 작동합니다.

이것은 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+'
}

내 프로젝트에서 ‘cordova-plugin-crosswalk-webview’플러그인으로 인해 문제가 발생했습니다.


답변

동일한 오류가 있지만 Cordova 빌드에는 없습니다. 의 새 버전 com.android.support:appcompat-v7및 종속성. 그러나 호환되지 않는 버전은.에 종속 된 com.android.support:appcompat-v7세 번째 패키지에 있으므로 @avmatte 의 솔루션으로 세 번째 패키지를 수정할 수 없습니다 .

@ Sai Teja 의 솔루션을 사용하여 호환되지 않는 패키지를 찾으십시오.

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

그런 다음 다음과 같이 수정했습니다.

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}'
        ...
    }
}

위의 코드는 종속성 버전을 강제합니다.