我最近更新了Android Studio到最新版本,在很长一段时间没有编程之后,需要我过去工作过的项目。我遇到了一长串的错误,我通过对gradle文件进行大量更改或安装新的jdk来解决,但我被卡住了。目前,我所有基于片段的活动都在导入指令(import kotlinx.android.synthetic.main.activity_lessonexample.*;未解析的引用:android)。此外,在AndroidManifest中,所有Activity都收到了错误:
enter image description hereenter image description here
我的gradle看起来像这样:
build.gradle(:app)
plugins {
id 'com.android.application'
id 'kotlin-android'
}
android {
compileSdk 33
namespace 'com.example.namespace'
defaultConfig {
applicationId "com.example.ulearnc"
minSdkVersion 24
targetSdkVersion 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
buildFeatures {
viewBinding true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main {
res {
srcDirs 'src/main/res', 'src/main/res/2'
}
}
}
}
dependencies {
implementation('androidx.core:core-ktx:1.10.1') {
exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7'
exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8'
}
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.17'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'de.hdodenhof:circleimageview:3.1.0'
//implementation 'com.etebarian:meow-bottom-navigation-java:1.2.0'
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
implementation 'com.github.blackfizz:eazegraph:1.2.5l@aar'
implementation 'com.nineoldandroids:library:2.4.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}
build.gradle
buildscript {
ext.kotlin_version = '1.8.10'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google() // Google's Maven repository
mavenCentral() // Maven Central repository
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
settings.gradle
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
include ':app'
rootProject.name = "uLearnC++"
如果你能帮助我,我将非常感激,即使是一些建议。谢谢你!
1条答案
按热度按时间wmtdaxz31#
您正在使用旧的 * KotlinAndroid Extensions* 插件中的 synthetic properties,这就是这些导入的来源:
但是这个插件在Kotlin 1.8(as per this blog post)中被删除了,因为你使用的是 1.8.10,所以这个插件不仅仅是被弃用了,它已经完全消失了。(我猜这就是为什么你会收到关于
android
包的警告,如果Android扩展被完全删除的话。基本上,您必须重新编写应用程序,以便显式定义和分配自动生成的
View
属性。您可以通过许多findViewById
调用来实现这一点,但 View Binding 是推荐的方法,实际上您使用它的方式与合成属性非常相似。只不过不是使用myTextView.text = "hi"
,而是在某处初始化的 binding 对象上调用它,所以调用看起来像或者,如果你正在处理一些事情
这与您当前代码的编写方式基本相同,因此将内容 Package 在
with(binding)
块中可能是一个非常快速的更改。有一个从synthetics迁移到View Binding on the Android site的方便指南,以及一些关于View Binding here的一般信息。