kotlinx.android.synthetic 未使用的 android studio 问题 [英] kotlinx.android.synthetic unused android studio issue

查看:66
本文介绍了kotlinx.android.synthetic 未使用的 android studio 问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 kotlin + Rxjava + MVVM 进行一个项目.在开发过程中面临在 Fragment 或 viewholder 中导入视图 ID 的问题.

import kotlinx.android.synthetic.main.layout.* kotlin 未使用.

通常视图 id 应该从 kotlin 合成布局导入使用,但它直接从 R.id 导入它不应该发生.

Kotlin 插件版本:org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.40

我的 gradle 文件:

应用插件:'com.android.feature'应用插件:'kotlin-android'应用插件:'kotlin-android-extensions'应用插件:想法"应用插件:'kotlin-kapt'安卓 {compileSdkVersion 27基本特征真默认配置{minSdk 版本 23目标SDK版本27版本代码 1版本名称1.0"}构建类型{释放 {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}lintOptions {abortOnError false}}依赖{api "com.android.support:design:$rootProject.support_library_version"api "com.android.support:appcompat-v7:$rootProject.support_library_version"api "com.android.support:recyclerview-v7:$rootProject.support_library_version"api "com.android.support:support-dynamic-animation:$rootProject.support_library_version"api "com.android.support:cardview-v7:$rootProject.support_library_version"api "com.android.support:customtabs:$rootProject.support_library_version"api "com.android.support.constraint:constraint-layout:1.1.0-beta5"api 'android.arch.lifecycle:extensions:1.1.0'api 'androidx.core:core-ktx:0.2'api "com.google.dagger:dagger:$rootProject.dagger_version"kapt "com.google.dagger:dagger-compiler:$rootProject.dagger_version"api "android.arch.persistence.room:runtime:$rootProject.room_version"kapt "android.arch.persistence.room:compiler:$rootProject.room_version"testImplementation "android.arch.persistence.room:testing:$rootProject.room_version"api "android.arch.persistence.room:rxjava2:$rootProject.room_version"androidTestImplementation "android.arch.core:core-testing:$rootProject.room_version"testImplementation "android.arch.core:core-testing:$rootProject.room_version"api "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"api "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"api 'com.jakewharton.timber:timber:4.5.1'api "com.android.support:multidex:1.0.3"api "com.github.bumptech.glide:glide:$rootProject.glide_version"api "jp.wasabeef:glide-transformations:$rootProject.glide_transformation_version"api 'com.github.bumptech.glide:okhttp3-integration:1.5.0@aar'api "io.reactivex.rxjava2:rxandroid:$rootProject.rxAndroid_version"api "io.reactivex.rxjava2:rxjava:$rootProject.rxJava_version"api "com.google.code.gson:gson:$rootProject.gson_version"api("com.squareup.retrofit2:retrofit:$rootProject.retrofit_version") {//排除 Retrofit 的 OkHttp 对等依赖模块并定义自己的模块导入排除模块:'okhttp'}api "com.squareup.okhttp3:okhttp:$rootProject.okhttp_version"api "com.squareup.okhttp3:logging-interceptor:$rootProject.okhttp_version"api "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofit_version"api "com.squareup.retrofit2:converter-gson:$rootProject.retrofit_version"api 'com.jakewharton.threetenabp:threetenabp:1.0.5'api "com.google.firebase:firebase-invites:$rootProject.play_services_version"api "com.google.firebase:firebase-core:$rootProject.play_services_version"api "com.google.firebase:firebase-config:$rootProject.play_services_version"api "com.google.firebase:firebase-perf:$rootProject.play_services_version"api "com.google.firebase:firebase-auth:$rootProject.play_services_version"api "com.google.firebase:firebase-firestore:$rootProject.play_services_version"api("com.firebaseui:firebase-ui-auth:$rootProject.firebase_ui_version") {//排除 Retrofit 的 OkHttp 对等依赖模块并定义自己的模块导入排除模块:'play-services-auth'排除模块:'firebase-auth'}//仅当需要 Facebook 登录支持时才需要api('com.facebook.android:facebook-android-sdk:4.31.0')api "com.google.android.gms:play-services-auth:$rootProject.play_services_version"//仅当需要 Twitter 登录支持时才需要api("com.twitter.sdk.android:twitter-core:3.0.0@aar") { 传递 = true }api 'com.jakewharton.rxbinding2:rxbinding-kotlin:2.0.0'api 'com.jakewharton.rxbinding2:rxbinding-support-v4-kotlin:2.0.0'api 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7-kotlin:2.0.0'api 'com.jakewharton.rxbinding2:rxbinding-design-kotlin:2.0.0'api('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {传递 = 真}}

我也尝试过干净构建和重建项目.

知道如何解决这个问题吗?

解决方案

我使用的是 Android Studio 3.1.3,但遇到了同样的问题.我设法通过将所有代码从 java/ 移动到 main/ 内的 kotlin/ 目录来解决这个问题.

app/|-- 源代码/||-- 主要/|||-- java/||||-- com.example.android.app|||-- kotlin/<--(使用这个)||||-- com.example.android.app

然后,添加 kotlin/ 作为源集的一部分:

app/build.gradle

android {源集{main.java.srcDirs += 'src/main/kotlin'}}

有时,它仍然需要同步和重建项目才能正确导入kotlinx.android....

参考:添加 kotlin 代码

I am working one project using kotlin + Rxjava + MVVM. During development facing issue of importing view ids in Fragment or viewholder.

import kotlinx.android.synthetic.main.layout.* unused with kotlin.

Normaly view id should used from kotlin synthetic layout imports but it directly import it from R.id that should not happen.

Kotlin plugin version : org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.40

My gradle file :

apply plugin: 'com.android.feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'idea'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 27
    baseFeature true
    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    lintOptions {
        abortOnError false
    }
}

dependencies {

    api "com.android.support:design:$rootProject.support_library_version"
    api "com.android.support:appcompat-v7:$rootProject.support_library_version"
    api "com.android.support:recyclerview-v7:$rootProject.support_library_version"
    api "com.android.support:support-dynamic-animation:$rootProject.support_library_version"
    api "com.android.support:cardview-v7:$rootProject.support_library_version"
    api "com.android.support:customtabs:$rootProject.support_library_version"

    api "com.android.support.constraint:constraint-layout:1.1.0-beta5"
    api 'android.arch.lifecycle:extensions:1.1.0'


    api 'androidx.core:core-ktx:0.2'


    api "com.google.dagger:dagger:$rootProject.dagger_version"
    kapt "com.google.dagger:dagger-compiler:$rootProject.dagger_version"

    api "android.arch.persistence.room:runtime:$rootProject.room_version"
    kapt "android.arch.persistence.room:compiler:$rootProject.room_version"
    testImplementation "android.arch.persistence.room:testing:$rootProject.room_version"
    api "android.arch.persistence.room:rxjava2:$rootProject.room_version"
    androidTestImplementation "android.arch.core:core-testing:$rootProject.room_version"
    testImplementation "android.arch.core:core-testing:$rootProject.room_version"

    api "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    api "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"


    api 'com.jakewharton.timber:timber:4.5.1'

    api "com.android.support:multidex:1.0.3"

    api "com.github.bumptech.glide:glide:$rootProject.glide_version"
    api "jp.wasabeef:glide-transformations:$rootProject.glide_transformation_version"
    api 'com.github.bumptech.glide:okhttp3-integration:1.5.0@aar'

    api "io.reactivex.rxjava2:rxandroid:$rootProject.rxAndroid_version"
    api "io.reactivex.rxjava2:rxjava:$rootProject.rxJava_version"
    api "com.google.code.gson:gson:$rootProject.gson_version"

    api("com.squareup.retrofit2:retrofit:$rootProject.retrofit_version") {
        // exclude Retrofit’s OkHttp peer-dependency module and define your own module import
        exclude module: 'okhttp'
    }

    api "com.squareup.okhttp3:okhttp:$rootProject.okhttp_version"
    api "com.squareup.okhttp3:logging-interceptor:$rootProject.okhttp_version"
    api "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofit_version"
    api "com.squareup.retrofit2:converter-gson:$rootProject.retrofit_version"

    api 'com.jakewharton.threetenabp:threetenabp:1.0.5'

    api "com.google.firebase:firebase-invites:$rootProject.play_services_version"
    api "com.google.firebase:firebase-core:$rootProject.play_services_version"
    api "com.google.firebase:firebase-config:$rootProject.play_services_version"
    api "com.google.firebase:firebase-perf:$rootProject.play_services_version"
    api "com.google.firebase:firebase-auth:$rootProject.play_services_version"
    api "com.google.firebase:firebase-firestore:$rootProject.play_services_version"



    api("com.firebaseui:firebase-ui-auth:$rootProject.firebase_ui_version") {
        // exclude Retrofit’s OkHttp peer-dependency module and define your own module import
        exclude module: 'play-services-auth'
        exclude module: 'firebase-auth'
    }

    // Required only if Facebook login support is required
    api('com.facebook.android:facebook-android-sdk:4.31.0')

    api "com.google.android.gms:play-services-auth:$rootProject.play_services_version"

    // Required only if Twitter login support is required
    api("com.twitter.sdk.android:twitter-core:3.0.0@aar") { transitive = true }

    api 'com.jakewharton.rxbinding2:rxbinding-kotlin:2.0.0'
    api 'com.jakewharton.rxbinding2:rxbinding-support-v4-kotlin:2.0.0'
    api 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7-kotlin:2.0.0'
    api 'com.jakewharton.rxbinding2:rxbinding-design-kotlin:2.0.0'

    api('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
        transitive = true
    }
}

I have also tried clean build and Rebuild project.

Any idea how can i resolve this issue ?

解决方案

I'm using Android Studio 3.1.3 and I encountered the same issue. I managed to solve this by moving all my codes from java/ to kotlin/ directory inside main/.

app/
 |-- src/
 |    |-- main/
 |    |    |-- java/
 |    |    |     |-- com.example.android.app
 |    |    |-- kotlin/  <-- (use this)
 |    |    |     |-- com.example.android.app

Then, add the kotlin/ as part of the source sets:

app/build.gradle

android {
   sourceSets {
       main.java.srcDirs += 'src/main/kotlin'
   }
}

Sometimes, it still requires to sync and rebuild the project to properly import the kotlinx.android....

Reference: Add kotlin code

这篇关于kotlinx.android.synthetic 未使用的 android studio 问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