首页 > 解决方案 > Akka Streams、Java 和 Android Studio

问题描述

我一直想让 Akka Streams (java) 与 Android Studio 一起用于学习项目。我将 Akka Actor 和 Akka Streams 依赖项添加到 build.gradle 中,它可以很好地同步,将它们都添加到外部文件中。该项目很好,但一旦部署应用程序崩溃并出现以下错误

Failed to open dex files from /data/app/com.example.akkamagic-ln3G_VACZwI9pFOWqDOdPQ==/base.apk because: Failure to verify dex file '/data/app/com.example.akkamagic-ln3G_VACZwI9pFOWqDOdPQ==/base.apk': Bad index for method_handle_item method_idx: ffff >= f99b

我遇到的事情告诉我要确保

compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }

这是添加的。我已将 jetifier 设置为 false,因为这会产生一组不同的错误,并且我为文件冲突添加了以下内容。

  packagingOptions {
            pickFirst 'google/protobuf/*'
            pickFirst 'google/protobuf/compiler/plugin.proto'
            pickFirst 'reference.conf'
        }

这是整个 build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.example.akkamagic"
        minSdkVersion 27
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        packagingOptions {
            pickFirst 'google/protobuf/*'
            pickFirst 'google/protobuf/compiler/plugin.proto'
            pickFirst 'reference.conf'
        }

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
}

dependencies {
    implementation 'com.android.support:multidex:1.0.3'

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation 'io.magicthegathering:javasdk:0.0.16'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'

    implementation 'com.typesafe.akka:akka-actor_2.12:2.6.3'
    implementation 'com.typesafe.akka:akka-stream_2.12:2.6.3'
}

和 gradle.properties

# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=false

在这一点上,我在使用 akka 库的项目中没有任何实际代码。如果我从 build.gradle 中删除两个 akka 依赖项,项目将按应有的方式同步、构建、部署和运行。

我知道 Akka Streams 可能不是我正在运行的应用程序的最佳选择,但我只是想真正了解 akka 流的工作原理,我现在不想学习 HTML/CSS/JavaScript .

标签: javaandroidgradleakka

解决方案


推荐阅读