友盟在AS中利用Gradle进行多渠道打包和APK签名发布( 五 )

简介: 这篇是直接给大家上代码,希望让大家了解到友盟

apk签名发布


(1)在Android Studio的菜单栏上依次选择Build------>Generate Signed APK...


(2)创建密钥库及密钥,点击"Greate new..."按钮创建密钥库


(3)创建密钥库注意事项


这里注意一下信息项需填写哪些信息:

Key store path:密钥库文件的地址

Password/Confirm:密钥库的密码

Alias:密钥名称

Password/Confirm:密钥密码

Validity(years):密钥有效时间,一般默认25年

First and Last Name:密钥颁发者姓名

Organizational Unit:密钥颁发组织

City or Locality:城市

Country Code(XX):国家代码

(4)点击Finish完成之后,到密码输入页面


(5)点击Next按钮,并选择所有渠道或指定渠道,点击Finish按钮,进行签名打包工作任务


(6)选择build type和flavors


(7)等待所有渠道包签名打包完成后就可以发布到各大应用市场了


对了,签名还有另外一种方式哦,给大家普及一下吧


在buidle.gradle文件中添加签名配置信息以及buildTypes配置信息如下:

//签名配置

   signingConfigs {

       debug {

           keyAlias 'kits'

           keyPassword '888888'

           storeFile file("kitskeystore.jks")

           storePassword '888888'

       }

       release {

           //key别名

           keyAlias 'kits'

           //key密码

           keyPassword '888888'

           //密钥文件路径

           storeFile file("kitskeystore.jks")

           //密钥文件密码

           storePassword '888888'

       }

   }

 buildTypes {

       debug {

           // 显示Log

           buildConfigField "boolean", "LOG_DEBUG", "true"

           // apk包名称后缀,用来区分release和debug

           versionNameSuffix "-debug"

           signingConfig signingConfigs.debug

       }

       release {

           // 不显示Log

           buildConfigField "boolean", "LOG_DEBUG", "false"

           //开启混淆

           minifyEnabled true

           // 移除无用的resource文件

           shrinkResources true

           //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,指定混淆规则文件

           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

           signingConfig signingConfigs.release

       }

   }


注意一下,我这里是把debug版本和release都设置同样的配置信息,在平常的开发过程中debug配置可以使用Android Studio默认的配置信息即可


配置完成后,在Terminal命令提示符中,输入命令gradlew assembleRelease就可以了


打包结果


在打包apk文件时,还可以对文件的名称进行修改,比如加入时间信息或者svn版本到apk文件名称中,方便查找apk等


把打包的时间添加到apk名称中,具体代码操作如下:


 applicationVariants.all { variant ->

               variant.outputs.each { output ->

                   def outputFile = output.outputFile

                   if (outputFile != null && outputFile.name.endsWith('.apk')) {

                       // 输出apk名称为dt_android360_v1.0_0705114322.apk

                       def fileName = "dt_${variant.productFlavors[0].name}_v${defaultConfig.versionName}_${new Date().format("MMddhhmmss")}.apk"

                       output.outputFile = new File(outputFile.parent, fileName)

                   }

               }

           }

最后给大家送上完整版的build.gradle文件的全部内容,同时文件也加入了注释,方便大家阅读和理解


apply plugin: 'com.android.application'

