Android Studio 打包APK(详细版)


前言

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

正文

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

一、新建项目

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

在这里插入图片描述
创建完成之后,你可以运行一下,运行在真机或者虚拟机都可以。

二、生成Debug和Release包

在这里插入图片描述
当你看到这个页面的时候,这个APK就已经安装在这个模拟器上面了,而这个APK就是debug版本的,但是它是运行时生成的,不是打包生成的。
怎么查看这个APK呢?

把当前项目切换成Project,然后找到build文件夹。只要你的项目运行了,就会生成这个文件夹,然后你可以通过下图
在这里插入图片描述
此时你可以将这个app-debug.apk复制,然后通过QQ发送到你自己的手机上,然后你在手机上下载上下载试着安装一下,你看能不能行。
当然是不行的,只有release版本的APK才能安装在自己的手机上。
在这里插入图片描述
从这个图片上来看,你已经看到不能安装的原因了。

通过签名jks来试试,点击导航栏的Build→Generate Signed Bundle / APK…
在这里插入图片描述

在这里插入图片描述

Next
在这里插入图片描述

这里需要一个商店的key,因为没有,所以创建一个新的,点击Create new…
在这里插入图片描述
首先指明生成的jks文件的路径,点击这个文件夹图标。
在这里插入图片描述
我个人习惯放在D盘的APK目录下,然后命名jks的名称为GenerateAPK,
然后点击OK。
在这里插入图片描述
然后输入这个jks和别名的一些相关信息,上方的商店密码和别名密码可以设置为一样的,这样便于记忆,只不过安全系数就降低了。我上面设置的是123456,信息都设置好了之后,点击OK。
在这里插入图片描述
如果出现这个弹窗,你可以不用担心,点击OK。
在这里插入图片描述

这里勾选上记住密码。
在这里插入图片描述

选择release,下面两个都勾选上,然后点击Finish。
在这里插入图片描述
当你看到屏幕的右下角出现这个提示时,说明你的APK已经生成了,你可以在你的app下看到多了一个release的文件夹,里面就是app-release.apk包,下面你可以复制发到手机上,然后下载,手机上是可以安装的。
在这里插入图片描述
手机上安装成功。

在这里插入图片描述

下面通过秘钥jks来生成debug包试试看。
在这里插入图片描述
点击Finish。
在这里插入图片描述
把这个发到你的手机上。你会发现也是可以安装的,这是为什么呢?
那个这种方式生成的包在实际开发中起到什么作用呢?

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

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

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

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

三、打包的细节优化

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

① 自定义Apk名字

修改app下的build.gradle

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

添加位置如下图所示,在android{}闭包中
在这里插入图片描述
添加后记得Sync一下,然后重新打一个包,这里我将打包的路径修改到了D盘,如下图所示

在这里插入图片描述
点击Finish完后打包。
在这里插入图片描述
包的确是生成了,名字也不再是app-release.apk。

然后你再打一个debug的包看看,名字是否有更改。
在这里插入图片描述
在这里插入图片描述
很明显,的确是改变了,但是有一个问题,那就是如果没有外面的这个目录我根本不知道哪个apk是debug和release的。因此我还需要在打包后知道当前的包是什么类型的。

② 增加构建类型

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

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

buildType.name就表示构建的类型,使用$来修饰。下面依次打一个release和debug包看看。
在这里插入图片描述

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

③ 增加版本名

再修改一下

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

versionName就是你的版本名称,v就表示版本,现在版本名称是1.0。
在这里插入图片描述
那么现在打个包试一下看是不是会多一个1.0。
在这里插入图片描述
在这里插入图片描述
假如要升级一个版本,那么你改成2.0,再打包。
在这里插入图片描述
我这里只是简单演示一下,因此没有对版本号进行修改。
在这里插入图片描述

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

④ 增加日期时间

在android{}闭包外增加

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

在这里插入图片描述

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

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

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


总结

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

猜你喜欢

转载自blog.csdn.net/qq_38436214/article/details/112288954