Android Studio打包apk

打包之前建议学习:Android Studio系列之代码混淆proguardFiles

  • 普通的apk打包

Build->Generate Signed Bundle/APK

在这里插入图片描述
如果已经拥有apk密钥,则选择已经存在的密钥,然后输入密码信息即可,否则创建密钥Create new…。
在这里插入图片描述
在这里插入图片描述
记得好好保管密钥文件和密码额。

以上设置好了就点击Next,
在这里插入图片描述
此时查看Event Log窗口,查看输出信息,点击locate可以跳转到apk文件位置。
在这里插入图片描述

  • 分渠道打包
    不错,我们需要用到分渠道打包,那么我们需要解决两个问题
  1. 怎么区分各个平台的标识
  2. 怎么每次版本更新都生成几十个包、几百个包
    第一个简单,用过友盟打包的同学肯定不陌生这段代码
<meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID"></meta-data>

value里面填的就是各个平台的值,比如填写uc、yyb(应用宝)、360、baidu替换掉Channel_ID,App安装好,可以读取这个值然后传给后台,从而实现区分各个平台的安装需求。

实现:
1.在AndroidManifest.xml中增加meta-data

/*${channelName} 是对应build.gradle文件中的channelName的值
 productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [channelName: name]
    }
关于manifestPlaceholders 占位符我们稍后讲解
*/
<meta-data
            android:name="UMENG_CHANNEL"
            android:value="${channelName}" />
           

2.修改app模块下的build.gradle文件,在android空间内增加如下内容

apply plugin: 'com.android.application'

def releaseTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}

android {

	defaultConfig {
	        applicationId "com.xxx.demo2"
	        minSdkVersion rootProject.ext.minSdkVersion
	        targetSdkVersion rootProject.ext.targetSdkVersion
	        versionCode rootProject.ext.versionCode//ext属于根目录gradle的属性
	        versionName rootProject.ext.versionName
	        flavorDimensions "default"
	        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
	    }
	    
	signingConfigs {
        config {
            keyAlias 'key0'//别名
            keyPassword '123456'//密码
            //秘钥位置
            storeFile file('E:\\work\\android\\RocketBrowser\\SourceCodes\\app\\key0.jks')
            storePassword '123456'//存储密码
        }
    }

    //配置编译选项
	buildTypes {
        release {
            debuggable false
            minifyEnabled true
            shrinkResources true
            signingConfig signingConfigs.config
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug {
            debuggable true
            minifyEnabled false
            shrinkResources false
            signingConfig signingConfigs.config
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
	
	productFlavors{
        baidu{
        	manifestPlaceholders  += [PID:"PIDLKDpQaIly"]
        }
        xiaomi{
        	manifestPlaceholders  += [PID:"PIDLKDpQaIly"]
        }
        huawei{
        	manifestPlaceholders  += [PID:"PIDLKDpQaIly"]
        }
        qihu360{
        	manifestPlaceholders  += [PID:"PIDLKDpQaIly"]
        }
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [channelName: name]
    }
    
	applicationVariants.all { variant ->
	        variant.outputs.all {
	            def fileName = "Rocket_${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
	            outputFileName = fileName
	        }
	    }
}
//defaultConfig 需要配置flavorDimensions,否则会报错
flavorDimensions "default"

3.修改根目录下的build.gradle文件,提供ext属性

ext {
    ext.kotlin_version = '1.3.41'
    compileSdkVersion = 28
    supportLibVersion = '28.0.3'
    minSdkVersion = 21
    targetSdkVersion = 28
    versionCode = 15
    versionName = "1.2.1.2"
}

关于的manifestPlaceholders 可以参考 meta-data 占位符的引用
配置文件修改之后,在android studio 的Terminal窗口,执行gradlew assembleRelease,此时就会正常编译并且打包,生成的文件在app->build->outputs->apk目录下。
在这里插入图片描述
使用gradlew assembleRelease的时候可能会提示JAVA_HOME没有设置,此时我们到环境变量设置一下信息,然后重启android studio:
在这里插入图片描述
配置系统变量Path:
在这里插入图片描述

在这里插入图片描述

渠道配置也可以通过窗口设置
在这里插入图片描述

eg:修改秘钥信息:
在这里插入图片描述
eg:修改渠道信息

在这里插入图片描述

apk打包
https://blog.csdn.net/u010883308/article/details/82318956
https://www.cnblogs.com/sunjiachen/p/11457630.html
manifestPlaceholders
apk信息获取PackageManager
https://blog.csdn.net/u012532559/article/details/52805632
占位符manifestPlaceholders
https://blog.csdn.net/u010227042/article/details/83182120
apk瘦身
https://blog.csdn.net/qq_32175491/article/details/80071987

  • 11
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值