簡體   English   中英

app-release-unsigned.apk 未簽名

[英]app-release-unsigned.apk is not signed

我在 github 上下載了一個 Android 應用程序的 zip 文件,我正在嘗試運行它,但我收到了一個帶有此消息的對話框

app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.

我正在使用 Android Studio。 我應該做些什么?

如果有人想使用 Android Studio 調試發布版本,請按照以下步驟操作:

  1. 將構建變體設置為發布模式。

在此處輸入圖片說明

  1. 右鍵單擊左側導航窗格中的應用程序,單擊“打開模塊設置”

  2. 轉到簽名選項卡。 添加簽名配置並填寫信息。 也選擇您的鑰匙串。

在此處輸入圖片說明

  1. 轉到構建類型選項卡。 選擇釋放模式並設置:

- 可調試為true

- 將 Config 簽名到config (您剛剛創建的那個)。

在此處輸入圖片說明

同步你的gradle。 享受!

確保在 Android Studio 中將構建變體設置為debug (而不是release )(檢查構建變體面板)。

如果設置為調試,它應該使用自動生成的調試密鑰庫自動簽署應用程序,而無需編輯構建腳本。

但是,您需要為發布創建和配置特定的密鑰庫。

官方文檔,涵蓋調試和發布模式:https ://developer.android.com/tools/publishing/app-signing.html

始終使用 build.gradle DSL 腳本對您的構建進行簽名,如下所示:

    android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
}

如果您想了解更多與 Android Studio 相關的 Gradle 構建系統,只需訪問:

Gradle 插件用戶指南

如果有人想使用 Android Studio 3.5 調試和發布單獨的構建變體,請按照以下步驟操作: 1. 將構建變體設置為發布模式。

構建變體

  1. 轉到文件>>項目結構
  2. 選擇模塊,然后簽名配置
  3. 單擊簽名配置下的加號圖標

簽名配置

  1. 選擇發布部分並提供您的發布應用信息,然后應用和確定。

登入

  1. 轉到您的應用程序級別build.gradle並更改您的buildTypes > "release" 部分,如下面的屏幕截圖。

最終的

然后運行你的項目。 快樂編碼。

我成功調試了已簽名的 APK,請按照以下步驟操作:-

  1. 在“Build Variant”工具欄中選擇“release”版本
  2. 在模塊的Build.gradle中為發布構建類型設置debuggable true
  3. 轉到文件->項目結構->在簽名選項卡下填寫所有信息->在風味選項卡下->選擇您剛剛創建的簽名配置
  4. 設置斷點
  5. 在調試模式下運行應用程序

signingConfigs 應該在 buildTypes 之前

signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }

對於 gradle Kotlin dsl

signingConfigs {
    create("releaseConfig") {
        storeFile = file("your keystore file path")
        storePassword = "storePassword"
        keyAlias = "keyAlias"
        keyPassword = "keyPassword"
    }
}
buildTypes {
    getByName("release") {
        signingConfig = signingConfigs.getByName("releaseConfig")
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
    }
}

如果你想在調試模式下運行應用程序

1)查看左側底部,在收藏夾上方有構建變體

2) 單擊構建變體。 點擊發布並選擇調試

它工作完美!

您下載的應用項目可能在 build.gradle 文件中包含簽名信息。 如果你看到這樣的代碼:

buildTypes {
    debug {
        signingConfig signingConfigs.release
    }
    release {
        signingConfig signingConfigs.release
    }
}

你可以刪除它們然后再試一次。

我的問題是通過按照 Stéphane 的建議更改構建變體來解決的,如果有人像我一樣努力尋找“構建變體”,這里有一個截圖,您可以在其中找到它。

在此處輸入圖片說明

出於安全原因,您不能在 Android 上安裝未簽名的 apk。 因此,如果您只有未簽名的 apk:您必須對其進行簽名。 這是如何做到的: 鏈接

請注意,您可以使用自簽名證書對 apk 進行簽名。

另一種選擇可以是:

  • 下載已簽名的 apk(如果可用)。
  • 下載源代碼,編譯它們(使用 Android-Studio 或 gradle 或 ...)。 它將生成多個 apk,其中一個將使用您的調試密鑰進行簽名(因此您將能夠安裝它)

我是如何解決這個問題的

發生此錯誤是因為您已將構建變體設置為發布模式。 將其設置為構建模式並再次運行項目。

如果你想在發布模式下運行,只需按照我們發布應用程序時通常的方式生成一個簽名的apk

在工具窗口欄中選擇 Build Variants Change Build Variant from Release to Debug

我的解決方案是將我的簽名配置的名稱從默認的“配置”更改為“調試”。 為了驗證,我將其更改為其他一些隨機名稱並再次出現錯誤,然后將其更改回“調試”並且錯誤消失了。 因此,雖然它看起來很人為,而且我傾向於不相信這是整個故事,但請嘗試使用此解決方案。

我也出現這個問題,下面是我的代碼

        storeFile file(properties.getProperty("filepath"))
        storePassword properties.getProperty("keypassword")
        keyAlias properties.getProperty("keyAlias")
        keyPassword properties.getProperty("keypassword")

原因是屬性名錯誤,應該是keyPassword而不是keypassword

最終對我有用的,我不知道為什么,是:

  • 去了 LastPass(我用來保存所有密碼的服務)
  • 通過將光標放在密碼頂部並雙擊來選擇我的密碼
  • 選擇后我按 cmd C 復制
  • 去安卓學習和cmd V粘貼

請注意,我確實嘗試通過單擊密碼末尾並通過移動鼠標選擇密碼來選擇密碼來進行多次復制。

這很奇怪,但它只能通過雙擊密碼頂部來復制它。

我也確實使用了@NightFury 在這篇文章中解釋的 Open Module Settings > Signing... 方法。

在 build.gradel 文件中添加以下代碼行對我有用,將它們添加到 release 下面的 buildTypes 塊下,如圖所示

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM