在android studio导出的apk分为4种,一种是未签名调试版apk,一种是未签名发行版apk,一种是已签名调试版apk,还有一种是已签名发行版apk。以下将介绍这4种apk如何导出。

一、调试版apk与发行版apk区别

Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发 人员提供强大的应用程序调试能力。
Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信 息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。 (1) debug程序通常比release程序要慢,尤其是处理视频方便release要比debug快很多。在release模式对程序进行调试的时候经常会遇到变量虽然初始化了,但是在查看其值的时候却发现是一个随机的数并不是初始化的值,有时候在对变量进行监视的时候了,会出现找不到变量的情况。
(2) debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc, 而release的赋值近似于随机。在声明变量后马上对其初始化一个默认的值是最简单有效的办法,否则项目大了你找都没地方找。代码存在错误在debug方式下可能会忽略而不被察觉到。debug方式下数组越界也大多不会出错,在release中就暴露出来了,这个找起来就比较难了。
(3) 只有DEBUG版的程序才能设置断点、单步执行、使用 TRACE/ASSERT等调试输出语句。REALEASE不包含任何调试信息,所以体积小、运行速度快。

以上内容来自:https://zhidao.baidu.com/question/620939843767120332.html

二、签名的意义

为了保证每个应用程序开发商合法ID,防止部分开发商可能通过使用相同的包名(pakage name)来混淆替换已经安装的程序,我们需要对发布的APK文件进行签名。每一次所发布的APK应保证所用的签名文件的一致性,否则可能出现无法安装的情况。

三、导出调试版apk

导出调试版apk方法有两种,第一种:

选择菜单Build→ Build APK,点击便可生成调试版apk,等待生成成功,可在模块目录的build/outputs/apk目录下找到xxx-debug.apk的文件,此文件便是调试版apk。

第二种方法:

点击视图右上角的Gradle,弹出以上界面,双击模块目录下Tasks/build目录下的assembleDebug,便可在生成调试版apk,等待生成成功,可在模块目录的build/outputs/apk目录下找到xxx-debug.apk的文件,此文件便是调试版apk。

四、导出未签名发行版apk

点击视图右上角的Gradle,弹出以上界面,双击模块目录下Tasks/build目录下的assembleRelease,便可在生成未签名发行版apk,等待生成成功,可在模块目录的build/outputs/apk目录下找到xxx-release-unsigned.apk的文件,此文件便是未签名发行版apk。

五、生成已签名发行版或调试版apk

选择菜单Build→Generate Signed APK...并点击,出现如下界面

情况一:如果要使用已有的签名文件,那么点击Choose existing...按钮,选择已有的签名文件的路径,在Key store password输入框填写上签名文件的密码,在Key alias输入框填写上别名,在Key password输入框填写上该别名对应的密码,而后点击Next按钮,出现如下界面

Build Type类型中选择release,然后点击Finish按钮即可生成已签名发行版apk。等待生成成功,可在模块目录下找到xxx-release.apk的文件,此文件便是已签名发行版apk。

Build Type类型中选择debug,然后点击Finish按钮即可生成已签名调试版apk。等待生成成功,可在模块目录下找到xxx-debug.apk的文件,此文件便是已签名调试版apk。

情况二:如果还没有签名文件,需要使用新创建的签名文件,则点击Create new...按钮,点击后出现如下界面

箭头指出的部分填写上信息,点击OK,即可生成签名文件。

其余生成签名apk的步骤同情况一。

