java.lang.NoSuchMethodError: нет статического метода getFont (Landroid / content / Context; ILandroid / util / TypedValue; ILandroid / widget / TextView;)

После обновления Android Studio до версии 3.0 я получаю No static method getFont() ошибку. Проект, над которым я работаю, находится на github, https://github.com/ik024/GithubBrowser.

// Top-level build file where you can add configuration options common 
to all sub-projects/modules.

buildscript {
repositories {
    jcenter()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0'
    classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-SNAPSHOT'
}
}

allprojects {
repositories {
    jcenter()
    maven { url 'https://maven.google.com' }
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}

ext{
    arch_version = "1.0.0-alpha9"
    support_version = "26.0.2"
    dagger_version = "2.11"
    junit_version = "4.12"
    espresso_version = "2.2.2"
    retrofit_version = "2.3.0"
    mockwebserver_version = "3.8.0"
    apache_commons_version = "2.5"
    mockito_version = "1.10.19"
    constraint_layout_version = "1.0.2"
    timber_version = "4.5.1"
    butterknife_version = "9.0.0-SNAPSHOT"
    rxbinding_version = "2.0.0"
    retrofit_version = "2.3.0"
    okhttp_version = "3.6.0"
    rxjava2_adapter_version = "1.0.0"
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

приложение Gradle

apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'

android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
    applicationId "com.ik.githubbrowser"
    minSdkVersion 17
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/rxjava.properties'
}

testOptions {
    unitTests.returnDefaultValues = true
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

compile "com.android.support.constraint:constraint-layout:$constraint_layout_version"

compile "com.android.support:appcompat-v7:$support_version"
compile "com.android.support:recyclerview-v7:$support_version"
compile "com.android.support:cardview-v7:$support_version"
compile "com.android.support:design:$support_version"
compile "com.android.support:support-v4:$support_version"

compile "android.arch.persistence.room:runtime:$arch_version"
compile "android.arch.lifecycle:runtime:$arch_version"
compile "android.arch.lifecycle:extensions:$arch_version"
compile "android.arch.persistence.room:rxjava2:$arch_version"

compile "com.squareup.retrofit2:retrofit:$retrofit_version"
compile "com.squareup.retrofit2:converter-gson:$retrofit_version"
compile "com.squareup.retrofit2:adapter-rxjava:$retrofit_version"
compile "com.jakewharton.retrofit:retrofit2-rxjava2-adapter:$rxjava2_adapter_version"

compile "com.squareup.okhttp3:okhttp:$okhttp_version"
compile "com.squareup.okhttp3:logging-interceptor:$okhttp_version"


compile "com.jakewharton.timber:timber:$timber_version"
compile "com.jakewharton:butterknife:$butterknife_version"
compile "com.jakewharton.rxbinding2:rxbinding:$rxbinding_version"

compile "com.google.dagger:dagger:$dagger_version"
compile "com.google.dagger:dagger-android:$dagger_version"
compile "com.google.dagger:dagger-android-support:$dagger_version"

testCompile "junit:junit:$junit_version"
testCompile "com.squareup.okhttp3:mockwebserver:$mockwebserver_version"
testCompile("android.arch.core:core-testing:$arch_version", {
    exclude group: 'com.android.support', module: 'support-compat'
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-core-utils'
})

androidTestCompile "com.android.support:appcompat-v7:$support_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
}

androidTestCompile "com.android.support:recyclerview-v7:$support_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
}

androidTestCompile "com.android.support:support-v4:$support_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
}

androidTestCompile "com.android.support:design:$support_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
}

androidTestCompile("com.android.support.test.espresso:espresso-core:$espresso_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.google.code.findbugs', module: 'jsr305'
})

androidTestCompile("com.android.support.test.espresso:espresso-contrib:$espresso_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.google.code.findbugs', module: 'jsr305'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
})

androidTestCompile("android.arch.core:core-testing:$arch_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
})

androidTestCompile 'org.mockito:mockito-android:2.7.15', {
    exclude group: 'com.android.support', module: 'support-annotations'
}

annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
annotationProcessor "android.arch.persistence.room:compiler:$arch_version"
annotationProcessor "android.arch.lifecycle:compiler:$arch_version"
annotationProcessor "com.jakewharton:butterknife-compiler:$butterknife_version"


compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.2'

}

Ошибка:

