Jetpack Compose在多模块项目中无法编译

3

我在一个多模块项目中添加Jetpack Compose时遇到了问题。我正在使用Android Studio 4.2 Canary 3。

失败的Gradle任务是:module:compileDebugKotlin,并出现以下错误消息:

e: java.lang.IllegalStateException: Backend Internal error: Exception during code generation

我的 :module build.gradle 文件如下

android {

    compileOptions {

        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {

        jvmTarget = "1.8"

        // Compose compiler based on 1.4 but set 1.3 for compatibility
        apiVersion = "1.3"
    }

    buildFeatures {

        compose true
    }

    composeOptions {

        kotlinCompilerVersion "1.3.70-dev-withExperimentalGoogleExtensions-20200424"

        kotlinCompilerExtensionVersion "0.1.0-dev14"
    }
}

有人知道如何解决这个问题吗?

完整的堆栈跟踪如下:

e: java.lang.IllegalStateException: Backend Internal error: Exception during code generation
File being compiled: /Users/Streetwizard/Documents/Formiik/formiik-android/FormiikFXL/login/src/main/java/com/kata/formiik/login/LoginActivity.kt
The root cause java.lang.RuntimeException was thrown at: org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:53)
    at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:247)
    at org.jetbrains.kotlin.backend.jvm.JvmBackendFacade.doGenerateFilesInternal$backend_jvm(JvmBackendFacade.kt:99)
    at org.jetbrains.kotlin.backend.jvm.JvmBackendFacade.doGenerateFiles(JvmBackendFacade.kt:52)
    at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModule(JvmIrCodegenFactory.kt:37)
    at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:35)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.kt:635)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:194)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:163)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:51)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:86)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
    at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:104)
    at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:346)
    at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:102)
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:240)
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.access$compileIncrementally(IncrementalCompilerRunner.kt:39)
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner$compile$2.invoke(IncrementalCompilerRunner.kt:81)
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:93)
    at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:606)
    at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:99)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1645)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: Exception while generating code for:
