AndroidStudio签名

来源:互联网 发布:各地大数据项目 编辑:程序博客网 时间:2024/05/16 01:27

        微信等一些SDK运行时需要检查签名是否正确。所以在debug模式时也必须用正式KEY签名。

     Android Studio 上对 apk 进行签名方法无外乎两种

    1、通过任务栏上的 Build -> Generate Signed Apk 进行签名,此方法简单,但不适于批量打包签名。

    2、在 build.gradle 添加 task

  1. signingConfigs {
  2. release {
  3. storeFile file("Android")
  4. storePassword "Android"
  5. keyAlias "Android"
  6. keyPassword "Android"
  7. }
  8. debug {
  9. storeFile file("Android")
  10. storePassword "Android"
  11. keyAlias "Android"
  12. keyPassword "Android"
  13. }
  14. }

         此方法简单,也可以适用于批量打包签名,只是在上传到git 或者SVN仓库的时候遇到了问题,我们不想将我的签名信息也上传到仓库中,这时上传到 git 或SVN仓库时就需要修改我的 build.gradle 文件,这无疑又变的麻烦了。

推荐方法

在新方法中,我将签名文件独立成了一个新的文件 sign.config ,然后在 .gitignore 中将其过滤掉

sign.config

  1. {
  2. "storeFile": "C:/Users/longly/Desktop/key.jks",
  3. "storePassword": "android",
  4. "keyAlias": "android",
  5. "keyPassword": "android"
  6. }

build.gralde

  1. ...//引入GSON包
  2.  //定义解析签名类
  3. class SignInfo {
  4. public String storeFile;
  5. public String storePassword;
  6. public String keyAlias;
  7. public String keyPassword;
  8. }
  9.  
  10. ext.signinfo = null;
  11.  
  12. //解析签名文件的方法
  13. def SignInfo parseSignInfo() {
  14. if (signinfo == null) {
  15. //获取签名文件
  16. String str = GFileUtils.readFile(file("sign.config"));
  17. //Gson转换
  18. signinfo = new Gson().fromJson(str, SignInfo.class);
  19. }
  20. return signinfo;
  21. }
  22.  
  23. def getMyStoreFile() {
  24. return parseSignInfo().storeFile;
  25. }
  26.  
  27. def getMyStorePassword() {
  28. return parseSignInfo().storePassword;
  29. }
  30.  
  31. def getMyKeyAlias() {
  32. return parseSignInfo().keyAlias;
  33. }
  34.  
  35. def getMyKeyPassword() {
  36. return parseSignInfo().keyPassword;
  37. }
  38.  
  39.  
  40. android {
  41. ...
  42.  
  43. signingConfigs {
  44. release {
  45. storeFile file(getMyStoreFile())
  46. storePassword getMyStorePassword()
  47. keyAlias getMyKeyAlias()
  48. keyPassword getMyKeyPassword()
  49. }
  50. debug {
  51. storeFile file(getMyStoreFile())
  52. storePassword getMyStorePassword()
  53. keyAlias getMyKeyAlias()
  54. keyPassword getMyKeyPassword()
  55. }
  56. }
  57.  
  58. buildTypes {
  59.  
  60. debug {
  61. }
  62.  
  63. release {
  64. minifyEnabled true
  65. shrinkResources false
  66.  
  67. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  68. signingConfig signingConfigs.release
  69.  
  70. }
  71. }
  72. ...
  73. }
  74.  
  75. ...
  76.  

这样就完成了应用的签名,并且不用将签名文件上传到代码库,保证了签名的安全使用。


0 0
原创粉丝点击