android studio导出apk的更多相关文章

  1. Android Studio 导出APK

    (1)Android Studio菜单Build->Generate Signed APK     (2)弹出窗口     (3)创建密钥库及密钥,创建后会自动选择刚创建的密钥库和密钥(已拥有密 ...

  2. Android tips(八)-->Android Studio打包apk,aar,jar包

    文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独有的类库包,而jar包是java ...

  3. Android Studio打包apk,aar,jar包

    转载请标明出处:一片枫叶的专栏 文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独 ...

  4. Android Studio导出Jar包

    这篇博客将介绍一下如何用Android Studio导出jar包,希望能给大家带来帮助. 首先需要修改build.gradle文件,在Android Studio中会显示多个build.gradle文 ...

  5. Android Studio 打包APK时,出现3个或多个APK

    Android Studio 打包APK时,原来只会出现一个apk,结果现在出现3个apk,仔细检查了一下项目文件发现: Android Studio 的 buid.gradle文件里有个配置项被更改 ...

  6. Android Studio Analyze APK 一直显示 Parsing Manifest探因及解决

    一.背景 大家都知道,Android Studio开发工具自带了Analyze Apk,可以很方便的分析Apk文件.具体位于菜单build >> Analyze APK...路径下,点击后 ...

  7. 用Android Studio导出jar给Unity3D用

    1.新建一个Android Studio工程,选择空Activity 2.创建一个Module 3.将Unity的依赖jar包拷贝到工程的libs下 4.增加Java代码 内容修改如下 package ...

  8. Android Studio导出Jar包并混淆

    在Android Studio中,自带反编译查看class文件,如果没有混淆的话,class文件跟java文件基本没有区别了,为了保护,还是混淆的好. 网上看了不少资料,都是直接下载proguard额 ...

  9. Android studio打包APK混淆配置

    要在打包APK时加入混淆需要在Module中的buid.gradle中加入如下信息 buildTypes { release { minifyEnabled true shrinkResources ...

随机推荐

  1. 进入Docker容器的4种方式

    进入Docker容器的4种方式 在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法. 进 ...

  2. Codeforces Round #530 (Div. 2) A,B,C,D

    A. Snowball 链接:http://codeforces.com/contest/1099/problem/A 思路:模拟 代码: #include<bits/stdc++.h> ...

  3. requests中 .text 和 .content区别

    import requests url = 'https://www.baidu.com' response = requests.get(url) 1.response.content: 这个是直接 ...

  4. python学习日记(数据结构习题)

    元素分类 有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中.即: {'k1' ...

  5. 《Hands-On Machine Learning with Scikit-Learn&TensorFlow》mnist数据集错误及解决方案

    最近在看这本书看到Chapter 3.Classification,是关于mnist数据集的分类,里面有个代码是 from sklearn.datasets import fetch_mldata m ...

  6. A/D和D/A的学习

    从我们学到的知识了解到,我们的单片机是一个典型的数字系统.数字系统只能对输入的数字信号进行处理,其输出信号也是数字信号.但是在工业检测系统和日常生活中的许多物理量都是模拟量,比如温度.长度.压力.速度 ...

  7. 定时自动从FTP服务器取数据脚本

    环境需求:某些情况下经常需要向FTP服务器取文件,可以用定时任务执行简单脚本自动去取相应文件. 一般用法: ~]# ftp  IP地址  端口 //ftp命令可以通过yum install ftp方式 ...

  8. 20165223 学习基础和C语言基础调查

    一.学习基础 1. 我所擅长的技能 从小我就对新鲜事物抱有浓厚的兴趣,因此多年来培养了许多爱好,对感兴趣的诸如绘画方面的国画.油画.素描.漫画等:音乐方面的钢琴.吉他.架子鼓等:运动方面的滑板.溜冰. ...

  9. codeforces Hello 2019(未写完)

    A. Gennady and a Card Game a题惯例签到题 题意:给你一张牌,再给你5张牌,判断能不能出一次牌... 所以只要检查第二行中的某个卡是否与第一行中的卡具有共同字符 有就输出YE ...

  10. 正向选择(positive selection)、中性选择(neutral selection)、平衡选择(balancing selection)示意图

    正向选择:某一位点逐渐积累,成优势的位点,具体表现为:随着时间延长,该位点的突变allele频率越来越高,远远超过野生型allele: 中性选择:随着时间的延长,总体频率没有改变太多: 平衡选择:位点 ...