android studioandroid生成的apk好大在哪

Android Studio编译输出apk文件修改文件名 - 简书
Android Studio编译输出apk文件修改文件名
新建一个Android工程,默认编译会生成一个叫app-debug.apk或者叫app-release.apk文件,说实话,单纯看文件名,我都不到任何有用的信息,我希望输出的文件名是这样的:
模块名-渠道名-版本号-版本名称-包名-编译时间.apk
当然,这只是举一个例子,可能不需要那么长,具体需要什么就加什么。
通过build.gradle来做,具体看代码
apply plugin: 'com.android.application'
def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.djk.myapplication"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
buildTypes {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
productFlavors{
android.applicationVariants.all { variant -&
variant.outputs.each { output -&
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
//这里修改apk文件名
def fileName = "demo_${variant.productFlavors[0].name}-${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime() }.apk"
output.outputFile = new File(outputFile.parent, fileName)
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
好了,是不是看着好很多。
/dongjunkun
http://blo...&nbsp&#8250&nbsp&nbsp&#8250&nbsp
Android 项目利用 Android Studio 和 Gradle 打包多版本APK
原文 给力乐: &在项目开发过程中,经常会有需要打包不同版本的 APK 的需求。
比如 debug版,release版,dev版等等。
有时候不同的版本中使用到的不同的服务端api域名也不相同。
比如 ,,等等。不同的版本对应了不同的 api 域名,还可能对应不同的 icon 等。如果每次都在打包前修改我们都手动来修改,这样实在是不够方便。但如果我们使用了 Android Studio 和 Gradle,这个麻烦就可以轻松省去。具体方式如下:
在 Android Studio 中打开 build.gradle(Module中)的 android 节点下添加如下代码buildTypes&{
&&&&//这里的名字自定义,不要求大小写
&&&&release{
&&&&&&&&//&这里是在&applicationId&中添加了一个后缀。所以『.』要加上
&&&&&&&&applicationIdSuffix&&.release&&
&&&&&&&&//&这里的作用是选择是否混淆代码
&&&&&&&&minifyEnabled&false
&&&&&&&&proguardFiles&getDefaultProguardFile('proguard-android.txt'),&'proguard-rules.pro'
&&&&&&&&applicationIdSuffix&&.dev&
&&&&&&&&minifyEnabled&false
&&&&&&&&proguardFiles&getDefaultProguardFile('proguard-android.txt'),&'proguard-rules.pro'
//&这里是为了不同过的版本设置一些特殊的参数,并不直接和&buildType&关联。
//例如:使用&buildType&中的&dev&版本,也可以使用&flavors_release&里面设置的自定义参数。这需要自己按照需求制定。
productFlavors{
//自定义名字不过不能和上面buildType中相同,不然Gradle编译会不通过。在这里使用了『flavors_』前缀以便区分。
&&&&flavors_release{
&&&&//&manifestPlaceholders中写到的『str』,『package_name』不支持用大写,否则Gradle编译会不通过。
&&&&//&这里所设置的变量可以直接使用在『AndroidManifest.xml』中,使用方式为:${package_name}
&&&&//&android:label=&${package_name}&&
&&&&&&&&manifestPlaceholders&=&[str:&releaseStr&,package_name:&com.sunhz.mvptest.release&]
&&&&&&&&//&这里的参数是为了在&java&代码中使用,具体的使用方式为:context.getResources().getString(R.string.strKey);
&&&&&&&&resValue(&string&&,&&strKey&,&releaseStrValue&)
&&&&flavors_dev{
&&&&&&&&manifestPlaceholders&=&[str:&devStr&,package_name:&com.sunhz.mvptest.dev&]
&&&&&&&&resValue(&string&&,&&strKey&,&devStrValue&)
}上面设置完成后,我们要在哪里使用它?使用方式如下:
在 Android Studio 的工具栏中,找到『Build』项,找到『Generate
Signed APK…』,如下图。选择 Module -& 创建 APK key,或者输入 APK key密码 -& 关键来了!如下图。在『BuildType』处,选择我们在 build.gradle 中设置的两个 BuildType,分别是releas,dev,debug。其中『debug』为 Android Studio 自带的。在『Flavors』处,选择我们在 build.gradle 中设置的两个Flavors,以方便直接使用定义在 build.gradle 中自定义的参数。所以! 上面我有提到说,buildType 和 Flavors 并没有直接的联系。
他们可以根据用户需求互相配合使用。如上图,BuildType 选择了 release,但 Flavors 选择的却是 flavors_dev。到此基本的使用就全部说完了。这里有一个问题,打出来的不同版本的包,全部都能够在同一部手机上安装,且能够将两个包全都发布到 Google 的市场上去这是为什么呢?这里就要提到在 BuildType
中我们所设置的『applicationIdSuffix』属性了,按照这个属性的字面翻译为:『applicationId
的后缀』,那这里又来了一个问题,『applicationId』是什么?
其实这个『applicationId』属性,实际上在项目创建完成后就存在于 build.gradle 中。在 android 节点下的
defaultConfig 节点中。而且默认的 applicationId 和 AndroidManifest.xml 中的 package
属性相同。如下图:我们能够看到,这两个属性的默认值是相同的。applicationId 和 packageName 它们是什么关系?默认创建项目后,两者相同。如果需要根据不同的需求构建不同版本的APK,这时我们通过设置『applicationIdSuffix』可以做到。这里有一个值得注意的现象。举个例子,我们在打包时使用了 dev 类型,将打包出来的 APK 软件安装到手机中。使用如下代码,获取我们手机上所有程序的packageName。PackageManager&packageManager&=&mContext.getPackageManager();
List&PackageInfo&&packageInfoList&=&packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
List&String&&packageNameList&=&new&ArrayList&String&();
for&(PackageInfo&packageInfo&:&packageInfoList)&{
&&&&packageNameList.add(packageInfo.packageName);
}我们打印出来的包名信息中,会出现 com.spencer_dev.test.dev &。并没有出现 com.spencer_dev.test 。但是!
如果通过反编译工具,将 APK 包进行反编译直接查看源代码,在 java 代码所在的 src 目录中的包名,还和我们设置的一样,为
com.spencer_dev.test 。可 AndroidManifest.xml 中的 package 和 BuildConfig 类中的
APPLICATION_ID 已经变成了 com.spencer_dev.test.dev 。applicationId 和 packageName 它们各自代表什么?按照上面的结果来说, package 代表了 java 代码中的包名。 applicationId
代表了应用中的唯一标识。和应用签名一起用来区别和其他应用不同。我想这也就是为什么 Google 市场能够允许相同应用不同
applicationId 的原因。
上一篇: 最近又有大片上映了,前几天刚看完《末日崩塌》,《侏罗纪世界》又来了,对于大片迷来说是一种福利,所以这几天手机上装了各种电影票团购软件,没办法,同样的电影同样的电影院同样的座位,但是不同的团购软件,价格就不一样。ok,言归正传 在淘宝电影上面有
下一篇: Bilibili for Android 的 Redesign 文章正在路上,没有那么快完成,那么我想先写一篇文章来谈谈我强调了很多遍的“沉浸模式”问题。 我都不敢相信,现在 2015 年快过一半了,还有不少所谓 Android 爱好者分不清“沉浸模式”和“透明栏”之间的区别。 那好,关于Android studio打包发布,以及Android签名的获取
时间: 13:02:34
&&&& 阅读:27587
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&这个感觉挺重要的,尤其是签名的获取,因为写到百度地图的使用了,所以感觉这个应该写在前面,还有就是微信也需要签名
首先说一下Android studio如何进行打包:
博主测试新建了一个packaging的工程
还是先看一下目录结构,因为打包的时候和Eclipse不一样,可以自选的,最好不要用默认的目录结构
好,下面来看看如何进行打包
签名文件所要放的位置,帐号密码,以及别名
这里说一下,签名最好放在工程的根目录下,一个人开发的话,或者不是很保密的,其他的按照实际情况来
这里因为是新建的key,不能进行第二个选项
下面附图说明
没有的话是ok选项是不能点击的
点击create,会出现如下界面,英语不难,大家按照相应的填写就可以了
这里路径选择按照上面说的根目录就可以了
as貌似默认的是jks格式的,但是Eclipse貌似默认的keystore格式的,只是加密方式不一样,其他的不影响
确认后返回原来界面相应的都会进行自动补充
这里为了以后简便可以选择记录密码
到了这我要着重说一下,上面是apk包存放的位置,第二个是打包方式,第三个博主没用过
这个是默认的目录结构,大家可以对照第一张图片,就知道这个目录结构在哪了,它在as中是会进行加载的,不会隐藏,如果少的话还好,要是多的话这个会占目录结构的很大一部分,所以最好不要选择这个目录结构,那么选在哪呢?
其实as早就替你想到了,而且目录机构都给你构建好了
直接选在apk这就可以可,至于打包方式大家就按照默认的,release就可以,下面说为什么
好,选择ok,继续下一步,看出现的结果
这里出现了两个安装包,直接就是英文翻译就可以,一个是签名的一个是未签名的,未签名的话打包是不能进行使用的,然后就是说上面选择打包方式release,为什么不选择debug,debug默认不签名,而且对一些文件图片的格式校验比较松,还有就是一些string.xml文件或其他xml文件命名校验不是很严格,不必进行强制编译
反过来,看一下现在的目录结构
因为签名过了,并且博主记录了密码,以后打包就会方便了,来看看as比ec强大的地方
这里面很全,clean,debug,release等等,以后包多的话就知道好处了,现在就一个,但是相对也是比较方便的
双击release,打包,build successful打包完成
下面看一下如何获取签名,博主为了方便,把签名文件放在了根目录下了
这里要输入密码,而且没有光标显示
所有签名信息都可以查到了
标签:&&&&&&&&&&&&&&&原文:http://blog.csdn.net/qq_/article/details/
明知AlphaGo变得无法战胜 柯洁为何还迎难而上?
王思聪会帖挖苦柯洁:当时的嚣张劲去哪了
柯洁复盘与AlphaGo首战:它已经像是“围棋上帝”
柯洁:和AlphaGo对战,是我的荣幸
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!&打包发布APK安装包
打包发布APK安装包
视频太卡?试试切换线路
本课时主要介绍如果新建一个Android Studio项目。并且设置相关的配置及如何运行项目。
本课时主要介绍如何创建一个原生模拟器并运行,以及第三方模拟器 genymotion 的安装配置运行。
本课时主要介绍日常如何更新 IDE 及更新管理 sdk 操作
本课时主要介绍如何导入一个 Android Studio 结构的工程以及如何导入历史用 eclipse 开发的工程
本课时主要介绍如何在 Android Studio 中进行项目调试
本课时主要介绍如何新建 keystore 及如何将开发好的工程打包成 APK 安装包
只有成为VIP会员才能提问&回复,快吧!如果你还没有账号你可以一个账号。
添加新技术问题
课程 [打包发布APK安装包]
中已存在问题
添加新技术问题
问题描述越详细,被解答的速度越快
有新回答时请邮件提醒我
着急,拜托快点
不急,慢慢解决
关联课程 [打包发布APK安装包]
服务热线:400-678-8266

我要回帖

更多关于 appdebugapk 的文章

 

随机推荐