无法签署 jar,条目压缩大小无效

Min*_*asN 2 android google-play react-native github-actions

我有一个 React 本机应用程序。我正在准备通过 github-actions 将 Android 持续部署到 Google Play 商店。

我正在使用这个库来签署应用程序:https ://github.com/r0adkll/sign-android-release

我有以下用于发布的 github-action 的 yaml 配置文件:

on: workflow_dispatch

name: Release to Google Play Store

jobs:
  beta-distribution:
    runs-on: ubuntu-latest
    name: Beta Distribution
    steps:
    - name: Checkout
      uses: actions/checkout@v2
    - uses: actions/setup-node@master
    - uses: c-hive/gha-yarn-cache@v1

    - name: Install node modules
      run: |
        yarn install
    - name: Cache Gradle Wrapper
      uses: actions/cache@v2
      with:
        path: ~/.gradle/wrapper
        key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}

    - name: Cache Gradle Dependencies
      uses: actions/cache@v2
      with:
        path: ~/.gradle/caches
        key: ${{ runner.os }}-gradle-caches-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
        restore-keys: |
          ${{ runner.os }}-gradle-caches-
    - name: Make Gradlew Executable
      run: cd android && chmod +x ./gradlew

    - name: Build Android App Bundle
      run: |
        cd android && ./gradlew bundleRelease --no-daemon
    - name: Sign App Bundle
      id: sign_app
      uses: r0adkll/sign-android-release@v1
      with:
        releaseDirectory: android/app/build/outputs/bundle/release
        signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY }}
        alias: ${{ secrets.ANDROID_SIGNING_ALIAS }}
        keyStorePassword: ${{ secrets.ANDROID_SIGNING_STORE_PASSWORD }}
        keyPassword: ${{ secrets.ANDROID_SIGNING_KEY_PASSWORD }}

    - name: Upload Artifact
      uses: actions/upload-artifact@v2
      with:
        name: Signed App Bundle
        path: ${{steps.sign_app.outputs.signedReleaseFile}}

    - name: Deploy to Play Store (BETA)
      uses: r0adkll/upload-google-play@v1
      with:
        serviceAccountJsonPlainText: ${{ secrets.ANDROID_SERVICE_ACCOUNT }}
        packageName: com.wmsappbare
        releaseFile: a${{steps.sign_app.outputs.signedReleaseFile}}
        track: beta
        inAppUpdatePriority: 3
        userFraction: 0.5
        whatsNewDirectory: android/release-notes/
        # mappingFile: android/app/build/outputs/mapping/release/mapping.txt
Run Code Online (Sandbox Code Playgroud)

我的 github 操作出现错误:

准备使用签名密钥 /usr/bin/jarsigner -keystore 对 @ android/app/build/outputs/bundle/release 进行签名密钥 android/app/build/outputs/bundle/release/signingKey.jks -storepass *** -keypass * ** android/app/build/outputs/bundle/release/app-release.aab *** jarsigner: 无法签署 jar: java.util.zip.ZipException: 无效的条目压缩大小(预期 54105 但得到 55476 字节)

看起来与答案完全相同:

jarsigner:无法签署 jar:java.util.zip.ZipException:条目压缩大小无效(预期为 463,但实际为 465 字节)

但这对我来说没有任何意义。怎么可能已经签了呢?

https://github.com/r0adkll/sign-android-release/issues/31在本期中,我发表了评论,一位开发人员同事说我的应用程序已经使用“keystone”详细信息进行了签名。

我尝试了他为我提供的步骤,这些步骤在问题中作为评论进行了描述,但是每个步骤都因不同的错误而失败。

在我的 android/app 文件夹中,我有以下文件:

  • 构建.gradle
  • 调试密钥库
  • your_key_name.keystore

构建.gradle:

https://pastebin.com/sNtZrVwD

我相信我的部分build.gradle可能有错误signingConfigs,但我完全确定我理解它是如何工作的。

Chr*_*ris 8

您需要从buildTypes { release {}}in中删除以下行build.gradle

signingConfig signingConfigs.debug