尝试在 Android Studio 中实现约束布局但构建失败

问题描述 投票:0回答:1

在学习有关在 Android Studio 中使用约束布局的教程时遇到问题。

在教程中使用了 android.support.constraint.ConstraintLayout 但现已弃用。 按照建议,我正在尝试过渡到 AndroidX。

这是项目级别的build.gradle.kts:

buildscript {
    repositories {
    google()
    mavenCentral()
}
}

plugins {
//    alias(libs.plugins.android.application) apply false
    id("com.android.application") version "8.4.0" apply false
    id("com.chaquo.python") version "15.0.1" apply false
    id("com.android.library") version "7.3.1" apply false
}

这是模块级别的build.gradle.kts:

  //  alias(libs.plugins.android.application)
    id("com.android.application")
    id("com.chaquo.python")
}

android {
    namespace = "com.example.pythontestwithjavafix"

    defaultConfig {
        applicationId = "com.example.pythontestwithjavafix"
        minSdk = 24
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"
        compileSdk = 34

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

        ndk{
            abiFilters += listOf("arm64-v8a","x86_64")
        }
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    buildFeatures {
        viewBinding = true
    }
}

chaquopy{
    defaultConfig{
        version = "3.10"
        pip{
            install("scipy")
            install("requests==2.24.0")
        }
    }
}

dependencies {

    implementation(libs.appcompat)
    implementation(libs.material)
    implementation(libs.constraintlayout)
    implementation(libs.navigation.fragment)
    implementation(libs.navigation.ui)
    testImplementation(libs.junit)
    androidTestImplementation(libs.ext.junit)
    androidTestImplementation(libs.espresso.core)
//    implementation("com.android.support.constraint:constraint-layout:2.0.4")
   implementation(libs.constraint.layout)
}

这是activity_main.xml:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#8E9CED"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:id="@+id/text"
        android:textColor="#F8E115"
        android:textSize="50dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

在我第一次构建尝试时发生此错误:

        Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.13.0] AndroidManifest.xml:28:18-86
        is also present at [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory).
        Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-25:19 to override

于是我执行了上面的建议,然后出现了新的错误:

/Users/me/AndroidStudioProjects/PythonTestWithJavaFix/app/src/main/AndroidManifest.xml:5:5-26:19 Error:
        tools:replace specified at line:5 for attribute tools:android.appComponentFactory, but no new value specified
/Users/me/AndroidStudioProjects/PythonTestWithJavaFix/app/src/main/AndroidManifest.xml Error:
        Validation failed, exiting

除了建议放弃教程中使用的 android.support.* 并转向我在 Activity_main.xml 中所做的 androidx 之外,搜索几乎没有发现什么。 有趣的是,我检查了项目树,仍然在 gradle/libs.versions.toml 中看到对 android.support.constraint.* 的引用,如下所示:

[libraries]
constraint-layout = { module = "com.android.support.constraint:constraint-layout", version.ref = "constraintLayoutVersion" }

这可能是问题所在吗? 如果是这样,请告诉我如何解决。 我没有看到很多关于 *.toml 文件的讨论,但我可能错过了它。 请指教。 TIA。 所以我不知道如何继续。

android layout constraints
1个回答
0
投票

使用具有支持库的旧代码尝试此操作,它将自动处理依赖关系问题

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.