使用gradle配置apk签名信息

  1. 通常在gradle里配置apk签名信息方式如下:
andorid{
     signingConfigs {
         release {
             storeFile file("smart_keystore.jks")
             storePassword "jjhd_@"
             keyAlias "smart"
             keyPassword "jjhd123"
         }
     }

    buildTypes {
        debug {
            signingConfig signingConfigs.release

        }

        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard.cfg'
        }

    }

     ......
}

  1. 但是这种方法,相当于把签名信息暴露在了配置文件里。可以用另一种方法把这些信息保护起来。

    步骤1: 首先在工程目录下创建一个 signinfo.properties 文件,(当然,名字可以随便取。。)
    添加属性:
     release.keyPassword=jjhd123
     release.storePassword=jjhd_@
          其它属性如keyAlias,签名文件名等也可以写在这个文件里,这里只示范两个密码。

          步骤2:在app的build.gradle文件里添加两个task

     task getReleasePassword << {
         def releaseKeyPassword = ''
         def releaseStorePassword = ''

         if(rootProject.file('signinfo.properties').exists()){
             def properties = new Properties();
             properties.load(rootProject.file('signinfo.properties').newDataInputStream())
             releaseKeyPassword = properties.getProperty('release.keyPassword')
             releaseStorePassword = properties.getProperty('release.storePassword')
         }

         android.signingConfigs.release.keyPassword = releaseKeyPassword
         android.signingConfigs.release.storePassword = releaseStorePassword
     }

     tasks.whenTaskAdded{ theTask ->
     //这里可以做过滤,只对某些渠道或类型的包签名
     //    if(theTask.name.contains("Release"))
         theTask.dependsOn "getReleasePassword"
     }

     
          至于签名配置,则可以不填了
     signingConfigs {
         release {
             storeFile file("smart_keystore.jks")
             storePassword ""
             keyAlias "smart"
             keyPassword ""
         }
     }
         
          步骤3:将signinfo.properties文件添加到.gitignore文件里。这样使用git推送工程的时候,就不会把signinfo.properties文件推送到云服务器上。

*.iml
.gradle
/local.properties
/signinfo.properties

  1. 还有一种方法,比2简单,即把签名信息放到gradle.properties文件里
     APK_SIGN_KEY_PASSWORD=jjhd123
     APK_SIGN_STORE_PASSWORD=jjhd_@
     在gradle.properties里声明的属性,可以直接在build.gradle文件里使用,如下
signingConfigs {
    release {
        keyAlias 'smart'
        keyPassword APK_SIGN_KEY_PASSWORD
        storeFile file('smart_keystore.jks')
        storePassword APK_SIGN_STORE_PASSWORD
    }
}

     但是gradle.properties要不要ignore掉呢?如果可以ignore,建议使用这种方法,毕竟比方法2简单得多。如果不能ignore,则建议用方法2。

猜你喜欢

转载自blog.csdn.net/chenrenxiang/article/details/74460432