Исправьте res / values ​​/ styles.xml и Manifest.xml следующим образом: это решение протестировано и не работает. Не забудьте почистить и собрать:


person ik024    schedule 04.11.2017    source источник


Ответы (16)


1.Manifest.xml

измените тему HomeActivity на:

2. res / values ​​/ styles.xml Сделайте так, чтобы все ваши темы начинались с Base: styles.xml будет выглядеть так:

        <activity
        android:name=".ui.home.HomeActivity"
        android:theme="@style/Base.Theme.AppCompat.Light" />
    <activity android:name=".BaseActivity"></activity>

3. GithubBrowser-Master.gradle

<resources>

<!-- Base application theme. -->
<!--<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">-->

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">


<!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar" parent="Base.Theme.AppCompat.Light">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="Base.ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="Base.ThemeOverlay.AppCompat.Light" />

Detailed explanation as requested: Theme.AppCompat.Light.DarkActionBar is a subclass of the superclass Base anyway. Ctrl+click (Android Studio) on it and you will be taken to the source:

<style name="Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light.DarkActionBar" />

сделать support_version = "27.0.0", а не support_version = "26.0.2

4.app.gradle:

и не

compileSdkVersion 27
    buildToolsVersion '27.0.0'

это работа для меня:

   compileSdkVersion 26
buildToolsVersion '26.0.2'
person Nawrez    schedule 05.11.2017
comment
Я так думаю ! Я пробовал с 26.0.2, но не работает - person ik024; 10.11.2017
comment
Спасибо! Вместо этого я использовал 27.0.2, без каких-либо других изменений в res / values ​​/ styles.xml и Manifest.xml, проблема только что решена. - person Nawrez; 10.11.2017
comment
@BabyPanda: когда я ответил на этот вопрос, последний инструмент сборки был 27.0.1, и он не работает для меня, я думаю, что это было исправление, сделанное в 27.0.2, и это хорошо :) - person BabyPanda; 05.12.2017
comment
Меня устраивает - person Nawrez; 05.12.2017
comment
@Nawrez Я выполнил _1_ поиск, но не нашел _2_, несмотря на то, что в моем проекте использовался Github. Хотя проблема была решена без этого шага, стоит ли мне беспокоиться об этом? - person Avinash; 31.01.2018
comment
в моем случае я обнаружил, что эта проблема возникает из-за того, что моя деятельность расширяет AppCompatActivity. Попробуйте изменить AppCompatActivity на Activity, и он работает - person Paradox; 01.02.2018
comment
@ ik024 Нет, это не ошибка. Это происходит потому, что по крайней мере одна из ваших библиотек также зависит от библиотеки поддержки, где ее версия отличается от версии вашей библиотеки поддержки, указанной в _1_ _2_. Другая версия библиотеки поддержки вызвала сбой, потому что некоторые методы могут отсутствовать в более старой или новой версии библиотеки поддержки, но ваш проект может скомпилировать только один из них. - person Thai Phan Dinh; 16.03.2018
comment
OMG Android такой сложный! - person Sira Lam; 19.03.2018
comment
После этого мне пришлось изменить файл res / values ​​/ styles.xml, чтобы он работал нормально. Я добавил стили AppTheme.NoActionBar, AppTheme.AppBarOverlay и AppTheme.PopupOverlay, взятые из простого нового проекта. - person Harsha; 14.04.2018
comment
Это сработало для меня в Android Studio 3.1, сделав _1_ - person The Dark Brainer; 08.11.2018

и

    buildToolsVersion "27.0.3"

В моем случае я использовал Android-KTX:

    buildToolsVersion "27.0.3"
в < strong> Kotlin, и это стало причиной ошибки. Я просто удалил его из build.gradle как зависимость.

dependencies {
compile 'com.android.support:appcompat-v7:27.0.0'
compile 'com.android.support:design:27.0.0'
compile 'com.android.support:support-v4:27.0.0'
compile 'com.android.support:support-v13:27.0.0'
}
person Maysam R    schedule 24.12.2017
comment
Это сработало для меня. Не нужно вносить изменения в XML-файлы манифеста или стилей. - person Sachin K Pissay; 04.04.2018

У меня тоже возникла эта проблема, и я решил ее, установив файл Gradle приложения.

person Gent Berani    schedule 20.02.2018

Измените версию компиляции sdk на 27 и buildToolsVersion на 27.0.3

