当前位置:   article > 正文

Android Studio打包apk_android studio 打包apk

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>
  • 1

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}" />
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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
	        }
	    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
//defaultConfig 需要配置flavorDimensions,否则会报错
flavorDimensions "default"
  • 1
  • 2

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"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

关于的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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/936652
推荐阅读
相关标签
  

闽ICP备14008679号