Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从Java调用Kotlin显示;无法解析符号“;上课_Android_Android Studio_Kotlin_Proguard_Android Library - Fatal编程技术网

Android 从Java调用Kotlin显示;无法解析符号“;上课

Android 从Java调用Kotlin显示;无法解析符号“;上课,android,android-studio,kotlin,proguard,android-library,Android,Android Studio,Kotlin,Proguard,Android Library,有两个模块: 应用程序(包含Java和Kotlin类的主/应用程序模块) lib包装器(包含Java类的Android库模块) lib包装器发布在amazons3 bucket上,并在app模块中用作库依赖项。Proguard规则应用于库包装器。到现在为止一切都很顺利 然后将lib包装器的所有类从java转换为kotlin。 现在,所有调用lib包装器方法的java类(在app模块中)都显示红色的“”无法解析符号“ 调用lib包装器方法的kotlin类(在应用程序模块中)没有问题 即使使用

有两个模块:

  • 应用程序(包含Java和Kotlin类的主/应用程序模块
  • lib包装器(包含Java类的Android库模块
  • lib包装器发布在amazons3 bucket上,并在app模块中用作库依赖项。Proguard规则应用于库包装器。到现在为止一切都很顺利

    然后将lib包装器的所有类从java转换为kotlin。

    • 现在,所有调用lib包装器方法的java类(在app模块中)都显示红色的“”无法解析符号“

    • 调用lib包装器方法的kotlin类(在应用程序模块中)没有问题

    • 即使使用java类中的“无法解析符号”,应用程序编译和运行时也不会出错。但对于新用户来说,使用lib包装器非常困难,因为它不会将库类和方法显示为自动完成的建议

    • 对apk文件进行反编译时,lib包装器类显示所有预期的类和方法都是公共的,公共成员是普通的/去模糊的。(这是意料之中的。)

    • 如果我在lib wrapper的build.gradle中禁用Proguard(“minifyEnabled false”),一切正常。

    因此,我在lib包装器的proguard-rules.pro文件中添加了以下kotlin特定的proguard规则,但没有帮助:

    -keep class kotlin.*.* { *; }
    -keep class kotlin.Metadata { *; }
    -dontwarn kotlin.**
    -keepclassmembers class **$WhenMappings {
        <fields>;
    }
    -keepclassmembers class kotlin.Metadata {
        public <methods>;
    }
    
    -assumenosideeffects class kotlin.jvm.internal.Intrinsics {
      public static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
    }
    
    应用程序模块的build.gradle文件中使用的插件:

    apply plugin: 'com.android.library'
    apply plugin: 'kotlin-android'
    apply plugin: 'maven-publish'
    apply plugin: 'org.jetbrains.dokka-android'
    
    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    
    任何帮助都将不胜感激。提前谢谢