小编Jab*_*iyo的帖子

在项目结构中找不到导入模块选项(Android Studio 0.3.4 - 0.5.2)

我真的很困惑和沮丧因为我无法理解如何导入我的android库项目作为我的应用程序项目的依赖项.

我尝试在线查找并建议大多数答案转到我的应用程序的项目结构,然后单击"+"然后单击"导入模块"

但Android Studio 0.3.4 - 0.5.2没有显示任何选项,当我点击"+"时,它只显示新模块的窗口.

我做错了什么或什么?

救命!!!

android android-library android-studio android-gradle-plugin

67
推荐指数
4
解决办法
4万
查看次数

在 Kotlin 编写的 Android 库的公共 API 中处理 R8 + JvmStatic Annotation + Lambda

首先,请注意,我不期待why do you want to obfuscate library评论。这是我要问的真正问题。

我在使用 Kotlin 编写的 Android 库处理 R8/混淆时遇到了问题。

我有一个带有注释的公共 API 方法,@JvmStatic该方法将 aLambda作为参数。

例如,看看下面的代码,

typealias MyLambdaCallback = (String, Map<String, Any>) -> Unit

@Keep
object MyApi {

    private var callback: MyLambdaCallback? = null

    @JvmStatic
    fun setCallback(callback: MyLambdaCallback) {
        this.callback = callback
    }
}
Run Code Online (Sandbox Code Playgroud)

我添加了@Jvmstatic以便Java调用代码可以静态调用该方法而不是执行MyApi.INSTANCE.setCallback()

当我松开图书馆没有minification,一切都很好,并调用代码来自JavaKotlin预期被写入。

但是现在我想在打开时释放库minification

这就产生了一个问题。

这是错误

java.lang.IncompatibleClassChangeError: 方法 'void setCallback(kotlin.jvm.functions.Function2)' 预期为虚拟类型,但被发现为静态类型(出现 'com.demo.basic.Application' 声明在/data/app/com.demo.basic-_0uJXPbtfs3UZ2Rp2h-RdQ==/base.apk!classes2.dex)

我是在某处犯了错误还是预期这是某种限制?

我尝试了什么?

  1. 删除 …

obfuscation android-library kotlin android-r8

11
推荐指数
1
解决办法
691
查看次数

Android Gradle Plugin 1.1.0 - 找不到getNdkFolder(),有什么替代品吗?

我刚刚从1.0.0更新了Android Gradle插件到1.1.0,我收到了这个错误:

没有方法签名:com.android.build.gradle.LibraryPlugin.getNdkFolder()适用于参数类型:()值:[]

我试图找到gradle插件1.0.0到1.1.0的差异,但无法在网上找到任何地方.

似乎getNdkFolder方法已被更改或删除.

有替代品吗?或者任何其他方式获得NdkFolder?

我正在使用这样的方法,

def ndkDir = project.plugins.findPlugin('com.android.library').getNdkFolder()

我还针对Android问题跟踪器中的工具团队提出了问题:https://code.google.com/p/android/issues/detail? id = 152810

谢谢 !

android android-ndk android-build android-studio android-gradle-plugin

10
推荐指数
2
解决办法
7622
查看次数

将 Json 解析为 Map&lt;String,String&gt; kotlin 多平台

我的重新序列化为 "{"2":"Hello","Tesst":"Value"}"

我尝试将此字符串解析为 Map<String,String>

            val resialized = readFile(createStorageDirectoryPath(getManifestFilePath()), MANIFEST_FILE_NAME, errorOut)
                manifest = Json.decodeFromString(/*serializer*/, resialized)
Run Code Online (Sandbox Code Playgroud)

如何为 Map<String,String> 创建序列化程序

kotlin kotlinx.serialization

3
推荐指数
1
解决办法
6987
查看次数