[英]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 中將構建變體設置為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 構建系統,只需訪問:
我成功調試了已簽名的 APK,請按照以下步驟操作:-
Build.gradle
中為發布構建類型設置debuggable true
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
}
}
你可以刪除它們然后再試一次。
出於安全原因,您不能在 Android 上安裝未簽名的 apk。 因此,如果您只有未簽名的 apk:您必須對其進行簽名。 這是如何做到的: 鏈接
請注意,您可以使用自簽名證書對 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
最終對我有用的,我不知道為什么,是:
請注意,我確實嘗試通過單擊密碼末尾並通過移動鼠標選擇密碼來選擇密碼來進行多次復制。
這很奇怪,但它只能通過雙擊密碼頂部來復制它。
我也確實使用了@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.