compileSdkVersion 27

buildToolsVersion "27.0.3"

Добавьте библиотеки поддержки версии 27.1.1.

скомпилировать com.android.support:recyclerview-v7:27.1.1 '

скомпилировать com.android.support:cardview-v7:27.1.1 '

скомпилировать com.android.support:appcompat-v7:27.1.1 '

а затем синхронизировать проект.

Вот и все.

Убедитесь, что ваши comileSdkVersion и targetSdkVersion должны совпадать:

person mehmoodnisar125    schedule 03.08.2018
comment
когда я ответил на этот вопрос, последний инструмент сборки был 27.0.1, и он не работает для меня, я думаю, что это было исправление, сделанное в 27.0.2, и это хорошо :) - person IsaiahJ; 25.09.2018

Comile и версии SDK

а также обновите свои зависимости до последней версии, синхронизируйте проект и запустите его. это помогло мне решить проблему.

Зависимости

У меня была такая же проблема, исправленная, просто изменив appcompat, design и recyclerview на эти valeus:

person Pawar Shah    schedule 30.01.2018

и снова синхронизировать градиент

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:design:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

CompileSdkVersion 26 иногда дает эту ошибку. Чтобы решить эту проблему, обновите compileSdkVersion и targetSdkVersion до 27 в файле app.gradle. Также измените соответствующие зависимости в разделе зависимостей. Для этого не нужно указывать buildToolsVersion.

person MohammadL    schedule 27.02.2018

версия всех зависимостей должна совпадать с compileSdkVersion. так что ниже код в build.gradle (модуль) работает для меня.

person DNB    schedule 06.02.2018

В моем случае эта проблема возникла из-за комбинации Glide и библиотеки Appcompat (версии не поддерживают друг друга).

android {

     compileSdkVersion 26

 ...

dependencies {

implementation 'com.android.support:appcompat-v7:26.0.2'

implementation 'com.android.support:recyclerview-v7:26.0.2'

implementation 'com.android.support:cardview-v7:26.0.2'


...
person AhuraMazda    schedule 08.06.2018

Итак, ниже показано, что у меня сработало (на уровне приложения build.gradle) -

Надеюсь, это поможет кому-нибудь.

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.github.bumptech.glide:glide:4.8.0'

Просто измените тему активности в манифесте на любую, например:

person B.shruti    schedule 19.12.2018

Решение действительно простое .. вам просто нужно изменить инструмент сборки на 27.0.2 И все поддерживает версию библиотеки до 27.0.2 Бинго .. ошибка решена

android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
person Khalid Ali    schedule 24.01.2018

Я пытался найти ответ на этот вопрос, но в моем случае это была моя конфигурация:

person Mihir Joshi    schedule 31.03.2018
comment
Да .. все сделано на 27.0.2 .. ваш ответ тоже идеален. @Nawrez - person Nawrez; 03.04.2018
comment
ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.ik.githubbrowser, PID: 4248 java.lang.NoSuchMethodError: нет статического метода getFont (Landroid / content / Context; ILandroid / util / TypedValue; ILandroid / widget / TextView;) Landroid / graphics / Typeface ; в классе Landroid / support / v4 / content / res / ResourcesCompat; или его суперклассы (объявление android.support.v4.content.res.ResourcesCompat находится в /data/app/com.ik.githubbrowser-YvwoGrxR8QaUEZ3IEqFVLQ==/split_lib_dependencies_apk.apk) на android.support.v7.widget. TintTypedArray.getFont (TintTypedArray.java:119) по адресу android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle (AppCompatTextHelper.java:208) по адресу android.support.v7.widget. .support.v7.widget.AppCompatTextHelperV17.loadFromAttributes (AppCompatTextHelperV17.java:38) в android.support.v7.widget.AppCompatTextView. (AppCompatTextView.java:81) в android.support.v7.wpatextView.java:81) в Android.support.v7.wpatext. : 71) на android.support.v7.widget.AppCompatTextView. (AppCompatTextView.java:67) на android.support.v7.widget.Toolbar.setTitle (Toolbar.java:753) на android.support.v7.widget.ToolbarWidgetWrapper .setTitleInt (ToolbarWidgetWrapper.java:261) на android. support.v7.widget.ToolbarWidgetWrapper.setWindowTitle (ToolbarWidgetWrapper.java:243) в android.support.v7.widget.ActionBarOverlayLayout.setWindowTitle (ActionBarOverlayLayout.java:621) в android.supportImpatImpat.V7.Application (приложение) java: 631) на android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor (AppCompatDelegateImplV9.java:328) на android.support.v7.app.AppCompatDelegateImplV9.setContentView (AppCompatDelegateImplV9.setContentView (AppCompatDelegateImplV9.java:284app.app). .AppCompatActivity.setContentView (AppCompatActivity.java:139) на com.ik.githubbrowser.ui.search_user.SearchUserActivity.onCreate (SearchUserActivity.java:49) на android.app.Activity.performCreate (Activity.java:6975) на android. app.Instrumentation.callActivityOnCreate (Instrumentation.java:1213) в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2770) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2892) в и roid.app.ActivityThread.-wrap11 (Неизвестный источник: 0) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1593) в android.os.Handler.dispatchMessage (Handler.java:105) в android.os . Looper.loop (Looper.java:164) в android.app.ActivityThread.main (ActivityThread.java:6541) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767) - person Mihir Joshi; 03.04.2018

