Android studio 未解析的引用:kotlinx

Android studio 未解析的引用:kotlinx,android-studio,kotlin,kotlin-android-extensions,Android Studio,Kotlin,Kotlin Android Extensions,我正在Android Studio中尝试Kotlin和Kotlin Android扩展。我在Ubuntu 14.04上的Android Studio v 1.5.1和OS X El Capitan上的Android Studio v 1.5.1中都尝试过这一点,结果相同 以下是我正在做的: 我安装了Kotlin插件1.0.0-beta-35950-IJ141-11 创建一个新的空白Android项目 将MainActivity文件转换为Kotlin(通过帮助->findaction->将文件转换

我正在Android Studio中尝试Kotlin和Kotlin Android扩展。我在Ubuntu 14.04上的Android Studio v 1.5.1和OS X El Capitan上的Android Studio v 1.5.1中都尝试过这一点,结果相同

以下是我正在做的:

  • 我安装了Kotlin插件1.0.0-beta-35950-IJ141-11
  • 创建一个新的空白Android项目
  • 将MainActivity文件转换为Kotlin(通过帮助->findaction->将文件转换为Kotlin)
  • 为Kotlin配置项目
  • 然后进入生成的content_main.xml文件,为“hello World!”文本视图添加一个id(hello)

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:context="com.gmail.npnster.mykotlinfirstproject.MainActivity"
        tools:showIn="@layout/activity_main">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            android:id="@+id/hello"
            />
    </RelativeLayout>  
    
    所以在这一点上,一切似乎都很好

    但当我试图编译这个时,我得到了

    Unresolved reference: kotlinx
    Unresolved reference: kotlinx
    Unresolved reference: hello
    
    注意,我没有安装Kotlin Android扩展插件。就在几天前,它现在应该包含在主插件中,并被标记为过时。(事实上,如果您在安装最新插件时尝试安装,则不会安装任何新插件)

    有人知道我做错了什么吗

    主要活动

    import android.os.Bundle
    import android.support.design.widget.FloatingActionButton
    import android.support.design.widget.Snackbar
    import android.support.v7.app.AppCompatActivity
    import android.support.v7.widget.Toolbar
    import android.view.View
    import android.view.Menu
    import android.view.MenuItem
    import kotlinx.android.synthetic.main.content_main.*
    
    
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            val toolbar = findViewById(R.id.toolbar) as Toolbar
            setSupportActionBar(toolbar)
            print("setting text view value to hey")
            hello.text = "hey"
    
            val fab = findViewById(R.id.fab) as FloatingActionButton
            fab.setOnClickListener { view -> Snackbar.make(view, "Replace this with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show() }
        }
    
        override fun onCreateOptionsMenu(menu: Menu): Boolean {
            // Inflate the menu; this adds items to the action bar if it is present.
            menuInflater.inflate(R.menu.menu_main, menu)
            return true
        }
    
        override fun onOptionsItemSelected(item: MenuItem): Boolean {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            val id = item.itemId
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true
            }
    
            return super.onOptionsItemSelected(item)
        }
    }
    

    在buildscript的依赖项中添加
    kotlin android extensions

    1。在您的项目级构建中。gradle

    buildscript {
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        }
    }
    
    apply plugin: 'kotlin-android-extensions'
    
    并应用
    kotlin android extensions
    插件:

    2。在您的模块级构建中。gradle

    buildscript {
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        }
    }
    
    apply plugin: 'kotlin-android-extensions'
    

    我找到了为什么我的不起作用。我的块放错了位置,通过将
    buildscript{}
    块移到插件之前,如下所示,我使其工作:

    buildscript {
        ext.kotlin_version = '1.0.0-beta-3595'
        ext.anko_version = '0.8.1'
    
        repositories {
            jcenter()
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        }
    }
    
    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"
    
        defaultConfig {
            applicationId "com.kotlin"
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        sourceSets {
            main.java.srcDirs += 'src/main/kotlin'
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.1.1'
        compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        compile "org.jetbrains.anko:anko-sdk15:$anko_version"
        compile "org.jetbrains.anko:anko-support-v4:$anko_version"
    }
    

    包含kotlin android extensions依赖项的buildscript块显然需要在app module build.gradle中,而不是在顶层中。

    我在中找不到它,但您必须通过将以下内容添加到您的
    build.gradle
    文件来应用插件:

    apply plugin: 'kotlin-android-extensions'
    

    当你使用Android Studio 2.0和kotlin 1.0.1-2时,你会发现同样的错误。您无法在项目的build.gradle中配置kotlin android扩展,您需要在每个模块的build.gradle中配置kotlin android扩展,如下所示:

    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    
    buildscript {
        ext.kotlin_version = '1.0.1-2'
        repositories {
            jcenter()
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        }
    }
    
    android {
        compileSdkVersion 23
        buildToolsVersion "24.0.0 rc2"
    
        defaultConfig {
            applicationId "com.dazd.kotlindemo"
            minSdkVersion 14
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        sourceSets {
           main.java.srcDirs += 'src/main/kotlin'
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.3.0'
        compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    }
    
    ...
    apply plugin: 'kotlin-android-extensions'
    ...
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    
    最重要的是,即使kotlin插件包含kotlin android扩展,您也需要在模块的bulid.gradle中配置kotlin android扩展,如下所示:

    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    
    buildscript {
        ext.kotlin_version = '1.0.1-2'
        repositories {
            jcenter()
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        }
    }
    
    android {
        compileSdkVersion 23
        buildToolsVersion "24.0.0 rc2"
    
        defaultConfig {
            applicationId "com.dazd.kotlindemo"
            minSdkVersion 14
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        sourceSets {
           main.java.srcDirs += 'src/main/kotlin'
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.3.0'
        compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    }
    
    ...
    apply plugin: 'kotlin-android-extensions'
    ...
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    

    当然,您可以在项目的build.gradle中配置kotlin插件的类路径。

    我就是这样做的。 当我第一次在Project中配置Kotlin时,我选择了1.1.2-3版本而不是1.1.2-4,并在build.gradle应用程序文件中添加了以下行

    apply plugin: 'kotlin-android-extensions'
    

    在那之后,我同步了构建,它按预期工作。

    app/buildgradle
    中添加
    apply插件:“kotlin android extensions”


    如果您已经添加了它,请尝试将其删除并同步渐变,同步完成后,再将其添加回去并再次同步渐变。这是我的工作。

    < P>我发现我同时支持C++和Kotlin,这会导致构建问题。p>

    启动新项目时,确保C++支持未被选中,并检查Kotlin支持。这为我解决了问题

    删除以下导入为我解决了这个问题

    import android.R
    

    我的问题是我应用插件的顺序

    在应用kotlin android扩展插件之前,必须先应用kotlin android插件

    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    

    在应用了上述修复之后,我不得不重新启动Android Studio以使其正常工作。

    在我的例子中,我将引用视图的代码放在一个
    伴生对象中。太傻了。

    对我来说,唯一有帮助的就是单击“文件”->“无效缓存/重新启动…”

    在macOS big sur的Android Studio 4.2 Beta 1中,将
    id'kotlin Android extensions'
    添加到应用程序级别
    build.gradle
    文件的插件部分。所以它应该如下所示

    plugins {
        id 'com.android.application'
        id 'kotlin-android'
        id 'kotlin-android-extensions'
    }
    

    然后同步项目,它应该与您必须使用的jetpack一起工作:

    build.gradle
    (应用程序)中

    activity\u main.xml中

    <androidx.constraintlayout.widget.ConstraintLayout
        tools:viewBindingIgnore="false">
    

    这就是我所做的,但我仍然发现1.0.0-beta-3595的问题:(1.0.0-beta-4589对我也不起作用)-有什么解决方案吗?只是在bug跟踪器中添加了一条注释。我在1.0.0-beta-4589上也遇到了这个问题。你还必须向build.gradle文件中添加
    应用插件:“kotlin android extensions”
    ,最好用$kotlin_版本变量表达:
    编译“org.jetbrains.kotlin:kotlin android extensions:$kotlin_version”
    还请注意,如果您填写了此答案,则无效缓存/重新启动可能会有助于我解决此问题。您是否知道为什么会修复此问题?唯一的答案是确切显示
    应用插件的位置:“kotlin android extensions”
    需要添加…+1但为什么要修复此问题?是的,我认为既然
    kotlin-1.0.0-beta
    您需要应用该插件,但我找不到该插件的源代码!谢谢!注意:官方文档已更新:请求对接受的答案进行编辑并附加此信息!:)官方文档现在显示了一个空的代码块,
    apply插件:'kotlin android extensions'
    ;我的大部分因果报应都来自于回答一个带有类似问题的gradle问题。在我的例子(Android Studio 2.1.1,kotlin 1.0.2)“在项目中配置kotlin”操作将kotlin配置在Project build.gradle中,而不是模块的build.gradle中,这很有帮助。请检查您的
    ext.kotlin\u版本
    ,并在project gradle中添加上面提到的
    classpath…
    。并将两个
    apply…
    添加到app gradle。我花了很多时间试图找到解决此问题的方法。GRADLE文件不是问题。非常感谢,先生,只有这个对我有用!再次感谢!我的解决方案完全不同,我从gradle.properties文件中删除了官方的Kotlin语言支持,它再次起作用。事实上,该文件已损坏,并有一些随机字符串,我修复了它的去