首页 > 解决方案 > 如果项目中有多个模块,如何缩短 Android Studio 中的包?

问题描述

我的应用项目由许多模块组成:

app
compnent_*
compnent_*
compnent_*
compnent_*
compnent_*
feature_*
feature_*
feature_*
... and so on

在 Android Studio 中,重命名应用包很容易

例如,我们可以轻松地从 更改com.bestapp.androidcom.amazingapp.android

它会建议自动重命名所有模块的所有文件/类/清单中的所有包,对开发人员来说一点也不头疼

但是如果我需要缩短包装,例如 from com.the.bestapp.androidtocom.bestapp.android怎么办?

bestapp我还尝试将“app”模块中的文件夹从the一个文件夹拖放到另一个文件com夹,它建议对所有模块执行此操作,我单击“是”,但它有效!

它将所有类(文件)移动到 app 模块,因此来自其他模块的所有文件都已移动到 app 模块。取消了此操作,我正在尝试寻找另一种解决方案。

我可以手动拖放所有文件夹,但文件夹太多

Mb 有没有为此创建的脚本?还是其他解决方案?

标签: androidandroid-studio

解决方案


行。我决定创建一个 Kotlin/JVM 程序来做到这一点:

import org.apache.commons.io.FileUtils
import org.apache.commons.io.filefilter.TrueFileFilter
import java.io.File

fun main() {
    val projectDir = File("D:\\projects\\app_project")

    val dirs = FileUtils.listFilesAndDirs(
        projectDir,
        TrueFileFilter.INSTANCE,
        TrueFileFilter.INSTANCE
    ).filter {
        it.absolutePath.endsWith("com\\the\\bestapp")
    }

    println(dirs.joinToString("\n"))

    val dirsToDelete = dirs.map { it.parentFile }

    dirs.forEach {
        FileUtils.moveDirectoryToDirectory(it, it.parentFile.parentFile, false) // move "bestapp" to "com" folder
    }

    dirsToDelete.forEach {
        it.delete()
    }
}

所以现在它com.bestapp.android代替com.the.bestapp.android- 用于文件夹

效果很好

但不要忘记重命名文件(.java、.kt、.xml)中的包,这可以通过使用 Notepad++ 或 Android Studio 的“全部替换”文本功能轻松完成:

将所有com.the.bestapp.android匹配的字符串替换为com.bestapp.android


推荐阅读