Android Studio Gradle任务列表异常,无法获取SHA代码求助
解决Gradle任务列表恢复及SHA指纹获取问题
一、恢复Gradle任务列表至正常状态
- 打开Android Studio,进入设置面板(Windows/Linux:
File > Settings;Mac:Android Studio > Settings) - 导航到
Build, Execution, Deployment > Build Tools > Gradle - 取消勾选**Configure all Gradle tasks during Gradle Sync (this can make Gradle Sync slower)**选项
- 点击
Apply保存设置,再执行Sync Project with Gradle Files,同步完成后任务列表即可恢复正常
二、获取SHA-1/MD5指纹的可靠方法
如果之前的方式无法获取SHA指纹,可尝试以下几种方案:
方法1:通过Gradle任务直接生成
- 打开右侧
Gradle面板(未显示的话,点击View > Tool Windows > Gradle) - 展开项目节点 >
Tasks > android,找到signingReport任务 - 双击运行该任务,底部
Run窗口会输出debug、release版本的SHA-1、MD5指纹
方法2:通过keytool命令行获取
- 定位到Java JDK的
bin目录(示例路径:Windows为C:\Program Files\Java\jdkx.x.x_x\bin,Mac为/Library/Java/JavaVirtualMachines/jdkx.x.x.jdk/Contents/Home/bin) - 在该目录打开终端/命令提示符,执行命令:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 执行后即可看到debug版本的SHA指纹;若需release版本,替换对应的keystore路径、别名和密码即可
方法3:通过build.gradle代码输出指纹
在app模块的build.gradle(Module级别)的android块中添加以下代码:
android { // 保留原有配置... signingConfigs { debug { storeFile file('~/.android/debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } } applicationVariants.all { variant -> variant.outputs.each { output -> println("${variant.name} SHA-1: ${variant.signingConfig?.storeFile?.let { getSha1(it, variant.signingConfig) }}") } } } def getSha1(File keystore, signingConfig) { def stdout = new ByteArrayOutputStream() exec { commandLine 'keytool', '-list', '-v', '-keystore', keystore.absolutePath, '-alias', signingConfig.keyAlias, '-storepass', signingConfig.storePassword, '-keypass', signingConfig.keyPassword standardOutput = stdout } def output = stdout.toString() return output.split('SHA1: ')[1].split('\n')[0].trim() }
同步Gradle后,运行任意Gradle任务,Build窗口会输出对应变体的SHA指纹
内容的提问来源于stack exchange,提问作者MuySup
相关产品推荐
相关产品推荐

