Создание нового подмодуля Gradle в существующем проекте - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь добавить субмодуль Android в существующий проект Java. В моей голове это имеет смысл и должно работать, потому что:

  • Проекты Android могут быть построены с помощью Gradle
  • Проекты Android могут быть основаны на Java

IОднако у меня много проблем с настройкой. Моя цель - сделать все это в Intellij, но я не против перехода на Android Studio для мобильной работы. В идеале, в конце концов, проект android прекрасно сосуществует с другими подмодулями.

В настоящее время при создании модуля android в Intellij он прекрасно работает, но не может правильно синхронизироваться или запускать gradle без сбоев из-за зависимостипроблемы, похожие на Не удалось решить: com.android.support:appcompat-v7:27.+ (Ошибка зависимости) (и не удалось разрешить на основе таких вопросов / ответов)

Использование Intellij 2019.2.3, Android Studio 3.5.1 (последняя на момент написания)

При создании с помощью Android Studio на экране «Создание нового модуля» появляется сообщение «Проект долженбыть преобразован в andriodx. * dependencies "и не позволяет мне продолжить установку.

Каков наилучший способ интеграции подмодуля Android в существующий проект gradle на основе Java?

Репо, на случай, если люди захотят копать: https://github.com/GregJohnStewart/task-timekeeper/tree/andriod_app_base_creation

Проект представляет собой стандартную настройку мультипроекта. Не уверены, что было бы полезно показать здесь.

Main settings.gradle:

rootProject.name = 'Task-Timekeeper'
include 'BaseCode'
include 'DesktopApp'
include 'WebServer'
include 'MobileApp'
include 'MobileApp:app'

Main build.gradle:

plugins {
    // https://github.com/jeremylong/dependency-check-gradle
    id "org.owasp.dependencycheck" version "5.2.2"
}
subprojects {
    apply plugin: 'org.owasp.dependencycheck'
}

/**
 * Task to update the gradle wrapper to the version set.
 */
task updateWrapper(type: Wrapper) {
    group "wrapper"
    description "Rebuilds the wrapper with the version set. Use to update to new versions of Gradle"
    gradleVersion = '5.6.1'
}

Редактировать: удалось получить подмодульдобавили, создав его независимо от основного проекта gradle в Android Studio и интегрировав его по факту. Я смог заставить эту вещь скомпилироваться, запустить и протестировать очень хорошо, пока я не добавил дочерний подмодуль как зависимость app и не получил следующее сообщение от Intellij: Compilation is not supported for following modules: BaseCode, DesktopApp, Task-Timekeeper, Webserver. Unfortunately you can't have non-Gradle Java modules and Android-Gradle modules in one project.. Также вызывает следующую ошибку при запуске с Gradlew:

Execution failed for task ':MobileApp:app:javaPreCompileDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Annotation processors must be explicitly declared now.  The following dependencies on the compile classpath are found to contain annotation processor.  Please add them to the annotationProcessor configuration.
       - log4j-core-2.12.1.jar (org.apache.logging.log4j:log4j-core:2.12.1)
     Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior.  Note that this option is deprecated and will be removed in the future.

Текущий build.gradle приложения Android: https://github.com/GregJohnStewart/task-timekeeper/blob/andriod_app_base_creation/MobileApp/app/build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.gjs.taskTimekeeper.mobileApp"
        minSdkVersion 28
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation project(":BaseCode") //causes error in Intellij, build fail running just Gradle

    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'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...