我已经阅读了文档,但我无法理解如何创建一个工作示例以更好地理解它们的差异。
而且我已经创建了一个游乐场项目来检查当我使用一个或另一个时会发生什么。
应用程序.gradle
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$rootProject.kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
compileOnly project(":compileonlylibrary")
runtimeOnly project(":runtimeonlylibrary")
}
Run Code Online (Sandbox Code Playgroud)
主活动.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
FooCompile() // this crash in runtime
BarRuntime() // this doesn't compiles obviously
}
}
// FooCompile belongs to compileonlylibrary
// BarRuntime belongs to runtimeonlylibrary
Run Code Online (Sandbox Code Playgroud)
就是这样,我被困在这里,我无法创建一个合适的示例来提高我对 Gradle 配置的了解。
有人可以帮我一把吗?如果需要,我可以提供更多详细信息。
阅读此Gradle 文档后,我了解了api和之间的区别implementation。但是我想知道implementation和已弃用的runtime.
根据此表,行为没有区别,但runtime在实践中使用似乎“泄漏”了编译类路径,因此我试图隐藏的类实际上暴露给了使用模块。