【问题标题】:Support library and ViewBackgroundHelper支持库和 ViewBackgroundHelper
【发布时间】:2017-12-25 17:03:44
【问题描述】:

我对 Android Studio 3.0 Canary 有疑问。 在所有项目中,我不能使用预览工具中支持库中的任何视图。它显示渲染错误。在新项目中也是同样的问题。

样品代码:

<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

在预览中看起来 screenshot

日志:

java.lang.NoSuchFieldError: ViewBackgroundHelper 在 android.support.v7.widget.AppCompatBackgroundHelper.loadFromAttributes(AppCompatBackgroundHelper.java:46) 在 android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:73) 在 android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:66) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:481) 在 org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:264) 在 org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:215) 在 com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadClass(LayoutlibCallbackImpl.java:214) 在 android.view.BridgeInflater.loadCustomView(BridgeInflater.java:336) 在 android.view.BridgeInflater.onCreateView(BridgeInflater.java:155) 在 android.view.LayoutInflater.onCreateView(LayoutInflater.java:720) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788) 在 android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:225) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 在 android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:863) 在 android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:837) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:489) 在 com.android.layoutlib.bridge.bars.CustomBar.(CustomBar.java:90) 在 com.android.layoutlib.bridge.bars.NavigationBar.(NavigationBar.java:52) 在 com.android.layoutlib.bridge.bars.NavigationBar.(NavigationBar.java:46) 在 com.android.layoutlib.bridge.impl.Layout.createNavBar(Layout.java:325) 在 com.android.layoutlib.bridge.impl.Layout.(Layout.java:151) 在 com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:288) 在 com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:382) 在 com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:193) 在 com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:591) 在 com.android.tools.idea.rendering.RenderTask.lambda$inflate$3(RenderTask.java:739) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)

分级:

android {
    compileSdkVersion 26
    buildToolsVersion 25.0.3
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 26
        versionCode getAutoVersionCode()
        versionName getAutoVersionName()

        applicationId "***"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        multiDexEnabled true

        printf("\n--------" + "VERSION DATA--------" + "\n" + "- PACKAGE: " + applicationId + "\n" + "- CODE: " + versionCode + "\n" +
                "- NAME: " + versionName + "\n- APK: ${archivesBaseName}" + "\n----------------------------\n")

        vectorDrawables.useSupportLibrary = true
    }

    useLibrary 'org.apache.http.legacy'

    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
    }

    flavorDimensions "versionOfApp"

    productFlavors {
        dev {
            applicationIdSuffix ".dev"
            versionCode getAutoVersionCode()
            versionName getAutoVersionName() + "[dev]"
            dimension "versionOfApp"
        }
        prod {
            versionCode getAutoVersionCode()
            versionName getAutoVersionName()
            dimension "versionOfApp"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile "com.android.support:appcompat-v7:26.0.0-beta1"
    compile project(':core')
    compile project(':data')

    // various
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    // widgets
    compile 'com.mikepenz:materialdrawer:5.9.4'
    compile "com.android.support:cardview-v7:26.0.0-beta1"
    compile "com.android.support:customtabs:26.0.0-beta1"
    //Multidex
    compile 'com.android.support:multidex:1.0.1'
    //Timber
    compile 'com.jakewharton.timber:timber:4.5.1'
    //pager bullet
    compile 'com.robohorse.pagerbullet:pagerbullet:1.0.8'
    //fb
    compile 'com.facebook.stetho:stetho:1.5.0'
    compile 'com.facebook.android:facebook-android-sdk:4.24.0'

    //glide
    compile 'com.github.bumptech.glide:glide:4.0.0-RC1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC1'

    //Photo
    compile 'com.github.chrisbanes:PhotoView:2.1.2'

    //joda
    compile 'net.danlew:android.joda:2.9.5'

    implementation 'com.google.firebase:firebase-messaging:11.0.2'
}

apply plugin: 'com.google.gms.google-services'

【问题讨论】:

  • 发布您的应用build.gradle
  • 我在 26.0.0 stable ,Android Studio 3 canary 8 上仍然遇到同样的问题

标签: android android-studio


【解决方案1】:

这个问题可以通过添加禁用构建缓存来解决 android.enableBuildCache=false 到你的 gradle.properties 文件并重建项目。您还可以看到围绕此错误here 的讨论。

【讨论】:

  • 还是同样的问题
【解决方案2】:

这是 android 支持库版本“26.0.0-beta2”中的一个错误

使用,

compile 'com.android.support:appcompat-v7:26.0.0-beta1'

buildToolsVersion '26.0.0' 

classpath 'com.android.tools.build:gradle:3.0.0-alpha5'

一切正常!

【讨论】:

  • 还是同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多