找不到android.support.constraint.ConstraintLayout类

时间:2019-08-23 14:01:23

标签: java android

https://github.com/googleads/googleads-mobile-android-native-templates导入android原生广告模板模块后

由于以下错误,我无法运行该应用程序

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.constraint.ConstraintLayout" on path: DexPathList[[zip file "/data/app/com.test.app-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

3 个答案:

答案 0 :(得分:0)

您是否注意到gnt_medium_template_view.xml没有布局?

所有代码都必须在Layout之内像这样

<?xml version="1.0" encoding="utf-8"?>

<ConstraintLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
  <com.google.android.gms.ads.formats.UnifiedNativeAdView
      android:layout_height="350dp"
      android:layout_width="match_parent"
      android:id="@+id/native_ad_view"
      android:background="@drawable/gnt_outline_shape"
      >
      <android.support.constraint.ConstraintLayout
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintTop_toTopOf="parent"
          app:layout_constraintBottom_toBottomOf="parent"
          android:layout_centerInParent="true"
          android:padding="5dp"
          android:id="@+id/background"
          >

        <com.google.android.gms.ads.formats.MediaView
            android:id="@+id/media_view"
            android:layout_margin="@dimen/gnt_no_size"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_marginTop="@dimen/gnt_no_margin"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toTopOf="@id/middle"
            />

    <android.support.constraint.ConstraintLayout
        android:layout_height="60dp"
        android:layout_marginTop="@dimen/gnt_default_margin"
        android:layout_width="match_parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/media_view"
        app:layout_constraintBottom_toTopOf="@+id/body"
        android:id="@+id/middle"
        >
      <android.support.constraint.ConstraintLayout

          android:layout_width="@dimen/gnt_no_size"
          android:layout_height="@dimen/gnt_no_size"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintTop_toTopOf="parent"
          app:layout_constraintBottom_toBottomOf="parent"
          android:orientation="horizontal"
          >
        <ImageView
            android:id="@+id/icon"
            android:layout_width="0dp"
            android:layout_weight="0"
            android:layout_height="match_parent"
            android:layout_marginTop="@dimen/gnt_no_margin"
            android:layout_marginStart="@dimen/gnt_default_margin"
            android:layout_marginBottom="@dimen/gnt_no_margin"
            android:layout_marginEnd="@dimen/gnt_no_margin"
            app:layout_constraintDimensionRatio="H,1:1"
            android:scaleType="fitCenter"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@id/content"
            />
        <android.support.constraint.ConstraintLayout
            android:layout_width="@dimen/gnt_no_size"
            android:layout_height="@dimen/gnt_no_size"
            android:orientation="vertical"
            android:id="@+id/content"
            android:layout_marginLeft="@dimen/gnt_default_margin"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@id/icon"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            >
          <LinearLayout
              android:id="@+id/headline"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="@dimen/gnt_no_size"
              android:layout_weight="0.5"
              app:layout_constraintBottom_toTopOf="@+id/row_two"
              app:layout_constraintEnd_toEndOf="parent"
              app:layout_constraintStart_toStartOf="parent"
              app:layout_constraintTop_toTopOf="parent"
              >

            <TextView
                android:id="@+id/primary"
                android:background="@color/gnt_white"
                android:textStyle="bold"
                android:textSize="@dimen/gnt_text_size_large"
                android:textColor="@color/gnt_gray"
                android:lines="1"
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:layout_marginTop="@dimen/gnt_no_margin"
                android:layout_marginBottom="@dimen/gnt_no_margin"
                android:layout_marginStart="@dimen/gnt_no_margin"
                android:layout_marginEnd="@dimen/gnt_no_margin"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                ></TextView>
          </LinearLayout>
          <LinearLayout
              android:id="@+id/row_two"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="@dimen/gnt_no_size"
              android:layout_weight="0.5"
              app:layout_constraintBottom_toBottomOf="parent"
              app:layout_constraintEnd_toEndOf="parent"
              app:layout_constraintStart_toStartOf="parent"
              app:layout_constraintTop_toBottomOf="@id/headline"
              >
            <TextView
                android:background="@drawable/gnt_rounded_corners_shape"
                android:layout_width="@dimen/gnt_ad_indicator_width"
                android:gravity="center"
                android:id="@+id/ad_notification_view"
                android:layout_height="@dimen/gnt_ad_indicator_height"
                android:layout_marginTop="@dimen/gnt_ad_indicator_top_margin"
                android:layout_marginStart="@dimen/gnt_no_margin"
                android:layout_marginEnd="@dimen/gnt_default_margin"
                android:text="Ad"
                android:textColor="@color/gnt_ad_green"
                android:textStyle="bold"
                android:textSize="@dimen/gnt_ad_indicator_text_size"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                >
            </TextView>
            <RatingBar
                android:id="@+id/rating_bar"
                android:background="@color/gnt_white"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:textSize="@dimen/gnt_text_size_small"
                android:textColor="@color/gnt_gray"
                android:numStars="0"
                android:lines="1"
                android:layout_marginTop="@dimen/gnt_no_margin"
                android:layout_marginBottom="@dimen/gnt_no_margin"
                android:layout_marginStart="@dimen/gnt_no_margin"
                android:layout_marginEnd="@dimen/gnt_no_margin"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@id/ad_notification_view"
                app:layout_constraintTop_toTopOf="parent">

            </RatingBar>
            <TextView
                android:id="@+id/secondary"
                android:background="@color/gnt_white"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="top"
                android:textSize="@dimen/gnt_text_size_small"
                android:textColor="@color/gnt_gray"
                android:lines="1"
                android:layout_marginTop="@dimen/gnt_no_margin"
                android:layout_marginBottom="@dimen/gnt_no_margin"
                android:layout_marginStart="@dimen/gnt_no_margin"
                android:layout_marginEnd="@dimen/gnt_no_margin"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@id/ad_notification_view"
                app:layout_constraintTop_toTopOf="parent"
                ></TextView>

          </LinearLayout>


        </android.support.constraint.ConstraintLayout>


      </android.support.constraint.ConstraintLayout>
      </android.support.constraint.ConstraintLayout>
        <TextView
            android:layout_width="match_parent"
            android:layout_margin="@dimen/gnt_no_size"
            android:layout_height="wrap_content"
            android:paddingBottom="@dimen/gnt_default_margin"
            android:paddingLeft="@dimen/gnt_default_margin"
            android:id="@+id/body"
            app:layout_constraintBottom_toTopOf="@+id/cta"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/middle"
            android:layout_marginBottom="@dimen/gnt_default_margin"
            />
        <Button
            android:id="@+id/cta"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@color/gnt_blue"
            android:textColor="@color/gnt_white"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:lines="1"
            android:gravity="center"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/body"
            />

      </android.support.constraint.ConstraintLayout>
  </com.google.android.gms.ads.formats.UnifiedNativeAdView>
</ConstraintLayout>

如果您注意到我将merge更改为ConstraintLayout,则也可以将其他名称用作:RelativeLayoutLinearLayoutCoordinatorLayout当然每个人都有不同的目的

我想这可能是问题所在,如果是的话……您也需要修复gnt_small_template_view.xml希望有帮助

答案 1 :(得分:0)

您提到的库使用支持库。最近所有支持包都已移至androidx,您可以通过检查build.gradle来检查您的项目是否使用androidx工件,其中的依赖项应类似于:

implementation 'androidx.appcompat:appcompat:1.0.2'

Androidx和支持库不兼容,因此,如果要使用该库,则有3种选择:

  1. 将您的应用程序降级为使用支持库(不推荐
  2. 分叉存储库并更改导入。这是一件容易的事,您只需要从支持到androidx替换所有软件包即可。
  3. 将源代码导入android studio并使用以下选项:重构|>迁移到AndroidX(不确定它是否适用于模块)

答案 2 :(得分:0)

gradile中为约束布局添加依赖项。参见代码

dependencies { //Don't forget to add dependency of constraint-layout implementation 'com.android.support.constraint:constraint-layout:1.1.0' }