Android Studio中的keystore

跟着导师第一次做一个使用人数达到4位数的软件,软件提供了更新,结果在更新的时候发现,有的人显示的是已安装了存在签名冲突的同名数据包,不能安装。查了下发现是keystore的问题。(直接用apk文件夹下的debug版本的apk放在服务器给他们安装和更新的)

keystore不设置的话默认使用的是C:\Users\Fly\.android下面的debug.keystore,每台电脑的都不一样,所以导致了无法安装的情况。


如何生成自己的keystore呢?这个需要用到keytool这个东西。

首先cmd进入到F:\Java\jdk1.8\bin,keytool就在这个文件夹下。

keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore

-alias android.keystore  生成的keystore别名

-keyalg RSA  加密和数字签名的算法

-validity 1000 有效天数


F:\Java\jdk1.8\bin>keytool -genkey -alias whu.keystore -keyalg RSA -validity 200
00 -keystore whu.keystore
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  Wang
您的组织单位名称是什么?
  [Unknown]:  whu
您的组织名称是什么?
  [Unknown]:  whu
您所在的城市或区域名称是什么?
  [Unknown]:  武汉市
您所在的省/市/自治区名称是什么?
  [Unknown]:  湖北省
该单位的双字母国家/地区代码是什么?
  [Unknown]:  86
CN=Wang, OU=whu, O=whu, L=武汉市, ST=湖北省, C=86是否正确?


如果没有错误就可以在bin目录下发现多了一个whu.keystore的文件。


如何查看keystore的内容呢呢

依然用keystool那个工具,keytool -list -v -keystore whu.keystore


注:默认的debug.keystore的密码是android


如何在Android Studio中设置keystore呢

在build.gradle的Android节点下加一段话:

signingConfigs{
    debug{
        storeFile file("C:\\Users\\Fly\\.android\\whu.keystore")
        storePassword "flyzy2005"
        keyAlias "whu.keystore"
        keyPassword "flyzy2005"
    }
}

也可以这样设置:
    signingConfigs {
        release {
            storeFile file("xxxxxxxxStore")
            storePassword "xxxxxxxx"
            keyAlias "timehut team"
            keyPassword "xxxxxxxx"
        }
    }


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


这样编译出来的debug版本直接用的是正式签名。


如何在Android Studio中设置app的签名呢

Build->Generate Signed APK,

选择刚才的那个keystore,然后输入名字密码,点Finish就可以在Gragle Console里面看到是否生成了relese版本的apk了。



一定要注意签名!!!!不然更新真的是问题!!!!!

你可能感兴趣的:(Android)