【问题标题】:Rename classes in gradle在 gradle 中重命名类
【发布时间】:2017-04-06 09:00:37
【问题描述】:

我正在为我的 Android 应用程序准备 Gradle 构建脚本。在构建任务开始之前,我必须更改主类名称,从而更改每个 *.java 文件中的导入。

例如,如果现在我的主类是 com.company.myApp,那么每个 java 文件中的包都以以下方式导入:import com.company.myApp.pacakge.* 并且当我将主类重命名为 com.company.newName 我还要将导入更改为:import com.comapny.newName.package.*。

我是 Gradle 的初学者,但我试图查找有关 replace() 函数的等效信息,我找到了影子插件,但它适用于 JAR 文件。还有一个使用 ReplaceTokens 的灵魂,但它适用于令牌,并且类名不是令牌。

Gradle 有什么办法吗?

【问题讨论】:

  • “在构建任务开始之前,我必须更改主类名,从而更改每个 *.java 文件中的导入”——为什么?
  • @CommonsWare 用正确的 id 构建应用程序。我想我找到了解决方案:stackoverflow.com/questions/17465353/…
  • 您不需要重命名或重新打包类“以构建具有正确 id 的应用程序”。您可以根据产品风格在您的build.gradle 文件中设置applicationId“以构建具有正确ID 的应用程序”。
  • 你绝对不应该那样做。这将为您提供不可预测的构建结果,并且一旦您启用 proguard,可能会中断。
  • 另外,我认为你在这里有一个误解。正如@CommonsWare 所说,您可以使用该属性在gradle 中设置应用程序ID。默认 id 与您的 java 类的包名称相同的事实是“受控巧合”。不一定要这样。

标签: android gradle


【解决方案1】:

对于其他有类似问题的人,使用 Gradle 将任何字符串更改为其他字符串非常容易。我已经解决了我的问题:

copy {

    from "src_tmp"
    into "src"

    filter {
        String line -> line.replaceAll("com.company.app", "com.new.string")
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2018-08-30
    • 2016-02-28
    相关资源
    最近更新 更多