AAR файл не генерируется

Рейтинг: 2Ответов: 1Опубликовано: 02.08.2023

У меня есть проект и lib module (проект это по сути оболочка для lib module, чтоб создать .aar). Ожидается, что он будет работать так: после build project, lib module должен построиться, и сгенерировать .aar в папке build-> output, который уже можно будет использовать где нужно. Но проблема в том, что он не создается.

Нужно сказать, что на в проекте есть 2 lib module, и второй файл .aar lib-module каждый раз успешно генерируется, то есть очевидно, что-то не так с первым модулем lib где .aar не создается.

Я пробовал clean, rebuild, invalidate и все эти вещи, но это не работает.

Есть предположения в чем может быть проблема?

Есть ли возможность (может логами) проверить где студия пробует создать .aar? или как поменять куда сохранить файл? или просто посмотреть какуе то инфу по его созданию?

UPD

градл файл этого модуля который не генерируется

import org.jetbrains.kotlin.gradle.plugin.myproject.KotlinNativeTarget

plugins {
    kotlin("multiplatform")
    id("com.android.library")
    id("maven-publish")
    id("kotlin-android-extensions")
}

var frameworkName = "myframeworkname"
group = "here.my.library"
version = "0.0.2"

kotlin {
    android()

    ios {
        compilations.forEach {
            it.kotlinOptions.freeCompilerArgs += arrayOf("-linker-options", "-application_extension")
        }
        binaries {
            framework {
                baseName = "mybasename"
                embedBitcode("disable")
            }
        }
    }

    tvos {
        compilations.forEach {
            it.kotlinOptions.freeCompilerArgs += arrayOf("-linker-options", "-application_extension")
        }
        binaries {
            framework {
                baseName = "mybasename"
                embedBitcode("bitcode")
            }
        }
    }

    sourceSets {
        val commonMain by getting

        val androidMain by getting {
            dependencies {
                implementation("com.google.android.material:material:1.2.1")
            }
        }

        val iosMain by getting

        val tvosMain by getting {
            dependsOn(iosMain)
        }

        val iosTest by getting

        val tvosTest by getting

        val commonTest by getting {
            dependencies {
                implementation(kotlin("test"))
                implementation(kotlin("test-common"))
                implementation(kotlin("test-annotations-common"))
            }
        }
    }
    
    android {
        publishLibraryVariants("release", "debug")
    }

    configure(listOf(targets["metadata"], android())) {
        mavenPublication {
            val targetPublication = this@mavenPublication
            tasks.withType<AbstractPublishToMaven>()
                .matching { it.publication == targetPublication }
        }
    }
}

android {
    compileSdk = 30
    sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
    defaultConfig {
        minSdk = 24
        targetSdk = 30
    }
    buildTypes {
        getByName("release") {
            isMinifyEnabled = false
        }
    }
}

publishing {
    println("Project dir : ${projectDir.name}")
    publications {
        create<MavenPublication>("lib") {
            groupId = "entpay.shared.library"
            artifactId = project.name
            version = project.version as String?
            artifact("$buildDir/outputs/aar/${projectDir.name}-release.aar")
        }
    }

    repositories {
        mavenLocal()
    }
}

val packForXcode by tasks.creating(Sync::class) {
    val xcodeMode = if (System.getenv("CONFIGURATION").equals("release", true)) "RELEASE" else "DEBUG"
    val frameworksDirectory = File(buildDir, "xcode-frameworks")
    val target = System.getProperty("TARGET_PLATFORM") ?: "iosX64"
    println("target = ${target}")
    println("configuration = ${xcodeMode}")
    group = "build"
    inputs.property("mode", xcodeMode)
    val framework = kotlin.targets.getByName<KotlinNativeTarget>(target).binaries.getFramework(xcodeMode)
    dependsOn(framework.linkTask)
    from({ framework.outputDirectory })
    val path = File(frameworksDirectory,target)
    into(path)
}

tasks.getByName("build").dependsOn(packForXcode)

Ответы

▲ 1Принят

В итоге мне помог этот ответ - https://stackoverflow.com/a/20927125/5709159, а именно эта команда через терминал - /gradlew assembleRelease (или /gradlew assembleDebug)