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


总结


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

相关文章
|
20天前
|
敏捷开发 Java 机器人
云效产品使用常见问题之打包后的Android应用获取下载地址失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
Java 程序员 Android开发
apk简单介绍(组成以及打包安装流程)
apk简单介绍(组成以及打包安装流程)
45 0
|
4天前
|
机器学习/深度学习 Java Shell
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
22 0
|
4天前
|
Oracle Java 关系型数据库
Android零基础入门(一)配置环境和安装Android Studio
Android零基础入门(一)配置环境和安装Android Studio
14 0
|
4天前
|
Android开发
Android 高通平台集成无源码apk示例
Android 高通平台集成无源码apk示例
12 0
|
4天前
|
编译器 Android开发
Android S内置APK时AndroidManifest使用uses-library编译报错
Android S内置APK时AndroidManifest使用uses-library编译报错
10 0
|
4天前
|
Android开发
Android Studio或IDEA 升级后 不提示错误问题
Android Studio或IDEA 升级后 不提示错误问题
12 1
|
4天前
|
Java Android开发
Android module 打包成aar或jar
Android module 打包成aar或jar
11 0
|
17天前
|
缓存 Android开发 开发者
pc上使用命令给android安装apk
pc上使用命令给android安装apk
19 0
|
19天前
|
传感器 Java 开发工具
[NDK/JNI系列03] Android Studio集成NDK开发环境
[NDK/JNI系列03] Android Studio集成NDK开发环境
22 0