FUN name:onCreate visibility:protected modality:OPEN <> ($this:com.kata.formiik.login.LoginActivity, savedInstanceState:android.os.Bundle?) returnType:kotlin.Unit
  overridden:
    protected/*protected and package*/ open fun onCreate (p0: android.os.Bundle?): kotlin.Unit declared in androidx.appcompat.app.AppCompatActivity
  $this: VALUE_PARAMETER name:<this> type:com.kata.formiik.login.LoginActivity
  VALUE_PARAMETER name:savedInstanceState index:0 type:android.os.Bundle?
  BLOCK_BODY
    CALL 'protected/*protected and package*/ open fun onCreate (p0: android.os.Bundle?): kotlin.Unit declared in androidx.appcompat.app.AppCompatActivity' superQualifier='CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:AppCompatActivity modality:OPEN visibility:public superTypes:[androidx.fragment.app.FragmentActivity; androidx.appcompat.app.AppCompatCallback; androidx.core.app.TaskStackBuilder.SupportParentable; androidx.appcompat.app.ActionBarDrawerToggle.DelegateProvider]' type=kotlin.Unit origin=null
      $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
      p0: GET_VAR 'savedInstanceState: android.os.Bundle? declared in com.kata.formiik.login.LoginActivity.onCreate' type=android.os.Bundle? origin=null
    WHEN type=kotlin.Unit origin=IF
      BRANCH
        if: CALL 'public final fun not (): kotlin.Boolean [operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCL
          $this: CALL 'public open fun isTaskRoot (): kotlin.Boolean [fake_override] declared in com.kata.formiik.login.LoginActivity' type=kotlin.Boolean origin=GET_PROPERTY
            $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
        then: BLOCK type=kotlin.Unit origin=null
          VAR name:intentAction type:kotlin.String? [val]
            CALL 'public open fun getAction (): kotlin.String? declared in android.content.Intent' type=kotlin.String? origin=GET_PROPERTY
              $this: CALL 'public open fun getIntent (): android.content.Intent? [fake_override] declared in com.kata.formiik.login.LoginActivity' type=android.content.Intent? origin=GET_PROPERTY
                $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
          WHEN type=kotlin.Unit origin=IF
            BRANCH
              if: CALL 'public final fun ANDAND (arg0: kotlin.Boolean, arg1: kotlin.Boolean): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=null
                arg0: CALL 'public final fun ANDAND (arg0: kotlin.Boolean, arg1: kotlin.Boolean): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=null
                  arg0: CALL 'public open fun hasCategory (p0: kotlin.String?): kotlin.Boolean declared in android.content.Intent' type=kotlin.Boolean origin=null
                    $this: CALL 'public open fun getIntent (): android.content.Intent? [fake_override] declared in com.kata.formiik.login.LoginActivity' type=android.content.Intent? origin=GET_PROPERTY
                      $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
                    p0: CONST String type=kotlin.String value="android.intent.category.LAUNCHER"
                  arg1: CALL 'public final fun not (): kotlin.Boolean [operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
                    $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
                      arg0: GET_VAR 'val intentAction: kotlin.String? [val] declared in com.kata.formiik.login.LoginActivity.onCreate' type=kotlin.String? origin=null
                      arg1: CONST Null type=kotlin.Nothing? value=null
                arg1: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                  arg0: GET_VAR 'val intentAction: kotlin.String? [val] declared in com.kata.formiik.login.LoginActivity.onCreate' type=kotlin.String? origin=null
                  arg1: CONST String type=kotlin.String value="android.intent.action.MAIN"
              then: BLOCK type=kotlin.Unit origin=null
                CALL 'public open fun finish (): kotlin.Unit [fake_override] declared in com.kata.formiik.login.LoginActivity' type=kotlin.Unit origin=null
                  $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
                RETURN type=kotlin.Nothing from='protected open fun onCreate (savedInstanceState: android.os.Bundle?): kotlin.Unit declared in com.kata.formiik.login.LoginActivity'
                  GET_FIELD 'FIELD FIELD_FOR_OBJECT_INSTANCE name:INSTANCE type:kotlin.Unit visibility:public [final,static]' type=kotlin.Unit origin=null
    CALL 'public open fun setContentView (p0: kotlin.Int): kotlin.Unit [fake_override] declared in com.kata.formiik.login.LoginActivity' type=kotlin.Unit origin=null
      $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
      p0: GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:login_activity_login type:kotlin.Int visibility:public [static]' type=kotlin.Int origin=GET_PROPERTY
    CALL 'private final fun initializeObservers (): kotlin.Unit declared in com.kata.formiik.login.LoginActivity' type=kotlin.Unit origin=null
      $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
    CALL 'public open fun addTextChangedListener (p0: android.text.TextWatcher?): kotlin.Unit [fake_override] declared in com.google.android.material.textfield.TextInputEditText' type=kotlin.Unit origin=null
      $this: CALL 'public final fun <get-activityLoginUserTextInputEditText> (): com.google.android.material.textfield.TextInputEditText? declared in kotlinx.android.synthetic.main.login_activity_login' type=com.google.android.material.textfield.TextInputEditText? origin=GET_PROPERTY
        $receiver: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
      p0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:textWatcher type:android.text.TextWatcher visibility:private [final]' type=android.text.TextWatcher origin=GET_PROPERTY
        receiver: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
    COMPOSITE type=kotlin.Unit origin=null
      CALL 'public final fun addTextChangedListener$default (beforeTextChanged: kotlin.Function4<@[ParameterName(name = 'text')] kotlin.CharSequence?, @[ParameterName(name = 'start')] kotlin.Int, @[ParameterName(name = 'count')] kotlin.Int, @[ParameterName(name = 'after')] kotlin.Int, kotlin.Unit>?, onTextChanged: kotlin.Function4<@[ParameterName(name = 'text')] kotlin.CharSequence?, @[ParameterName(name = 'start')] kotlin.Int, @[ParameterName(name = 'before')] kotlin.Int, @[ParameterName(name = 'count')] kotlin.Int, kotlin.Unit>?, afterTextChanged: kotlin.Function1<@[ParameterName(name = 'text')] android.text.Editable?, kotlin.Unit>?, $mask0: kotlin.Int, $handler: kotlin.Any?): android.text.TextWatcher [inline] declared in androidx.core.widget.TextViewKt' type=android.text.TextWatcher origin=null
        $receiver: BLOCK type=com.google.android.material.textfield.TextInputEditText origin=null
          VAR IR_TEMPORARY_VARIABLE name:tmp0 type:com.google.android.material.textfield.TextInputEditText? [val]
            CALL 'public final fun <get-activityLoginPasswordTextInputEditText> (): com.google.android.material.textfield.TextInputEditText? declared in kotlinx.android.synthetic.main.login_activity_login' type=com.google.android.material.textfield.TextInputEditText? origin=GET_PROPERTY
              $receiver: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
          COMPOSITE type=com.google.android.material.textfield.TextInputEditText origin=null
            CALL 'public final fun checkExpressionValueIsNotNull (value: kotlin.Any?, expression: kotlin.String): kotlin.Unit declared in kotlin.jvm.internal.Intrinsics' type=kotlin.Unit origin=null
              value: GET_VAR 'val tmp0: com.google.android.material.textfield.TextInputEditText? [val] declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.google.android.material.textfield.TextInputEditText? origin=null
              expression: CONST String type=kotlin.String value="this.activityLoginPasswordTextInputEditText"
            GET_VAR 'val tmp0: com.google.android.material.textfield.TextInputEditText? [val] declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.google.android.material.textfield.TextInputEditText? origin=null
        beforeTextChanged: COMPOSITE type=kotlin.Function4<@[ParameterName(name = 'text')] kotlin.CharSequence?, @[ParameterName(name = 'start')] kotlin.Int, @[ParameterName(name = 'count')] kotlin.Int, @[ParameterName(name = 'after')] kotlin.Int, kotlin.Unit>? origin=DEFAULT_VALUE
          CONST Null type=kotlin.Function4<@[ParameterName(name = 'text')] kotlin.CharSequence?, @[ParameterName(name = 'start')] kotlin.Int, @[ParameterName(name = 'count')] kotlin.Int, @[ParameterName(name = 'after')] kotlin.Int, kotlin.Unit>? value=null
        onTextChanged: COMPOSITE type=kotlin.Function4<@[ParameterName(name = 'text')] kotlin.CharSequence?, @[ParameterName(name = 'start')] kotlin.Int, @[ParameterName(name = 'before')] kotlin.Int, @[ParameterName(name = 'count')] kotlin.Int, kotlin.Unit>? origin=DEFAULT_VALUE
          CONST Null type=kotlin.Function4<@[ParameterName(name = 'text')] kotlin.CharSequence?, @[ParameterName(name = 'start')] kotlin.Int, @[ParameterName(name = 'before')] kotlin.Int, @[ParameterName(name = 'count')] kotlin.Int, kotlin.Unit>? value=null
        afterTextChanged: BLOCK type=kotlin.Function1<android.text.Editable?, kotlin.Unit> origin=LAMBDA
          COMPOSITE type=kotlin.Unit origin=null
          FUNCTION_REFERENCE 'private final fun onCreate$lambda-0 ($this: com.kata.formiik.login.LoginActivity, it: android.text.Editable?): kotlin.Unit declared in com.kata.formiik.login.LoginActivity' type=kotlin.Function1<android.text.Editable?, kotlin.Unit> origin=LAMBDA
            $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
        $mask0: CONST Int type=kotlin.Int value=3
        $handler: CONST Null type=kotlin.Any? value=null
      COMPOSITE type=kotlin.Unit origin=null
    CALL 'public open fun setOnClickListener (p0: android.view.View.OnClickListener?): kotlin.Unit [fake_override] declared in com.google.android.material.textview.MaterialTextView' type=kotlin.Unit origin=null
      $this: CALL 'public final fun <get-activityLoginOAuthenticationLoginTextView> (): com.google.android.material.textview.MaterialTextView? declared in kotlinx.android.synthetic.main.login_activity_login' type=com.google.android.material.textview.MaterialTextView? origin=GET_PROPERTY
        $receiver: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
      p0: BLOCK type=com.kata.formiik.login.LoginActivity.onCreate.<no name provided> origin=null
        CLASS LAMBDA_IMPL CLASS name:<no name provided> modality:FINAL visibility:public/*package*/ superTypes:[android.view.View.OnClickListener?]
          $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.kata.formiik.login.LoginActivity.onCreate.<no name provided>
          FIELD FAKE_OVERRIDE name:receiver type:kotlin.Any? visibility:protected [fake_override]
          CONSTRUCTOR GENERATED_MEMBER_IN_CALLABLE_REFERENCE visibility:public/*package*/ <> ($this:com.kata.formiik.login.LoginActivity) returnType:com.kata.formiik.login.LoginActivity.onCreate.<no name provided> [primary]
            VALUE_PARAMETER BOUND_RECEIVER_PARAMETER name:$this index:0 type:com.kata.formiik.login.LoginActivity
            BLOCK_BODY
              SET_FIELD 'FIELD FIELD_FOR_CAPTURED_VALUE name:$this type:com.kata.formiik.login.LoginActivity visibility:private [final]' type=kotlin.Unit origin=INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE
                receiver: GET_VAR '<this>: com.kata.formiik.login.LoginActivity.onCreate.<no name provided> declared in com.kata.formiik.login.LoginActivity.onCreate.<no name provided>' type=com.kata.formiik.login.LoginActivity.onCreate.<no name provided> origin=null
                value: GET_VAR '$this: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate.<no name provided>.<init>' type=com.kata.formiik.login.LoginActivity origin=null
              DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
              BLOCK type=kotlin.Unit origin=null
          FUN name:onClick visibility:public modality:FINAL <> ($this:com.kata.formiik.login.LoginActivity.onCreate.<no name provided>, it:android.view.View?) returnType:kotlin.Unit
            overridden:
              public abstract fun onClick (p0: android.view.View?): kotlin.Unit declared in android.view.View.OnClickListener
            $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:com.kata.formiik.login.LoginActivity.onCreate.<no name provided>
            VALUE_PARAMETER name:it index:0 type:android.view.View?
            BLOCK_BODY
              CALL 'public final fun launchOAuthentication (): kotlin.Unit declared in com.kata.formiik.login.LoginViewModel' type=kotlin.Unit origin=null
                $this: CALL 'public final fun access$getViewModel ($this: com.kata.formiik.login.LoginActivity): com.kata.formiik.login.LoginViewModel declared in com.kata.formiik.login.LoginActivity' type=com.kata.formiik.login.LoginViewModel origin=GET_PROPERTY
                  $this: GET_FIELD 'FIELD FIELD_FOR_CAPTURED_VALUE name:$this type:com.kata.formiik.login.LoginActivity visibility:private [final]' type=com.kata.formiik.login.LoginActivity origin=null
                    receiver: GET_VAR '<this>: com.kata.formiik.login.LoginActivity.onCreate.<no name provided> declared in com.kata.formiik.login.LoginActivity.onCreate.<no name provided>.onClick' type=com.kata.formiik.login.LoginActivity.onCreate.<no name provided> origin=null
          FIELD FIELD_FOR_CAPTURED_VALUE name:$this type:com.kata.formiik.login.LoginActivity visibility:private [final]
        CONSTRUCTOR_CALL 'public/*package*/ constructor <init> ($this: com.kata.formiik.login.LoginActivity) [primary] declared in com.kata.formiik.login.LoginActivity.onCreate.<no name provided>' type=com.kata.formiik.login.LoginActivity.onCreate.<no name provided> origin=null
          $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
    CALL 'public final fun setText (p0: kotlin.CharSequence?): kotlin.Unit [fake_override] declared in com.google.android.material.textfield.TextInputEditText' type=kotlin.Unit origin=null
      $this: CALL 'public final fun <get-activityLoginPasswordTextInputEditText> (): com.google.android.material.textfield.TextInputEditText? declared in kotlinx.android.synthetic.main.login_activity_login' type=com.google.android.material.textfield.TextInputEditText? origin=GET_PROPERTY
        $receiver: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
      p0: CALL 'public final fun <get-previouslyLoggedPassword> (): kotlin.String declared in com.kata.formiik.login.LoginViewModel' type=kotlin.String origin=GET_PROPERTY
        $this: CALL 'private final fun <get-viewModel> (): com.kata.formiik.login.LoginViewModel declared in com.kata.formiik.login.LoginActivity' type=com.kata.formiik.login.LoginViewModel origin=GET_PROPERTY
          $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
    CALL 'public final fun setText (p0: kotlin.CharSequence?): kotlin.Unit [fake_override] declared in com.google.android.material.textview.MaterialTextView' type=kotlin.Unit origin=EQ
      $this: CALL 'public final fun <get-activityLoginVersionTextView> (): com.google.android.material.textview.MaterialTextView? declared in kotlinx.android.synthetic.main.login_activity_login' type=com.google.android.material.textview.MaterialTextView? origin=GET_PROPERTY
        $receiver: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
      p0: CALL 'public final fun <get-informationVersion> (): kotlin.String declared in com.kata.formiik.login.LoginViewModel' type=kotlin.String origin=GET_PROPERTY
        $this: CALL 'private final fun <get-viewModel> (): com.kata.formiik.login.LoginViewModel declared in com.kata.formiik.login.LoginActivity' type=com.kata.formiik.login.LoginViewModel origin=GET_PROPERTY
          $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
    CALL 'private final fun requestMissingPermissions (): kotlin.Unit declared in com.kata.formiik.login.LoginActivity' type=kotlin.Unit origin=null
      $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null
    CALL 'private final fun setupTestEnvironmentButton (): kotlin.Unit declared in com.kata.formiik.login.LoginActivity' type=kotlin.Unit origin=null
      $this: GET_VAR '<this>: com.kata.formiik.login.LoginActivity declared in com.kata.formiik.login.LoginActivity.onCreate' type=com.kata.formiik.login.LoginActivity origin=null

    at org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:53)
    at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generateMethod(ClassCodegen.kt:342)
    at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generateDeclaration(ClassCodegen.kt:302)
    at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generate(ClassCodegen.kt:148)
    at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen$Companion.generate(ClassCodegen.kt:290)
    at org.jetbrains.kotlin.backend.jvm.JvmBackendFacade.doGenerateFilesInternal$backend_jvm(JvmBackendFacade.kt:95)
    ... 36 more
