*自从最初发布*
以来,我已经重新发布了帖子当我尝试运行一个刚构建的版本apk时,我收到一条错误“你当前选择的版本的apk没有签名。”这是在“编辑配置”弹出窗口中。以下是我的步骤:
那么,为什么会出现这个错误呢?生成的APK似乎有效。我已成功将其发布到Android商店(仅限alpha测试)并验证堆栈转储是否已被混淆。
我不能做的是将它(上面的步骤6)下载到我的设备。我想这没关系,因为我可以下载调试版本。
(*)Android Studio将发布apk的输出默认为更高的,可能更方便的目录。但是我发现在生成的文件分散时很难管理生成文件的一致性,所以我更喜欢在一个地方生成所有apks。
答案 0 :(得分:17)
在项目结构中设置签名配置。
运行(或调试)应用程序似乎使用使用“Buiild - > Build APK”构建的apks。 因此,如果app模块的构建变体是“release”,我们应该设置签名配置。
答案 1 :(得分:14)
答案 2 :(得分:2)
将此行添加到build.gradle中的版本{...}
signingConfig signingConfigs.config
答案 3 :(得分:0)
尝试在构建文件中添加:
Name Duration
Fred 00:00:20
John 12:39:10
Jack 03:59:20
Stacy 19:17:34
Stacy 03:39:00
John 04:20:30
Jack 00:29:17
John 03:23:50
Fred 12:17:29
答案 4 :(得分:0)
首先,如果没有,请创建一个密钥库文件。
第二将应用程序构建包文件更新为类似这样的名称,以包括签名配置。
android {
signingConfigs {
config {
keyAlias 'mykeyalias'
keyPassword 'android'
storeFile file('/Users/yourname/path/to/the/android/project/folder/android_project_folder_name/app/debug.keystore')
storePassword 'android'
}
}
buildTypes {
debug {
applicationIdSuffix = ".debug"
versionNameSuffix "-debug"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
}
第三,完成并运行该应用。
答案 5 :(得分:0)
在https://developer.android.com/studio/publish/app-signing#secure-shared-keystore中写道,您不应该在build.gradle
和VCS中保留凭据信息。因此,创建一个签名配置文件(“构建”>“生成签名的APK ...”),然后执行此操作。
在您的根目录中创建一个名为
keystore.properties
的文件 项目。该文件应包含您的签名信息,如下 如下:storePassword=myStorePassword keyPassword=mykeyPassword keyAlias=myKeyAlias storeFile=myStoreFileLocation
在模块的build.gradle文件中,添加代码以加载您的
keystore.properties
块之前的android {}
个文件。// Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. def keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. def keystoreProperties = new Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { ... }
您可以使用以下命令引用存储在
keystoreProperties
中的属性: 语法keystoreProperties['propertyName']
。修改signingConfigs
模块的build.gradle
文件的块以引用签名 使用此语法存储在keystoreProperties
中的信息。android { signingConfigs { config { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } ... }
(可选)在build.gradle
中,您可以添加:
buildTypes {
release {
...
signingConfig signingConfigs.config
}
}
现在,您可以进行签名的APK。不要忘记从VCS中排除keystore.properties
。
答案 6 :(得分:0)
在 build.gradle 中添加这段代码
buildTypes {
release {
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
debug {
minifyEnabled false
signingConfig signingConfigs.debug
}
}