【发布时间】: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 类的包名称相同的事实是“受控巧合”。不一定要这样。