flutter-android签名、打包、获取SHA1

2,125 阅读2分钟

flutter 在开发过程中,难免会碰到自己签名打包的情况,即使自己不是干 android 的情况,但是由于流程较为简单,我们也要学会,应对特殊情况,当然只有一个开发者的更得会了

查看包名

进入到 android/app/src/main/ 中即可看到 AndroidManifest.xml 文件,这里就可以看到包名,app名字等信息,当然权限也在这里面,和ios的差不多

image.png

生成签名文件

签名配置详情(补充较为完整)

//执行下面命令生成 其中 ~/key.jks 就是生成秘钥的路径和文件
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

//有些人习惯改成 apk.keystore、debug.keystore也不影响,只是一个名字而已
keytool -genkey -v -keystore ~/debug.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias key

执行后如下所示:

image.png

就这样就生成到我们的个人文件夹中了

查看SH1发布信息

有些地方会用到我们发布的SH1 信息,例如:百度地图api,我们就可以通过上面获取的 keystore(jks) 文件获取:

keytool -list -v -keystore debug.keystore

如下所示, md5、sha等都有

image.png

打包 android apk

在我们的 android 文件夹中有一个 local.properties(替换了以前的key.properties),我们可以通过,给该文件增加我们的 签名文件信息,以便于打包

需要添加下面几行信息,这里面的信息就是我们前面设置的

storePassword = 123456
keyPassword = 123456
keyAlias = key
storeFile = /Users/shuaishuai/key.jks //这里改为自己生成的 key.jks 或 debug.keystore目录

设置之后如下所示

image.png

然后进入到下面目录/android/app/build.gradle进一步设置,可以看到里面默认使用的是 local.properties,我们继续使用即可

image.png

然后,把 buildTypes 代码块替换为下面代码即可:

//多个签名文件可以新增debug,和release配置一样
signingConfigs {
    release {
        keyAlias localProperties['keyAlias']
        keyPassword localProperties['keyPassword']
        storeFile localProperties['storeFile'] ? file(localProperties['storeFile']) : null
        storePassword localProperties['storePassword']
    }
}

buildTypes {
    //多打一个debug包,可以用debug的签名文件,也可以不用
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        signingConfig signingConfigs.release
    }
}

然后执行下面命令打包即可,在 flutter 目录执行

flutter build apk

打包成功后的 apk 就在下面文件夹中 /build/app/outputs/flutter-apk/app-release.apk

前面的那个签名等文件,没有也可以打包哈(至少我这边打包成功了),测试随便用,另外签名文件能作为我们应用的凭证,一旦确认最好就不换了