Github Actions构建APK时google-services.json格式错误问题
解决Github Actions构建APK时google-services.json格式错误问题
问题根源
你在GitHub Actions的解码步骤中犯了环境变量大小写不匹配的错误:
- 在
env块中定义的变量名是data(小写) - 但在
run命令中使用的是$DATA(大写)
Linux环境变量严格区分大小写,这会导致解码命令读取到空值,生成的google-services.json内容为空或无效,最终触发JSON格式错误。
修复步骤
1. 修正Android.yml中的解码步骤
将环境变量名统一,确保引用一致。推荐修改为:
- name: Load Google Service file env: GOOGLE_SERVICES_JSON: ${{secrets.GOOGLE_SERVICES_JSON}} run: echo "$GOOGLE_SERVICES_JSON" | base64 -d > app/google-services.json
2. 确保base64编码无换行(可选但推荐)
如果你的base64编码结果带有换行符,可能会导致Secrets存储时出现格式问题。重新编码时添加-w0参数禁用换行:
base64 -w0 google-services.json
将生成的单行base64字符串重新存入GOOGLE_SERVICES_JSON Secrets。
3. 验证生成的JSON文件(可选)
在解码步骤后添加验证步骤,确认文件内容有效:
- name: Validate Google Services JSON run: python3 -m json.tool app/google-services.json
如果JSON格式正确,该步骤会输出格式化后的内容;若错误,则会直接报错,帮助你快速定位问题。
完整修正后的android.yml示例
name: Android CI on: push: branches: [ "main" ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'zulu' cache: gradle - name: Cache Gradle packages uses: actions/cache@v2 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Load Google Service file env: GOOGLE_SERVICES_JSON: ${{secrets.GOOGLE_SERVICES_JSON}} run: echo "$GOOGLE_SERVICES_JSON" | base64 -d > app/google-services.json - name: Validate Google Services JSON run: python3 -m json.tool app/google-services.json - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle run: ./gradlew build - name: Upload build artifacts uses: actions/upload-artifact@v2 with: name: build path: app/build/outputs/apk/release/*.apk
内容的提问来源于stack exchange,提问作者Omer Elkhalifa
相关产品推荐
相关产品推荐

