59

将我的 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
}

应用程序等级

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'

}

错误:

致命异常:主进程: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' 的声明出现在 android.support.v7.widget 的 /data/app/com.ik.githubbrowser-YvwoGrxR8QaUEZ3IEqFVLQ==/split_lib_dependencies_apk.apk 中)。 TintTypedArray.getFont(TintTypedArray.java:119) 在 android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208) 在 android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:110) 在 android .support.v7.widget.AppCompatTextHelperV17。

4

16 回答 16

76

像这样修复res/values/styles.xmlManifest.xml:这个解决方案已经过测试,不要忘记清理和构建:

1.Manifest.xml

将 HomeActivity 的主题更改为:

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

2. res/values/styles.xml 让你所有的主题都以 Base :styles.xml 开头,如下所示:

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

根据要求进行详细解释:无论如何Theme.AppCompat.Light.DarkActionBar都是超类的子类。BaseCtrl+单击(Android Studio),您将被带到源代码:

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

3. GithubBrowser-Master.gradle

制作 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'
于 2017-11-05T20:09:59.123 回答
16

在 android 部分下的应用程序的 gradle 中更改构建工具版本:

buildToolsVersion "27.0.3"

还将以下依赖项添加到您的应用程序 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'
}

同步 gradle 更改并重建项目。

于 2017-12-24T08:59:02.733 回答
7

就我而言,我在Kotlin项目中使用了Android-KTX : ,这就是错误的原因。我刚刚将它作为依赖项从build.gradle中删除。implementation 'androidx.core:core-ktx:0.1'

于 2018-02-20T12:25:05.830 回答
5

我遇到了类似的问题,可以通过设置应用程序 gradle 文件来解决它。

**在android下的build.gradle文件中将你的compile sdk版本改为27,buildToolsVersion改为27.0.3 **

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"

添加 27.1.1 版本支持库。

implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1' 
implementation 'com.android.support:appcompat-v7:27.1.1'

然后同步项目。运行应用程序。

于 2018-08-03T11:15:37.617 回答
4

我有同样的问题,只需将 appcompat 和 design 和 recyclerview 更改为这些 valeus:

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'

并再次同步 gradle

于 2018-02-27T07:12:12.097 回答
4

确保您的 comileSdkVersion 和 targetSdkVersion 应该相同:

Comile 和 SDK 版本

并将您的依赖项更新到最新版本并同步项目并运行它。它帮助我解决了这个问题。

依赖项

于 2018-01-30T03:16:50.240 回答
2

所有依赖的版本应该与compileSdkVersion.

build.gradle(模块)中的以下代码对我有用。

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'
    // ...
}
于 2018-06-08T22:25:31.293 回答
2

就我而言,这个问题是由于GlideAppcompat 库的结合(版本不相互支持)而出现的。

所以下面是对我有用的(在应用程序级别的 build.gradle 中) -

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

希望它会帮助某人。

于 2018-12-19T11:53:56.133 回答
2

compileSdkVersion 26 有时会出现此错误。要解决此问题,请将 app.gradle 文件中的 compileSdkVersion 和 targetSdkVersion 升级为 27。还要更改依赖项部分中的相应依赖项。您无需为此指定 buildToolsVersion。

于 2018-02-06T05:36:24.537 回答
1

解决方案非常简单..你只需将构建工具更改为 27.0.2 并且所有支持库版本为 27.0.2 Bingo..错误解决

于 2018-03-31T19:42:30.877 回答
1

只需将清单中的活动主题更改为任何主题,例如:

android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
于 2018-01-24T09:17:34.263 回答
0

这是我的答案,它可能是不同的情况,但我得到了这个错误。

我正在创建一个音乐播放器应用程序,并在我的应用程序 gradle 文件中添加了以下库。

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

我正在按照本教程将 ExoPlayer 集成到我的应用程序中。我将此库版本从 2.8.0 更改为 2.6.0,它运行良好。

我希望这可以帮助别人。

于 2018-09-26T15:21:32.910 回答
0

我试图在这个问题中找到答案,但就我而言,这是我的配置:

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它就可以工作了!

   buildToolsVersion "26.0.2"

我们的构建工具版本可能与支持库版本相同是必要的。

于 2018-01-19T16:40:26.967 回答
0

对我来说,问题是由于我的一个应用程序依赖项使用了比我所依赖的更高版本的 Android 支持库引起的。如果您还不想更新到最新版本,您可以强制使用您的库版本。

要查看哪个依赖项使用较新的版本,您可以运行:./gradlew app:dependencies并查找com.android.support声明与您使用的版本不同的版本。例如:

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

应该向您显示使用不同于26.1.0. (Android Studio 还应该在工具提示中为您提供有关com.support.android您列出的某些依赖项的示例依赖项冲突build.gradle

就我而言,它是com.android.support:support-compat:27.1.0(和support-annotations),所以运行:

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

查看哪个库依赖27.1.0support-compat. (替换<YOUR_BUILD_VARIANT>为您的构建变体之一,例如debug)。

就我而言,它是:

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

为我解决了这个问题。

于 2018-04-23T14:17:51.123 回答
0

上传毕业!

类路径'com.android.tools.build:gradle:3.3.1'

于 2019-02-15T23:36:27.507 回答
0

每当发生此错误时,只需更新构建工具并支持对较新版本的依赖项。它将解决此问题。请记住,所有支持依赖项都应该是相同的版本

buildToolsVersion '28.0.2'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
于 2018-10-10T07:12:05.880 回答