安卓编译项目,依赖库中报错,没有namespace

Android Studio 编译项目时,出现类似以下报错,依赖库中没有命名空间

A problem occurred configuring project ':app_group_directory'.
[        ] > Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
[        ]    > Namespace not specified. Specify a namespace in the module's build file: E:\.pub-cache\hosted\pub.flutter-io.cn\app_group_directory-2.0.0\android\build.gradle. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace.

可以在主工程,build.gradle中添加以下代码,再编译即可


// 配置JVM工具链以解决兼容性问题
subprojects {
    afterEvaluate { project ->
        if (project.plugins.hasPlugin('com.android.library') || project.plugins.hasPlugin('com.android.application')) {
            project.android {
                compileSdk 35
                compileOptions {
                    sourceCompatibility JavaVersion.VERSION_17
                    targetCompatibility JavaVersion.VERSION_17
                }
            }

            project.tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
                kotlinOptions {
                    jvmTarget = '17'
                }
            }
        }
    }
}
subprojects {
    afterEvaluate { project ->
        if (project.plugins.hasPlugin('com.android.library') || project.plugins.hasPlugin('com.android.application')) {
            println "project: ${project.name} Namespace get: ${project.android.namespace}"
            def packageName = project.android.namespace ?: project.android.defaultConfig.applicationId ?: project.android.sourceSets.main.manifest.srcFile.text.find(/package="([^"]*)"/) ?: project.group
            project.android.namespace = packageName
            println "Namespace set to: ${packageName} for project: ${project.name}"
            def manifestFile = project.android.sourceSets.main.manifest.srcFile
            if (manifestFile.exists()) {
                def manifestText = manifestFile.text
                if (manifestText.contains('package=')) {
                    manifestText = manifestText.replaceAll(/package="[^"]*"/, "")
                    manifestFile.text = manifestText
                    println "Package attribute removed in AndroidManifest.xml for project: ${project.name}"
                } else {
                    println "No package attribute found in AndroidManifest.xml for project: ${project.name}"
                }
            } else {
                println "AndroidManifest.xml not found for project: ${project.name}"
            }
        }
    }
}

在有的项目中,group会带有package字段,修复如下

subprojects {
    afterEvaluate { project ->
        if (project.plugins.hasPlugin('com.android.library') || project.plugins.hasPlugin('com.android.application')) {
            println "project: ${project.name} Namespace get: ${project.android.namespace}"
            def packageName = project.android.namespace ?: project.android.defaultConfig.applicationId ?: project.android.sourceSets.main.manifest.srcFile.text.find(/package="([^"]*)"/) ?: project.group
            println "packageName: ${packageName}"
            project.android.namespace = packageName.replaceAll('_', '').replace('package="', '').replace('"', '')
            println "Namespace set to: ${packageName} for project: ${project.name}"
            def manifestFile = project.android.sourceSets.main.manifest.srcFile
            if (manifestFile.exists()) {
                def manifestText = manifestFile.text
                if (manifestText.contains('package=')) {
                    manifestText = manifestText.replaceAll(/package="[^"]*"/, "")
                    manifestFile.text = manifestText
                    println "Package attribute removed in AndroidManifest.xml for project: ${project.name}"
                } else {
                    println "No package attribute found in AndroidManifest.xml for project: ${project.name}"
                }
            } else {
                println "AndroidManifest.xml not found for project: ${project.name}"
            }
        }
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值