Kotlin RC NoClassDefFoundError
Kotlin RC NoClassDefFoundError
将 kotlin 更新为 RC-1036 后,我遇到了一个奇怪的问题:我的代码甚至没有编译和打包。
当构建通过并启动应用程序时,我得到 ClassNotFoundException: Didn't find class "example.myapplication.MainActivity"
。
我尝试用 apktool
反编译 apk,但没有在存档中找到我的 类。 build/intermediates
目录中也没有 类。
这是我的项目:
app/build.gradle
:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
buildscript {
ext.kotlin_version = '1.0.0-rc-1036'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
repositories {
mavenCentral()
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "example.myapplication"
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
}
}
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"
}
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest package="example.myapplication"
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
和MainActivity
:
package example.myapplication
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
hello.text = "New text"
}
}
构建工具版本为 2.0.0-beta2
;
sourseSets
可能有问题,但如果我尝试以某种方式重新配置它,则没有任何效果。感谢任何帮助。
你应该拥有这两个插件:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
第一个确保 Kotlin 代码编译,第二个用于 UI 导入。
将 kotlin 更新为 RC-1036 后,我遇到了一个奇怪的问题:我的代码甚至没有编译和打包。
当构建通过并启动应用程序时,我得到 ClassNotFoundException: Didn't find class "example.myapplication.MainActivity"
。
我尝试用 apktool
反编译 apk,但没有在存档中找到我的 类。 build/intermediates
目录中也没有 类。
这是我的项目:
app/build.gradle
:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
buildscript {
ext.kotlin_version = '1.0.0-rc-1036'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
repositories {
mavenCentral()
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "example.myapplication"
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
}
}
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"
}
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest package="example.myapplication"
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
和MainActivity
:
package example.myapplication
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
hello.text = "New text"
}
}
构建工具版本为 2.0.0-beta2
;
sourseSets
可能有问题,但如果我尝试以某种方式重新配置它,则没有任何效果。感谢任何帮助。
你应该拥有这两个插件:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
第一个确保 Kotlin 代码编译,第二个用于 UI 导入。