我的项目有两个不同的 build.gradle 文件,用时髦的语法编写。我想把这个时髦的 gradle 文件改成一个用 Kotlin Syntax (build.gradle.kts) 编写的 gradle 文件。
我将向您展示根项目build.gradle文件。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
//ext.kotlin_version = '1.2-M2'
ext.kotlin_version = '1.1.51'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0-alpha01'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
我试了几个在网上找的“办法”,都没用。重命名文件显然不是解决问题的办法,也没有帮助。我已经在我的根项目中创建了一个新的build.gradle.kts文件,但是这个文件没有显示在我的项目中。此外,格雷尔不承认新的文件。
所以我的问题是:我如何将我的groovybuild.gradle文件转换为kotlinbuild.gradle.kts并将这个新文件添加到我现有的项目中?
谢谢你的帮助。
buildscript {
extra.apply {
var kotlin_version = "1.7.10"
var navigationVersion = "2.5.0"
var hilt_version = "2.42"
}
// .kotlin_version("1.7.10")
// ext.navigationVersion("2.5.0")
// ext.hilt_version("2.42")
repositories {
gradlePluginPortal()
google()
mavenCentral()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:7.2.1")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10")
classpath("androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0")
classpath("com.google.firebase:firebase-crashlytics-gradle:2.9.1")
classpath("com.google.gms:google-services:4.3.13")
classpath("com.google.firebase:perf-plugin:1.4.1")
classpath("com.google.dagger:hilt-android-gradle-plugin:2.42")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
// classpath("com.google.dagger:hilt-android-gradle-plugin:$extra.hilt_version")
}
}
allprojects {
repositories {
gradlePluginPortal()
mavenCentral()
google()
jcenter()
maven { url = uri("https://jitpack.io") }
maven { url = uri("https://cdn.veriff.me/android/") }
flatDir {
dirs("libs")
}
}
}
tasks.register("clean"){
delete(setOf(rootProject.buildDir))
}
import extensions.*
import java.time.LocalDate
import java.time.format.DateTimeFormatter.*
plugins {
id(Plugins.ANDROID_APPLICATION)
id(Plugins.ANDROID)
id(Plugins.PARCELIZE)
id(Plugins.KAPT)
id(Plugins.NAVIGATION_SAFE_ARGS)
id(Plugins.GOOGLE_SERVICES)
id(Plugins.CRASH_ANALYTICS)
id(Plugins.PERFORMANCE_ANALYTICS)
id(Plugins.DAGGER_HILT)
}
var applicationName = "abc`enter code here`"
android {
compileSdk = AndroidConfig.COMPILE_SDK
bundle {
language {
enableSplit = false
}
}
defaultConfig {
configurations.all {
resolutionStrategy { force(AndroidConfig.FORCE_STRATEGY) }
}
applicationId = AndroidConfig.APPLICATION_ID
minSdkVersion(AndroidConfig.MIN_SDK)
targetSdkVersion(AndroidConfig.TARGET_SDK)
versionCode = AndroidConfig.VERSION_CODE
versionName = AndroidConfig.VERSION_NAME
testInstrumentationRunner = AndroidConfig.TEST_INSTRUMENTATION_RUNNER
//javaCompileOptions.annotationProcessorOptions.arguments['dagger.hilt.disableModulesHaveInstallInCheck'] = 'true'
}
applicationVariants.all {
outputs.all {
var formattedDate = LocalDate.now()//LocalDate.now().format(ofPattern("yyyy-MM-dd"))
var outputFileName =
"${applicationName}_${buildType.name}_${formattedDate}_v${defaultConfig.versionName}.apk"
}
}
buildTypes {
getByName("debug") {
// minifyEnabled = "false"
isMinifyEnabled = false
isTestCoverageEnabled = true
isShrinkResources = false
isDebuggable = true
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
testProguardFiles(getDefaultProguardFile("proguard-android.txt"),
"proguardTest-rules.pro")
// FirebasePerformance {
// // Set this flag to 'false' to disable @AddTrace annotation processing and
// // automatic HTTP/S network request monitoring
// // for a specific build variant at compile time.
// isInstrumentationEnabled = true
// }
}
getByName("release") {
isMinifyEnabled = false
isShrinkResources = false
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
testProguardFiles(getDefaultProguardFile("proguard-android.txt"),
"proguardTest-rules.pro")
}
}
buildFeatures {
viewBinding = true
dataBinding = true
}
// compileOptions {
// sourceCompatibility = JavaVersion.VERSION_11
// targetCompatibility = JavaVersion.VERSION_11
// }
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
//freeCompilerArgs= ["-Xjvm-default=compatibility"]
freeCompilerArgs = listOf("-Xjvm-default=compatibility")
// freecompilerargs = List( -Xjvm-default=compatibility)
}
flavorDimensions("mode")
productFlavors {
maybeCreate("Staging")
maybeCreate("PreProduction")
maybeCreate("Production")
getByName("Staging") {
applicationIdSuffix = ".staging"
//versionNameSuffix = ".staging"
}
getByName("Production") {
dimension = "mode"
resValue("string", "app_name", "abc")
}
}
packagingOptions {
resources.excludes += "META-INF/DEPENDENCIES"
resources.excludes += "META-INF/NOTICE"
resources.excludes += "META-INF/LICENSE"
resources.excludes += "META-INF/LICENSE.txt"
resources.excludes += "META-INF/NOTICE.txt"
// excludes += ['META-INF/DEPENDENCIES', 'META-INF/NOTICE', 'META-INF/LICENSE', 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt']
}
dynamicFeatures += setOf(":BuyCryptoModule",":"points")
}
dependencies {
//includeing file libs
val daggerVersion = "2.42"
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
implementation(files("geetest_captcha_android_v1.7.1.1_20220308"))
appModuleDeps()
kaptAndroidTest("com.google.dagger:hilt-compiler:2.42")
// For local unit tests
testImplementation("com.google.dagger:hilt-android-testing:2.42")
kaptTest("com.google.dagger:hilt-compiler:2.42")
implementation(files("libs/opencsv-5.2.jar"))
kaptAndroidTest("com.google.dagger:dagger-compiler:$daggerVersion")
kaptTest("com.google.dagger:dagger-compiler:$daggerVersion")
releaseImplementation("com.github.ChuckerTeam.Chucker:library-no-op:3.5.2")
}
kapt {
correctErrorTypes = true
arguments {
// Make Hilt share the same definition of Components in tests instead of
// creating a new set of Components per test class.
arg("dagger.hilt.shareTestComponents", "true")
}
}
当然,重命名无济于事。你需要使用 Kotlin DSL 重写它。它类似于Groovy,但有一些区别。阅读他们的文档,看看例子。
在您的情况下,问题是:
ext.kotlin_version
不是有效的静态编程语言语法,使用方括号任务
块中的所有任务声明为字符串,或使用单个类型化函数,如下例所示。看看转换后的顶级build.gradle.kts
:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext["kotlin_version"] = "1.1.51"
repositories {
google()
jcenter()
}
dependencies {
classpath ("com.android.tools.build:gradle:3.1.0-alpha01")
classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin:${ext["kotlin_version"]}")
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
}
}
task<Delete>("clean") {
delete(rootProject.buildDir)
}
问题内容: 我尝试不使用任何xml。 像这样一个:转换为@Bean 问题在这里。 尝试将“ com.cloudlb.domain.User”转换为Class []无效。 错误:投放问题。 先感谢您。 问题答案:
问题内容: 我有一个Kotlin源文件,但我想将其转换为Java。 如何将Kotlin转换为Java源代码? 问题答案: 正如@Vadzim所说,在IntelliJ或Android Studio中,你只需执行以下操作即可从kotlin获取Java代码: Menu > Tools > Kotlin > Show Kotlin Bytecode 点击Decompile按钮 复制Java代码 更新: 使
有谁能帮我把Android Studio中的Kotlin代码转换成Java吗? 我经历了以下过程: 工具>>Kotlin>>将Kotlin反编译为Java
我试图将Groovy中的build.gradle文件转换成kotlin。kts文件,我在gradle文件中有一些我不知道如何正确转换的任务 我不太明白如何使用“类型”,我正在沿着这条路走下去 但它给了我一个错误 类型'DomainObjectCollection 如何正确地将这些Groovy任务转换为kotlin任务?
如何将Java代码转换为Kotlin?
问题内容: 我正在使用的库使用回调对象发出一系列对象。 使用某些调用添加回调,并使用非阻塞方法调用启动该过程。 创建将发射这些对象的的最佳方法是什么? 如果阻止了该怎么办? 问题答案: 我认为您需要这样的东西(scala中给出的示例) 至于阻塞/非阻塞:通常,基于回调的体系结构将回调订阅与进程启动分开。在这种情况下,您可以完全独立于进程的时间创建任意数量的。另外,是否分叉的决定完全取决于您。您的体