Caused by: java.lang.IllegalArgumentException: Unhandled intrinsic in ExpressionCodegen: FUN IR_EXTERNAL_DECLARATION_STUB name:<get-activityLoginUserTextInputEditText> visibility:public modality:FINAL <> ($receiver:android.app.Activity) returnType:com.google.android.material.textfield.TextInputEditText?
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitFunctionAccess(ExpressionCodegen.kt:373)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitCall(ExpressionCodegen.kt:365)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitCall(ExpressionCodegen.kt:104)
    at org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl.accept(IrCallImpl.kt:78)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.gen(ExpressionCodegen.kt:171)
    at org.jetbrains.kotlin.backend.jvm.codegen.IrCallGenerator$DefaultImpls.genValueAndPut(IrCallGenerator.kt:42)
    at org.jetbrains.kotlin.backend.jvm.codegen.IrCallGenerator$DefaultCallGenerator.genValueAndPut(IrCallGenerator.kt:45)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitFunctionAccess(ExpressionCodegen.kt:411)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitCall(ExpressionCodegen.kt:365)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitCall(ExpressionCodegen.kt:104)
    at org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl.accept(IrCallImpl.kt:78)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitStatementContainer(ExpressionCodegen.kt:355)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitBlockBody(ExpressionCodegen.kt:359)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitBlockBody(ExpressionCodegen.kt:104)
    at org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl.accept(IrBlockBodyImpl.kt:40)
    at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.generate(ExpressionCodegen.kt:200)
    at org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.doGenerate(FunctionCodegen.kt:100)
    at org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:51)
    ... 41 more


