AndroidStudio-Gradle定制多签名多渠道打包

前言:

       前段时间写一个项目,一套软件为不同的客户服务,每一个客户都对应一个软件,有不同软件名字logo,欢迎页面,服务器信息等,但是除这些之外的页面都是一样的.刚开始的想法是为每一个客户都建立一个Git分支,再建一个开发的分支用来合并新的开发的修复代码.打包的时候,我就傻了,每一个就要分别打包,特别特别麻烦.因为客户的数量也是不少的,每一次更新打包都需要花费几个小时,80%都是在等待AndroidStudio编译打包的进度条,真是呵呵了

    后来发现的gradle的多渠道打包功能,只要配置好ProductFlavor,一切都是那么简单~内心是欢呼雀跃的,不说废话了,开始进入正题~


需求:

 这里我们需要明白需求:

   一个项目打包成多个具有不同签名,不同包名,Logo,软件名称的apk

    而这些东西分别位于Android项目文件目录的哪些地方?

 

    1.包名-------------------AndroidManifest.xml

    2.软件名称-------------res/values/string.xml/app_name

    3.软件logo-------------res/mipmap--XXXX

    4.签名文件-------------这个因为我一般是用AndroidStudio -bulid-Generate Signed apk打包的时候调用签名文件

   我们怎么能把这些东西一一对应起来呢,答案是----gradle内配置,具体怎么配置,我们下面分别来讲.

   

一 .包名配置

     使用alpplicationId替代包名

   这里我们使用productFlavors配置,这是是专门用来定制每个apk的各种信息的,这里我们演示就是定义了包名 applicationId.这个名字可以自定义.

    这个名字我们在这里定义,后面会用到.


    //多包名设置
    productFlavors {

        flavor_naruto {
            applicationId = "com.dr.naruto"
        }
        flavor_kakaxi {
            applicationId = "com.dr.kakaxi"
        }
        flavor_zilaiye {
            applicationId = "com.dr.zilaiye"
        }
        flavor_sidai {
            applicationId = "com.dr.sidai"
        }

    }

二.资源文件的配置

     1.在main文件夹所在的目录,建立和main文件夹同级的文件夹,名称就是我们上一步productFlavors中定义的,在这里我们就用上了,例如建一个flavor_kakaxi

     2.要替换app_name和ic_launcher,在定义好的flavor_kakaxi文件夹中,构建这两个文件的目录结构,一定要保证和main文件夹中是相同的,因为编译apk的时候,就是用flavor_kakaxi替换main来找这个文件,所以要保证路径相同

      main\res\mipmap\ic_launcher

      flavor_kakaxi\res\mipmap\ic_launcher


     AndroidStudio-Gradle定制多签名多渠道打包_第1张图片

    



三.签名文件的配置

      1.使用AndroidStudio的自带的签名方式

          (1)创建或者选择已有的签名文件


               AndroidStudio-Gradle定制多签名多渠道打包_第2张图片

 

             (2)选择要打包的ProductFlavor,就是我们在第一步中配置好的名称,对应的是不同的包名


           AndroidStudio-Gradle定制多签名多渠道打包_第3张图片



       2.将签名配置到build.gradle

          在build.gradle中定义SignConfigs,里面配置各个签名信息


   //签名配置
    signingConfigs {

        //签名1
        dr_sign1 {
            keyAlias 'dr'//别名
            keyPassword 'aaaaaa'//别名密码
            storeFile file('D:/Android/dr_sign1.jks')//签名文件路径
            storePassword 'aaaaaa'//签名密码
        }
        //签名2
        dr_sign2 {
            keyAlias 'dr'//别名
            keyPassword 'bbbbbb'//别名密码
            storeFile file('D:/Android/dr_sign2.jks')//签名文件路径
            storePassword 'bbbbbb'//签名密码
        }

        //...你可以配置多个

    }

四.定义打包apk的类型参数,将签名信息配置在其中


         在build.gradle的BulidType配置打包的参数


    //打包设置
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        dr_sign1_buildType {
            debuggable false
            jniDebuggable false
            minifyEnabled false
            zipAlignEnabled true
            signingConfig signingConfigs.dr_sign1//配置签名文件

        }
        dr_sign2_buildType {
            debuggable false
            jniDebuggable false
            minifyEnabled false
            zipAlignEnabled true
            signingConfig signingConfigs.dr_sign2//配置签名文件

        }
    }
  

五.选择打包类型,开始打包

    在gradle窗口(一般在AndroidStudio 的窗体右侧)选择想要打包的签名文件


   AndroidStudio-Gradle定制多签名多渠道打包_第4张图片


    附上源码:http://download.csdn.net/detail/qq_32452623/9666166


 说明

   每一次解决问题都要感谢一下那些分享知识,技术和经验的万能的网友们~

   参考文章:Gradle实现Android多渠道定制化打包

   参考文章:Android Studio  使用Gradle打包版本的Apk-bulidTypes和ProductFlavors 
     参考文章:Gradle实现Android多渠道定制化打包


  


你可能感兴趣的:(AndroidStudio)