Android Studio 打包APK(详细版)

简介: Android Studio 打包APK(详细版)

Android Studio 打包APK



前言


  做Android开发肯定对APK不陌生,你现在Android手机上所有的应用都是apk,只不过分为系统自带和第三方。


正文


Android打包APK在开发中是必不可少的一个环节,相信你可能已经会了,或者在别的博客中看到过了,但是其实还有一些细节是你所不知道的。


一、新建项目


  本着实践的态度,新建一个GenerateAPK项目。


20210107095925701.png


创建完成之后,你可以运行一下,运行在真机或者虚拟机都可以。


二、生成Debug和Release包


20210107100724180.png


当你看到这个页面的时候,这个APK就已经安装在这个模拟器上面了,而这个APK就是debug版本的,但是它是运行时生成的,不是打包生成的。


怎么查看这个APK呢?


把当前项目切换成Project,然后找到build文件夹。只要你的项目运行了,就会生成这个文件夹,然后你可以通过下图


20210107101006112.png


此时你可以将这个app-debug.apk复制,然后通过QQ发送到你自己的手机上,然后你在手机上下载上下载试着安装一下,你看能不能行。

当然是不行的,只有release版本的APK才能安装在自己的手机上。


20210107101549217.png


从这个图片上来看,你已经看到不能安装的原因了。


通过签名jks来试试,点击导航栏的Build→Generate Signed Bundle / APK…

20210107102925133.png

20210107105440955.png


Next


20210107105548195.png


这里需要一个商店的key,因为没有,所以创建一个新的,点击Create new…


20210107103419156.png


首先指明生成的jks文件的路径,点击这个文件夹图标。


20210107103618646.png


我个人习惯放在D盘的APK目录下,然后命名jks的名称为GenerateAPK,

然后点击OK。


20210107104455226.png


然后输入这个jks和别名的一些相关信息,上方的商店密码和别名密码可以设置为一样的,这样便于记忆,只不过安全系数就降低了。我上面设置的是123456,信息都设置好了之后,点击OK。


20210107104717889.png


如果出现这个弹窗,你可以不用担心,点击OK。


20210107105659545.png


这里勾选上记住密码。


20210107105724630.png


选择release,下面两个都勾选上,然后点击Finish。


20210107105830633.png


当你看到屏幕的右下角出现这个提示时,说明你的APK已经生成了,你可以在你的app下看到多了一个release的文件夹,里面就是app-release.apk包,下面你可以复制发到手机上,然后下载,手机上是可以安装的。


20210107110000522.png


手机上安装成功。


20210107110216615.png


下面通过秘钥jks来生成debug包试试看。


20210107110330727.png


点击Finish。


20210107110417277.png


把这个发到你的手机上。你会发现也是可以安装的,这是为什么呢?

那个这种方式生成的包在实际开发中起到什么作用呢?


在实际开发中,如果是自己测试,那么通过就直接用usb安装在手机上,此时就是文中第一种情况。


而如果当项目要上线或者上应用市场时,就需要用jks来生成release包上传到应用市场上。


实际开发中还有一点就是你的应用自己自己测试的并不是很到位,因此产品和测试会需要让你打包给他们做进一步测试,此时你可以给通过jks生成的debug包,也可以给release包,但是通常是debug包。


我想现在你已经明白了这些包的含义了。


三、打包的细节优化


从上面的操作中,你已经知道了一些内容,而在基本的开发中也是会用到的,而为了更好区别不同的包名,常用会给apk进行一个重命名,让你一眼就知道这个apk是哪个项目的。


① 自定义Apk名字


修改app下的build.gradle

  // 自定义打包名称
    android.applicationVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "GenerateAPK.apk"
        }
    }


添加位置如下图所示,在android{}闭包中


20210107144349271.png


添加后记得Sync一下,然后重新打一个包,这里我将打包的路径修改到了D盘,如下图所示


20210107112558838.png