e: java.lang.IllegalStateException: Backend Internal error: Exception during code generation

Execution failed for task ':login:compileDebugKotlin'.
> Internal compiler error. See log for more details

更新于2021年3月24日

对于延迟我很抱歉,

我从未成功地使用任何compose开发者预览版本来编译多模块项目,在官方的compose slack频道上询问了很多次,但都没有效果;在Compose变成alpha版本后,我的团队和我将项目更新到了那时候的第一个alpha版本和Canary版本的Android Studio(我真的记不清楚),然后一切都如预期地工作了:D

现在我们正在使用Android Studio Canary 8和Compose beta 02,一切都运行得非常好,我们甚至决定发布一些全部使用Compose制作的模块到生产环境中,而且我们在生产环境中已经有1个月没有收到任何Crashlytics中的崩溃报告了。

我们仍然在应用程序的某些部分中使用现已停用的Kotlin Synthetics,Android Gradle插件会显示一些关于弃用的警告,但它仍然像预期的那样工作,很快应用程序中的所有内容都将使用Compose制作。


我也遇到了同样的问题,如果你找到了解决方案,请告诉我。 - Saurabh Khare
2
你解决了吗?因为我在使用现有项目时也遇到了同样的问题。 - Halcyon Abraham Ramirez
2个回答

1

1
如果您正在使用Kotlin Synthetics,请尝试改为定义的视图绑定。在集成Twilio时,我遇到了类似的错误,这样做可以解决问题。祝好运!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接