sign-android-release icon indicating copy to clipboard operation
sign-android-release copied to clipboard

java.io.IOException: Tag number over 30 is not supported

Open ajailani4 opened this issue 3 years ago • 1 comments

I created workflow script to create release with apk release version. And I found this error. I have tried to search this error, but I cannot found the answer. I am a little bit confused about the error message. I have tried to create new keystore, change build tools version, but it still didn't work. Here is the log.

Verification succesful
/usr/bin/cp app/build/outputs/apk/release/app-release-unsigned.apk app/build/outputs/apk/release/app-release-unsigned-aligned.apk
/usr/local/lib/android/sdk/build-tools/30.0.2/apksigner sign --ks app/build/outputs/apk/release/signingKey.jks --ks-key-alias  --ks-pass pass: --out app/build/outputs/apk/release/app-release-unsigned-signed.apk app/build/outputs/apk/release/app-release-unsigned-aligned.apk
Failed to load signer "signer #1"
java.io.IOException: Tag number over 30 is not supported
	at java.base/sun.security.util.DerValue.<init>(DerValue.java:442)
	at java.base/sun.security.util.DerValue.<init>(DerValue.java:487)
	at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2012)
	at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:221)
	at java.base/java.security.KeyStore.load(KeyStore.java:1473)
	at com.android.apksigner.SignerParams.loadKeyStoreFromFile(SignerParams.java:353)
	at com.android.apksigner.SignerParams.loadPrivateKeyAndCertsFromKeyStore(SignerParams.java:239)
	at com.android.apksigner.SignerParams.loadPrivateKeyAndCerts(SignerParams.java:181)
	at com.android.apksigner.ApkSignerTool.getSignerConfig(ApkSignerTool.java:368)
	at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:291)
	at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:84)
Error: The process '/usr/local/lib/android/sdk/build-tools/30.0.2/apksigner' failed with exit code 2

And here is my workflow script.

name: Create Release

on:
  workflow_dispatch:

jobs:
  unit-test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set Up JDK
        uses: actions/setup-java@v2
        with:
          distribution: "temurin"
          java-version: "17"

      - name: Change Wrapper Permissions
        run: chmod +x ./gradlew

      - name: Run Unit Tests
        run: ./gradlew test

  apk:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Set Up JDK
        uses: actions/setup-java@v2
        with:
          distribution: "temurin"
          java-version: "17"

      - name: Change Wrapper Permissions
        run: chmod +x ./gradlew

      - name: Build APK Release
        run: bash ./gradlew assembleRelease

      - name: Sign APK
        id: sign_apk
        uses: r0adkll/sign-android-release@v1
        with:
          releaseDirectory: app/build/outputs/apk/release
          signingKeyBase64: ${{ secrets.KEYSTORE_BASE64 }}
          alias: ${{ secrets.KEY_ALIAS }}
          keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }}
          keyPassword: ${{ secrets.KEY_PASSWORD }}
        env:
          BUILD_TOOLS_VERSION: "30.0.2"

      - name: Upload APK
        uses: actions/upload-artifact@v2
        with:
          name: apk-release
          path: ${{ steps.sign_apk.outputs.signedReleaseFile }}

  release:
    name: Create Release
    needs: apk
    runs-on: ubuntu-latest

    steps:
      - name: Get build info
        id: build_info
        run: echo "::set-output name=version-name::$(./gradlew -q printVersionName)"

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: release-${{ steps.build_info.outputs.version-name }}
          release_name: Release v${{ steps.build_info.outputs.version-name }}

      - name: Upload APK Release
        id: upload_release_asset
        uses: actions/[email protected]
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ${{ steps.sign_apk.outputs.signedReleaseFile }}
          asset_name: app-release.apk
          asset_content_type: application/zip

ajailani4 avatar Jul 05 '22 02:07 ajailani4

Ref ENV: BUILD_TOOLS_VERSION, we can override BUILD_TOOLS_VERSION to support 30 and above, but not work for me, seems it doesn't work for compileSdk >= 32 case.

https://github.com/LawnchairLauncher/lawnchair/runs/7623742327?check_suite_focus=true

Goooler avatar Aug 02 '22 02:08 Goooler

I've tried to change BUILD_TOOLS_VERSION, but it also didn't work for me. Any solution?

ajailani4 avatar Aug 07 '22 03:08 ajailani4

Try https://github.com/r0adkll/sign-android-release/issues/66#issuecomment-1159684624

Goooler avatar Aug 07 '22 03:08 Goooler

Okay, thanks. I've just knew there is a new release. I'm gonna try it out

ajailani4 avatar Aug 14 '22 12:08 ajailani4