点击Finish完后打包。


20210107144553210.png


包的确是生成了,名字也不再是app-release.apk。


然后你再打一个debug的包看看,名字是否有更改。


20210107144735310.png

20210107144752891.png


很明显,的确是改变了,但是有一个问题,那就是如果没有外面的这个目录我根本不知道哪个apk是debug和release的。因此我还需要在打包后知道当前的包是什么类型的。


② 增加构建类型


只要修改这一句话就可以了。


  outputFileName = "GenerateAPK_${buildType.name}.apk"


buildType.name就表示构建的类型,使用$来修饰。下面依次打一个release和debug包看看。


202101071455031.png


20210107145523550.png


现在你可以轻松的分辨版本了,但是这就够了吗?实际的开发中其实对于Android的版本也是有关系,比如你要升级迭代APK,那么你的版本就要比之前的版本要高。而目前这个APK上并不能看出来当前是多少版本,因此这也是需要显示的。


③ 增加版本名


再修改一下


  outputFileName = "GenerateAPK_${buildType.name}_v${versionName}.apk"


versionName就是你的版本名称,v就表示版本,现在版本名称是1.0。


20210107150001440.png


那么现在打个包试一下看是不是会多一个1.0。


20210107150123320.png


2021010715021142.png

假如要升级一个版本,那么你改成2.0,再打包。


20210107150302456.png


我这里只是简单演示一下,因此没有对版本号进行修改。


20210107150429768.png


而开发中可能会出现一天搭了多个包,比如你一小时前打的包和一小时后打的包,里面修改了不同的内容。因此还需要再报名上体现这个打包的日期和时间。


④ 增加日期时间


在android{}闭包外增加


//构建时间
def generateTime() {
    return new Date().format("yyyy_MM_dd_HH_mm_ss")
}

20210107151721352.png


这里我选择显示构建的年月日时分秒。


  outputFileName = "GenerateAPK_${buildType.name}_v${versionName}_${generateTime()}.apk"


下面打包看一下。


20210107151316140.png


这样apk的名字就有点长了,不过你就能从这个apk的名字了解到很多信息:所属项目、构建类型、应用版本、构建日期时间。这样你给测试去测就少了很多不必要的麻烦,降低扯皮和撕逼的概率。而你只需要简单配置一下即可,何乐而不为呢?


总结


 这些内容是在开发中常见的,因此记录下来。希望能对您有所帮助,山高水长,后会有期~

相关文章
|
11月前
|
开发工具 Android开发 iOS开发
如何在Android Studio中配置Flutter环境?
如何在Android Studio中配置Flutter环境?
2612 160
|
6月前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
502 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
10月前
|
Android开发 Windows
Android studio 报错Connect to 127.0.0.1:8888 [/127.0.0.1] failed: Connection refused: connect(已解决)
这是一篇关于解决Android Studio报错“Connect to 127.0.0.1:8888 failed: Connection refused”的文章。问题通常因系统代理设置被Android Studio自动保存导致。解决方法是找到系统中Android Studio使用的gradle.properties文件(位于Windows的C:\Users\你的电脑用户名\.gradle或Mac的/Users/.{你的用户目录}/.gradle),删除或注释掉多余的代理配置后保存并重新Sync项目。希望此经验能帮助快速解决同类问题!
1821 36
|
10月前
|
Java Android开发
Android studio中build.gradle文件简单介绍
本文解析了Android项目中build.gradle文件的作用,包括jcenter仓库配置、模块类型定义、包名设置及依赖管理,涵盖本地、库和远程依赖的区别。
856 19
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
1445 83
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
807 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
前端开发 Java 编译器
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
399 36
当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
418 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
Android开发 开发者
Android Split APK介绍
【2月更文挑战第5天】
|
XML API Android开发
android S 上 安装apk出现android.os.FileUriExposedException
android S 上 安装apk出现android.os.FileUriExposedException
546 6