什么被认为是“解耦项目”(Gradle)?

isJ*_*n00 2 android gradle build.gradle android-gradle-plugin

大家好,我正在制作一个 Cocos2d-x 游戏,其中包含 gradle 文件,我一直在寻找提高构建时间的方法,我尝试谷歌搜索,甚至查看 Gradle 文档,但我似乎无法理解“解耦”项目到底是什么是 ?在我的内容中gradle.properties它指出了这一点

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
#org.gradle.parallel=true
Run Code Online (Sandbox Code Playgroud)

对于不熟悉 Cocos2d-x 的人来说,Android Studio Cocos2d-x 项目的 Gradle Scripts 文件夹中有 3 个 build.gradle 文件:

  • (项目:proj.android)
  • (模块:我的游戏)
  • (模块:libcocos2dx)

其次是gradle-wrapper.propertiesproguard-rules.pro(MyGame)proguard-rules.pro(libcocos2dx)gradle.propertiessettings.gradlelocal.properties

话虽如此,我的项目是否被认为是一个解耦项目?取消注释会org.gradle.parallel=true缩短构建时间吗?或者我会注意到什么不同?

Ran*_*mar 5

通过运行以下命令检查应用程序的项目列表。

\n\n
gradlew -q projects\n
Run Code Online (Sandbox Code Playgroud)\n\n

它的输出将是这样的

\n\n
------------------------------------------------------------\nRoot project\n------------------------------------------------------------\n\nRoot project \'MyApplication\'\n+--- Project \':app\'\n\\--- Project \':mylibrary\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

根据gradle 链接

\n\n
\n

如果两个项目不直接相互访问\xe2\x80\x99s 项目模型,则称它们是解耦的。解耦的项目只能根据声明的依赖项进行交互:项目依赖项和/或任务依赖项。任何其他形式的项目交互(即通过修改另一个项目对象或通过从另一个项目对象读取值)都会导致项目耦合。

\n
\n\n

如果应用程序使用像这样的依赖项

\n\n
dependencies {\n\n    implementation project(":mylibrary")\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后就解耦了。

\n