Включите сгенерированные Jar и aar в качестве зависимости в Android project

#android #gradle #jar #android-gradle-plugin #aar

#Android #gradle #jar #android-gradle-плагин #aar

Вопрос:

У меня есть проект AndroidStudioSupport, в котором есть модули. 1. модуль 1 заботится о части пользовательского интерфейса Android 2. модуль 2 — это проект библиотеки, который генерирует файл .aar 3. модуль 3 — это проект Java, который генерирует файл jar

Теперь я хочу построить проект таким образом, чтобы 1. Сначала создайте jar project 2. Затем скопируйте сгенерированный jar в библиотеки library project в качестве зависимости 3. Затем создайте файл aar 4. Затем скопируйте сгенерированный aar в библиотеки проекта пользовательского интерфейса в качестве зависимости 5. Наконец, создайте файл .apk

Пожалуйста, подскажите мне, какие изменения я должен внести в свои файлы gradle

файл gradle проекта jar

 apply plugin: 'java'
sourceSets {
    main.java.srcDirs = ['src/main/java']
    main.resources.srcDirs = ['src/main/java']
    test.java.srcDirs = ['tests/java']
    test.resources.srcDirs = ['tests/resources']
}

jar {
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it)}
    }
}
 

файл gradle библиотечного проекта

 apply plugin: 'com.android.library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':java_project')
}

task copyToLib(type: Copy) {
    from configurations.compile
    into 'libs'
}

build.dependsOn(copyToLib)

android {
    publishNonDefault true
    compileSdkVersion 21
    buildToolsVersion '23.0.2'
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            resources.srcDirs = ['src/main/java']
            aidl.srcDirs = ['src/main/java']
            renderscript.srcDirs = ['src/main/java']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('test')
    }
    buildTypes {
        debug {
            jniDebuggable true
        }
    }
}
 

Эта текущая реализация не включает jar из моего Java-проекта

Комментарии:

1. Ну, мы не можем видеть ваши файлы gradle, поэтому мы не можем посоветовать, какие изменения необходимо внести.

2.Вы хотите многопроектную сборку, что не так с обычным способом include 'subproject' compile ':subproject' ?

3. @weston Я добавил свои файлы gradle

4. Итак, у вас есть обязательный набор требований в вопросе; Я хочу сделать это, затем то, затем другое. Gradle лучше использовать декларативно; это задачи, тезисы — их зависимости друг от друга, сделайте это. Это то, что у вас уже есть, в чем проблема с тем, что у вас есть?

5. @weston Текущая реализация не включает в себя какие-либо классы из jar project. Поэтому я решил добавить generated .jar в качестве зависимости