You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio集成Instant App运行报错:java.base未导出类至未命名模块

解决Instant App集成后的运行报错问题

问题分析

这个报错是Java 9+引入的模块系统(JPMS)限制导致的:sun.net.www.protocol.https.Handler属于Java内部API,模块java.base默认不会将其暴露给未命名模块,而Instant App的ClearcutLogger组件恰好依赖了这个内部API,从而触发运行时访问权限错误。

解决方案

1. 切换到兼容的JDK版本

Android Studio推荐使用JDK 11作为开发环境,更高版本的JDK对内部API的限制更严格,可能加重这个问题:

  • 打开File > Project Structure > SDK Location
  • 在JDK Location处选择Android Studio自带的Embedded JDK(通常是JDK 11),或者手动指定本地安装的JDK 11路径

2. 正确配置Gradle的add-exports参数

之前尝试的add-exports可能因为配置位置不对而失效,需要在对应模块的build.gradle中添加以下配置(针对Instant App的feature模块或instant模块):

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
        
        javaCompilerOptions {
            option.add('--add-exports', 'java.base/sun.net.www.protocol.https=ALL-UNNAMED')
        }
    }

    defaultConfig {
        // 针对注解处理器的参数
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += ["--add-exports", "java.base/sun.net.www.protocol.https=ALL-UNNAMED"]
            }
        }
        // 针对测试运行时的参数
        testInstrumentationRunnerArguments += ["--add-exports", "java.base/sun.net.www.protocol.https=ALL-UNNAMED"]
    }
}

3. 升级Instant App相关依赖版本

确保使用的Instant App插件和依赖是最新兼容版本,在项目根目录的build.gradle中更新:

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.2' // 或更高稳定版本
        classpath 'com.google.android.gms:play-services-instantapps:17.0.0'
    }
}

然后在feature模块的build.gradle中添加依赖:

implementation 'com.google.android.gms:play-services-instantapps:17.0.0'

4. 清理缓存并重新构建

缓存问题可能导致配置不生效:

  • 点击File > Invalidate Caches...
  • 勾选Invalidate and Restart,等待Android Studio重启后重新构建项目

内容的提问来源于stack exchange,提问作者matthew shen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:43:26