我正在尝试通过 Kotlin 多平台库设置 Android 库。
我收到错误:
Plugin [id: 'com.android.library'] was not found in any of the following sources:
请帮助我指出问题所在以及如何解决此问题。
我的插件设置是这样的(应该是正确的构建脚本):
plugins {
id("org.jetbrains.kotlin.plugin.serialization").version("1.3.72")
id("com.android.library")
id("org.jetbrains.kotlin.multiplatform").version("1.3.72")
id("com.squareup.sqldelight")
}
Run Code Online (Sandbox Code Playgroud)
当我用以下替换它时
plugins {
id("org.jetbrains.kotlin.multiplatform").version("1.3.72")
id("org.jetbrains.kotlin.plugin.serialization").version("1.3.72")
}
apply plugin: 'com.android.library'
apply plugin: 'com.squareup.sqldelight'
Run Code Online (Sandbox Code Playgroud)
它工作正常。我不确定是什么导致了这个问题。
以下是完整的 build.gradle:
buildscript {
repositories {
mavenCentral()
jcenter()
google()
}
dependencies {
classpath 'com.squareup.sqldelight:gradle-plugin:1.3.0'
classpath 'com.android.tools.build:gradle:3.6.3'
}
}
plugins {
id("org.jetbrains.kotlin.plugin.serialization").version("1.3.72")
id("com.android.library")
id("org.jetbrains.kotlin.multiplatform").version("1.3.72")
id("com.squareup.sqldelight")
}
repositories {
mavenCentral()
jcenter()
google()
}
group 'com.jolas.sdk.kn.newsycore'
version '0.0.1'
android {
compileSdkVersion 29
buildToolsVersion …Run Code Online (Sandbox Code Playgroud) android gradle android-library gradle-plugin kotlin-multiplatform
我们假设一个 KMP 项目设置为具有示例 iOS 应用程序,其中添加了 KMP 模块的输出框架作为依赖项。
我在 KMP 模块中有一个函数sampleFuncForStringArrayList(names: ArrayList<String>),可以打印计数、迭代和打印 ArrayList 项目。
当我从 iOS 示例应用程序调用此函数时,我收到索引越界异常,因为 NSMutableArray在 iOS 应用程序环境中count为2,而在 KMP 模块中作为 ArrayList 接收时count为24576 。
此问题仅发生在releaseFramework 中。debugFramework工作正常。
//Swift
let namesStringList = NSMutableArray(array: ["Alice", "Bob"])
print("NSMutableArray COUNT : \(namesStringList.count)")
Main().sampleFuncForStringArrayList(names: namesStringList)
//Kotlin
public class Main {
public fun sampleFuncForStringArrayList(names: ArrayList<String>){
println("names.isNullOrEmpty() ${names.isNullOrEmpty()}")
println("names.count ${names.count()}")
names.forEach {
println("Hello $it")
}
}
}
Run Code Online (Sandbox Code Playgroud)
预期输出
NSMutableArray COUNT : 2
names.isNullOrEmpty() false
names.count 2
Hello …Run Code Online (Sandbox Code Playgroud)