android {

   //编译SDK的版本

   compileSdkVersion 23

   //编译的tools版本

   buildToolsVersion "23.0.3"

   defaultConfig {

       //当前应用包名

       applicationId "com.chenyk.androidkits"

       //支持的最低版本

       minSdkVersion 9

       //支持的目标版本

       targetSdkVersion 22

       //版本号

       versionCode 1

       //版本名

       versionName "1.0"

       // dex突破65535的限制

       multiDexEnabled true

   }

   //执行lint检查,有任何的错误或者警告提示,都会终止构建,现将其关掉。

   lintOptions {

       abortOnError false

   }

   //签名配置

   signingConfigs {

       debug {

           keyAlias 'kits'

           keyPassword '888888'

           storeFile file("kitskeystore.jks")

           storePassword '888888'

       }

       release {

           //key别名

           keyAlias 'kits'

           //key密码

           keyPassword '888888'

           //密钥文件路径

           storeFile file("kitskeystore.jks")

           //密钥文件密码

           storePassword '888888'

       }

   }

   buildTypes {

       debug {

           // 显示Log

           buildConfigField "boolean", "LOG_DEBUG", "true"

           // apk包名称后缀,用来区分release和debug

           versionNameSuffix "-debug"

           minifyEnabled false

           zipAlignEnabled false

           shrinkResources false

           signingConfig signingConfigs.debug

       }

       release {

           // 不显示Log

           buildConfigField "boolean", "LOG_DEBUG", "false"

           //开启混淆

           minifyEnabled true

           //Zipalign优化

           zipAlignEnabled true

           // 移除无用的resource文件

           shrinkResources true

           //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,指定混淆规则文件

           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

           signingConfig signingConfigs.release

           //修改输出文件的名称

           applicationVariants.all { variant ->

               variant.outputs.each { output ->

                   def outputFile = output.outputFile

                   if (outputFile != null && outputFile.name.endsWith('.apk')) {

                       // 输出apk名称为dt_android360_v1.0_0705114322.apk

                       def fileName = "dt_${variant.productFlavors[0].name}_v${defaultConfig.versionName}_${new Date().format("MMddhhmmss")}.apk"

                       output.outputFile = new File(outputFile.parent, fileName)

                   }

               }

           }

       }

   }

   //渠道Flavors,配置不同风格的app

   productFlavors {

       googleplay {}

       huawei {}

       xiaomi {}

       wandoujia {}

       baidu {}

       yingyongbao {}

       android360 {}

       uc {}

       umeng {}

       meizu{}

       //批量配置

       productFlavors.all { flavor ->

           flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]

       }

   }

}

dependencies {

   implementation fileTree(dir: 'libs', include: ['*.jar'])

   testCompile 'junit:junit:4.12'

   implementation 'com.android.support:appcompat-v7:23.4.0'

   implementation 'com.android.support:design:23.2.0'

   implementation project(':jpushkit')

   implementation project(':commkit')

   implementation project(':asynchttpkit')

   implementation project(':jskit')

   implementation project(':appkit')

   implementation project(':photokit')

   implementation project(':retrofitkit')

   implementation project(':zxingkit')

}


目录
相关文章
|
6月前
|
Java 程序员 Android开发
apk简单介绍(组成以及打包安装流程)
apk简单介绍(组成以及打包安装流程)
153 0
|
2月前
|
Linux Android开发 iOS开发
使用Kivy创建“Hello World”应用并打包成APK
使用Kivy创建“Hello World”应用并打包成APK
|
3月前
|
Java Android开发 Windows
使用keytool查看Android APK签名
本文介绍了如何使用Windows命令行工具和keytool查看APK的签名信息,并提供了使用AOSP环境中的signapk.jar工具对APK进行系统签名的方法。
353 0
使用keytool查看Android APK签名
|
4月前
uniapp 打包成 apk(原生APP-云打包)免费
uniapp 打包成 apk(原生APP-云打包)免费
269 1
|
4月前
|
Android开发 iOS开发
build.gradle 多渠道打包和用正式签名运行调试
build.gradle 多渠道打包和用正式签名运行调试
|
4月前
|
JavaScript
vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)
vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)
110 0
|
4月前
|
Android开发
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
132 0
|
5月前
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
276 0
|
6月前
|
设计模式 缓存 Java
补齐Android技能树——从AGP构建过程到APK打包过程,安卓rxjava面试
补齐Android技能树——从AGP构建过程到APK打包过程,安卓rxjava面试
|
6月前
|
JavaScript 前端开发 Android开发
Auto.js如何打包成APK文件
Auto.js如何打包成APK文件