Intereting Posts
Служба закрывается, когда приложение закрывается Управление жизненным циклом файлов cookie в сервлете Ktor 0.9.0 что это "it <= ''" в функции строчной строки означает здесь Создание нескольких конструкторов Kotlin, которые не имеют общих параметров Почему у меня есть нежелательный выход Log при слиянии 2 наблюдаемых в другие Observable, которые буферизуют их каждые 10 секунд Производит ли вызов Kotlin метод вызова метода Замена SAM-конструктора на лямбда ковариантным типом Kotlin – MainActivity расширяет AppCompatActivity, функция onRequestPermissionsResult не найдена и не может быть переопределена Kotlin – Как я могу получить доступ к моей новой функции расширения класса из другого файла Невозможность запуска Инструментальные тесты в новом проекте Android Kotlin Ленивая инициализация свойства класса Kotlin не будет компилироваться Предоставляет ли Kotlin дополнительную безопасность? статический эквивалент в Android для kotlin, чтобы избежать утечек памяти обработчика Экземпляр класса Kotlin assertEqual Ошибка «Невозможно объединить dex» при использовании Room + Kotlin

Kotlin Деятельность, не включенная в APK

Представляю свой первый код Котлина (новое действие) в установленное приложение для Android. Использование Android Studio 2.3.3, Gradle 3.3. Я могу создавать и запускать приложение, но в момент запуска нового действия Kotlin приложение выходит из строя с не найденным исключением. Анализ APK указывает, что класс Kotlin не был включен в dex (и его multi-dex, проверили оба файла dex).

build.gradle (проект)

buildscript { ext.kotlin_version = '1.1.4' repositories { jcenter() maven { url 'https://maven.fabric.io/public' } mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.google.gms:google-services:3.0.0' classpath 'com.github.triplet.gradle:play-publisher:1.1.4' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'io.fabric.tools:gradle:1.+' classpath 'me.tatarka:gradle-retrolambda:3.2.5' classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.2.1' // For automated ui testing classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.2.2' // For Amazon Device Farm classpath 'com.amazonaws:aws-devicefarm-gradle-plugin:1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } jcenter() maven { url 'http://dl.bintray.com/optimizely/optimizely' } maven { url "https://jitpack.io" } maven { url "http://salesforce-marketingcloud.github.io/JB4A-SDK-Android/repository" } flatDir { dirs 'libs' } } } 

build.gradle (модуль приложения)

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'io.fabric' apply plugin: 'me.tatarka.retrolambda' apply plugin: 'jacoco' apply plugin: 'spoon' repositories { mavenCentral() maven { url 'https://maven.fabric.io/public' } maven { url 'http://salesforce-marketingcloud.github.io/JB4A-SDK-Android/repository' } maven { url "https://maven.google.com" } maven { url "http://maven.tealiumiq.com/android/releases/" } } android { compileSdkVersion 25 buildToolsVersion '25.0.0' sourceSets { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { targetSdkVersion 25 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" // Enabling multidex support. :( multiDexEnabled true } dexOptions { javaMaxHeapSize "8g" dexInProcess true // the magic line } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 compileOptions.incremental = false } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) //include our modules compile project(':core') compile project(':data') //android final APP_COMPAT_VERSION = '25.4.0' compile "com.android.support:appcompat-v7:$APP_COMPAT_VERSION" compile "com.android.support:recyclerview-v7:$APP_COMPAT_VERSION" compile "com.android.support:design:$APP_COMPAT_VERSION" compile "com.android.support:multidex:1.0.0" compile "com.android.support:cardview-v7:$APP_COMPAT_VERSION" // google final PLAY_SERVICES_VERSION = '10.2.4' compile "com.google.android.gms:play-services-wallet:$PLAY_SERVICES_VERSION" compile "com.google.android.gms:play-services-location:$PLAY_SERVICES_VERSION" compile "com.google.android.gms:play-services-gcm:$PLAY_SERVICES_VERSION" compile "com.google.android.gms:play-services-plus:$PLAY_SERVICES_VERSION" compile "com.google.android.gms:play-services-identity:$PLAY_SERVICES_VERSION" compile "com.google.android.gms:play-services-analytics:$PLAY_SERVICES_VERSION" compile "com.google.android.gms:play-services-auth:$PLAY_SERVICES_VERSION" compile "com.google.android.gms:play-services-maps:$PLAY_SERVICES_VERSION" compile "org.jetbrains.kotlin:kotlin-stdlib" compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" androidTestCompile jUnit // Unit tests dependencies testCompile jUnit testCompile "org.hamcrest:hamcrest-core:$HAMCREST_VERSION" testCompile "org.hamcrest:hamcrest-library:$HAMCREST_VERSION" testCompile "org.hamcrest:hamcrest-integration:$HAMCREST_VERSION" testCompile 'org.robolectric:robolectric:3.1' testCompile 'org.mockito:mockito-core:1.+' testCompile 'com.google.guava:guava:19.0' testCompile("com.android.support:support-v4:$APP_COMPAT_VERSION") { exclude module: 'support-annotations' } testCompile('org.powermock:powermock-api-mockito:1.6.4') { exclude module: 'objenesis' } testCompile('org.powermock:powermock-module-junit4:1.6.4') { exclude module: 'objenesis' } testCompile 'io.reactivex:rxandroid:1.0.1' testCompile 'io.reactivex:rxjava:1.1.0' // Espresso androidTestCompile('com.android.support.test:runner:0.5') { exclude module: 'support-annotations' } androidTestCompile('com.android.support.test:rules:0.5') { exclude module: 'support-annotations' } androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') { exclude module: 'support-annotations' } androidTestCompile('com.android.support.test.espresso:espresso-intents:2.2.2') { exclude module: 'support-annotations' } androidTestCompile('com.android.support.test.espresso:espresso-web:2.2.2') { exclude module: 'support-annotations' } androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') { exclude module: 'support-annotations' exclude module: 'recyclerview-v7' exclude module: 'appcompat-v7' exclude module: 'design' exclude module: 'support-v4' } // allows java 8 compile compile 'com.annimon:stream:1.1.2' uitestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' developmentCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" } 

и деятельность, которая очень проста:

 class HyperFlashActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(hyperflash_activity_layout) } } 

и код запуска:

 public static void launchHyperflashActivity(Activity launchingActivity) { Intent intent = new Intent(launchingActivity, HyperFlashActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); launchingActivity.startActivity(intent); launchingActivity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); } 

У меня когда-то была такая же проблема 1, и в основном исправление заключалось в том, чтобы вместо Android Studio 2.x загрузить Android Studio 3.0 Beta . Это должно устранить вашу проблему, даже если подсветка кода работает при использовании версии 2.x.

Когда вы просматриваете вкладку «Новые функции», вы можете увидеть, что она поддерживает поддержку языка Kotlin, который, по- видимому, не хватало раньше (я думаю, что в этом случае он просто был встроен в Android Studio и специально разработан для требований Android Studio (например, включая класс в файл dex)).

1 : за исключением мультидекса, поскольку мне это не нужно