을 실행 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 android
및 ionic 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}'
...
}
}
위의 코드는 종속성 버전을 강제합니다.