zoukankan      html  css  js  c++  java
  • android studio学习----打包

    Gradle打包APP签名

    默认情况下,debug被配置成使用一个debug keystory。debug keystory使用了默认的密码和默认key及默认的key密码。debug构建类型会自动使用debug签名配置。在你的Module的build.gradle文件中添加:

        android {
            ......
            signingConfigs {
               myConfig{
                 storeFile file("yanbober.keystore")
                    storePassword "gradle"
                    keyAlias "gradle"
                    keyPassword "gradle"
                }
            }
    
           buildTypes{
             release {
                runProguard true
                zipAlignEnabled true
                // 移除无用的resource文件
                shrinkResources true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    
                signingConfig  signingConfigs.myConfig
             } 
           }
        }

    虽然经常使用项目根目录的相对路径作为keystore的路径,但是也可以使用绝对路径,尽管这并不推荐(除了自动创建出来的debug keystore)。运行gradle clean gradle build即可生成签名混淆对齐的app。

    Gradle构建Android应用多渠道包(批量打包)

    Android应用的发布需要面对各种各样的市场,我们称之为渠道。通常作为开发者我们需要知道应用是从哪个渠道下载的。这种统计信息一般常用的是百度统计或者友盟统计。

    这里举例时使用友盟统计为例说明问题。原理是Gradle的Manifest Merger。

    在AndroidManifest.xml里配置所谓的PlaceHolder。

        <meta-data
            android:name="CHANNEL"
            android:value="${CHANNEL_VALUE}" />

    在模块build.gradle文件的defaultConfig加上PlaceHolder,作用是声明CHANNEL_VALUE是可替换值的PlaceHolder,同时为其设置yanbober默认值。

        android {
            ......
    
            defaultConfig {
                ......
                manifestPlaceholders = [ CHANNEL_VALUE:"yanbober" ]
            }   
        }

    在模块的build.gradle文件里添加ProductFlavors配置。

    ProductFlavors其实就是可定义的product特性,与Manifest Merger使用就可以在一次编译过程中产生多个具有自己特性配置的版本。

    下面这个配置的作用就是为每个渠道包产生不同的CHANNEL_VALUE的值。

        android {
            ......
    
            defaultConfig {
                ......
                manifestPlaceholders = [ CHANNEL_VALUE:"yanbober" ]
            }   
            productFlavors {
                yanbober{}
                wandoujia{}
                xiaomi{}
                baidu{}
            }
            productFlavors.all { flavor ->
                flavor.manifestPlaceholders = [ CHANNEL_VALUE:name ]
            }
        }

    批量生成多渠道包:进入工程目录下运行gradlew assembleRelease。可以看到编译一共产生了4个apk,分别对应在productFlavors段定义的4个渠道。反编译打开AndroidManifest.xml就会发现CHANNEL这一段的配置已经被修改。

    生成单个渠道包:打开AS的Gradle Tasks面板模块有很多任务,直接双击对应的耽搁渠道任务生成对应的apk。

    用命令行单独生成xiaomi渠道使用gradlew assemblexiaomiRelease就好了。

  • 相关阅读:
    May 9, 17:3020:00, 1479, "Concentrationcompactness/Rigidity method" lecture 4 by Yang Lan
    May 21, 10:0011:00, 1303, "Capacity, Primeter and ADMmass " by Jie Xiao
    课程期末安排
    问题: Schrodinger方程的广义Strichartz估计
    May 21, 11:1012:10 "On small solutions for nonlinear wave equations in exterior domains " by Makoto NAKAMURA
    SQL Server2019数据库备份与还原脚本,数据库可批量备份
    记一次 IIS 站点配置文件备份和还原,物理路径文件批量备份
    从网上收集的一些图片方面的操作
    android获取本地IP
    java利用httpconnect向服务器发送信息与接收回馈信息
  • 原文地址:https://www.cnblogs.com/wust221/p/5427017.html
Copyright © 2011-2022 走看看