Android项目GitHub Actions CI/CD写入Google Maps密钥到BuildConfig失败
问题分析与解决方案
核心错误原因
你在GitHub Actions工作流中通过echo写入环境变量的方式有误,导致环境变量值末尾被意外添加了单引号,最终生成的BuildConfig.java代码出现语法错误(多余的单引号)。
步骤1:修复GitHub Actions工作流配置
错误写法的问题
原工作流中使用echo 'KEY=${{ secrets.KEY }}' >> $GITHUB_ENV的方式,会导致当GitHub对敏感信息进行掩码(显示为***)时,错误保留了包裹字符串的单引号,使得环境变量值变为***',进而在Gradle生成BuildConfig时出现"***"; '的非法语法。同时原配置中setup-java步骤的with缩进错误,会导致步骤执行失败。
优化后的工作流配置
直接在Job级别定义环境变量,无需通过echo写入,既简洁又避免错误:
jobs: build: runs-on: ubuntu-latest # 直接在Job级别注入所有密钥作为环境变量 env: DEV_GOOGLE_PLACES_API_KEY: ${{ secrets.DEV_GOOGLE_PLACES_API_KEY }} STAGE_GOOGLE_PLACES_API_KEY: ${{ secrets.STAGE_GOOGLE_PLACES_API_KEY }} PROD_GOOGLE_PLACES_API_KEY: ${{ secrets.PROD_GOOGLE_PLACES_API_KEY }} steps: - uses: actions/checkout@v4 - name: Set up JDK 22 uses: actions/setup-java@v4 with: java-version: '22' distribution: 'temurin' cache: gradle - name: Grant execute permission for gradlew run: chmod +x ./gradlew - name: Build with Gradle run: ./gradlew buildwhiskeyDebug
步骤2:优化Gradle配置(可选但更规范)
原Gradle代码中debug和release构建类型都使用同一个DEV密钥,建议根据环境对应不同密钥,同时添加空值校验避免潜在问题:
buildTypes { debug { // 本地调试时可设置默认值,避免构建失败 def devApiKey = System.getenv("DEV_GOOGLE_PLACES_API_KEY") ?: "local_debug_key" buildConfigField "String", "GOOGLE_PLACES_API_KEY", "\"${devApiKey}\"" } release { def prodApiKey = System.getenv("PROD_GOOGLE_PLACES_API_KEY") // 生产环境强制校验密钥存在性 if (prodApiKey == null || prodApiKey.isEmpty()) { throw new GradleException("PROD_GOOGLE_PLACES_API_KEY environment variable is not set!") } buildConfigField "String", "GOOGLE_PLACES_API_KEY", "\"${prodApiKey}\"" } // 新增stage构建类型(按需启用) stage { initWith release def stageApiKey = System.getenv("STAGE_GOOGLE_PLACES_API_KEY") if (stageApiKey == null || stageApiKey.isEmpty()) { throw new GradleException("STAGE_GOOGLE_PLACES_API_KEY environment variable is not set!") } buildConfigField "String", "GOOGLE_PLACES_API_KEY", "\"${stageApiKey}\"" } }
验证修复
重新触发GitHub Actions构建,此时环境变量会被正确注入,Gradle生成的BuildConfig.java代码将符合Java语法规范,不会再出现多余的单引号错误。
内容的提问来源于stack exchange,提问作者disha
相关产品推荐
相关产品推荐