Чтобы решить эту проблему, я просто добавляю определение buildToolsVersion, и оно работает!

android {
    compileSdkVersion 26
     defaultConfig {
        applicationId "com.jorgesys.gifanimated"
        minSdkVersion 14
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

Вероятно, необходимо, чтобы наша версия инструментов сборки была такой же, как версия поддерживаемых библиотек.

   buildToolsVersion "26.0.2"

Для меня проблема была вызвана тем, что одна из моих зависимостей приложения использовала более высокую версию библиотеки поддержки Android, чем та, от которой я зависел. Если вы пока не хотите обновляться до последней версии, вы можете принудительно использовать свою версию библиотеки.

person Jorgesys    schedule 19.01.2018

Чтобы узнать, какая зависимость использует более новую версию, вы можете запустить: ./gradlew app:dependencies и найти com.android.support вхождения, которые объявляют версию, отличную от используемой вами. Например:

должен показать вам зависимости, использующие версию, отличную от 26.1.0. (Android Studio также должна предоставить вам пример конфликта зависимостей во всплывающей подсказке для некоторых com.support.android зависимостей, перечисленных в вашем build.gradle)

./gradlew app:dependencies \
  | grep com.android.support \
  | grep -vE "constraint-layout|support.test|multidex|->|26.1.0"

В моем случае это было com.android.support:support-compat:27.1.0support-annotations), поэтому запустите:

Чтобы узнать, какая библиотека зависит от 27.1.0 версии support-compat. (Замените <YOUR_BUILD_VARIANT> одним из своих вариантов сборки, например, debug).

./gradlew app:dependencyInsight \
  --configuration <YOUR_BUILD_VARIANT>CompileClasspath
  --dependency support-compat

В моем случае это было:

и заменив:

com.android.support:support-compat:27.1.0 (conflict resolution)
\--- androidx.core:core-ktx:0.3
     \--- devDebugCompileClasspath

с участием:

implementation 'androidx.core:core-ktx:0.3'

исправил проблему для меня.

implementation ('androidx.core:core-ktx:0.3') {
    exclude module: 'support-annotations'
    exclude module: 'support-compat'
}

Вот мой ответ, это может быть другой сценарий, но я получил эту ошибку.

person arekolek    schedule 23.04.2018

Я создавал приложение для музыкального плеера, и я добавил следующую библиотеку в свой файл градиента приложения.

Я следовал этому руководству по интеграции ExoPlayer в мое приложение. Я изменил версию этой библиотеки с 2.8.0 на 2.6.0, и она работала нормально.

implementation 'com.google.android.exoplayer:exoplayer:2.8.0'

Я надеюсь, что это помогает кому-то.

Всякий раз, когда возникает эта ошибка, просто обновите buildtools и поддержку зависимостей до более новой версии. Это решит проблему. Имейте в виду, что все зависимости поддержки должны быть одной версии.

person Harry .Naeem    schedule 26.09.2018

загрузить градиент!

buildToolsVersion '28.0.2'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
person Jack    schedule 10.10.2018

путь к классам 'com.android.tools.build:gradle:3.3.1'

Спасибо, это решено для меня. Означает ли это, что buildToolVersion 26.0.2 содержит ошибку?

person Fredy sanchez .m    schedule 15.02.2019