文本我们将讲解android studio打包apk,aar,jar包的相关知识。apk包就是android系统的安装包,这里没什么好说的,aar包是android中独有的类库包,而jar包是java中特有的类库包,在具体的介绍打包之前,我们先来aar包和jar包的区别。

jar包与aar包的区别

jar是java字节码文件(class文件)的归档文件,其不包含android中的资源文件等信息;

aar是android中特有的归档文件,既包含字节码文件也包含android的资源文件等;

区别:大家都知道jar文件把,如果你有一个Android Library项目,可以很容易的导出jar文件,然后在其他项目中很方便的引用,aar和jar类似,区别就是一个Android Library项目导出的jar文件不能包含资源文件,比如一些drawable文件、xml资源文件之类的,所以这就有很大的限制,在gradle之前我们要引用带资源文件的Android Library必须要把整个library导入进来进行引用,但是有了gradle之后,Android Library项目可以直接导出成aar,然后其他项目像引用jar的方式直接方便的引用。

具体可参看下图:

aar包解压之后的结构:
    这里写图片描述

jar包解压之后的目录结构:
    这里写图片描述

怎么样?jar包和aar包的区别很明显吧。

打包apk文件

在android studio中打包apk文件有两种方式:

通过gradle配置输出apk文件

执行Generate singed apk操作获得apk文件

下面我们将分别介绍一下这两种方式的具体步骤,首先我们先看一下如何通过gradle配置的方式,输出apk文件。

android studio中配置打包脚本

配置打包类型

buildTypes {
        debug {
            // 显示Log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            //混淆
            minifyEnabled false
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            //加载默认混淆配置文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //签名
            signingConfig signingConfigs.debug
        }
        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //混淆
            minifyEnabled true
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            //加载默认混淆配置文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //签名
            signingConfig signingConfigs.relealse
        }
    }

可以发现这里的buildType中配置了release包和debug包,以及各自的签名信息:

singingConfig singingConfigs.release

更加具体的签名信息配置在singingCongis中,下面我们来看一下其实如何设置的

配置签名信息

//签名
    signingConfigs {
        debug {
            storeFile file("aaa.keystore")
            storePassword "111111111"
            keyAlias "aaa.keystore"
            keyPassword "111111111"
        }
        relealse {
            storeFile file("aaa.keystore")
            storePassword "111111111"
            keyAlias "aaa.keystore"
            keyPassword "111111111"
        }
    }

这样我们就配置好了apk打包的签名信息,然后我们可以打开Build Variants操作框了…

配置Build Variants

这里写图片描述

这里可以看到我们在mobile module中定义了两个buildType,其中debug和release Type,并且其打包时默认使用的签名信息就是我们刚刚配置的各自的签名信息。

这里需要说明的是android studio中module默认都会有debug和release两个buildType,就算你什么都不配置的话,这里也会存在这两个buildType,而且,除了这两个之外你还可以配置额外的定制化的buildType,比如你想打一个信息的debug01包,使用另外的一套签名信息:

在buildType节点下添加

debug01 {
            // 显示Log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            //混淆
            minifyEnabled false
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            //加载默认混淆配置文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //签名
            signingConfig signingConfigs.debug01
        }

添加新的签名信息

debug01 {
            storeFile file("bbb.keystore")
            storePassword "222222222"
            keyAlias "bbb.keystore"
            keyPassword "222222222"
        }

配置Build Variants

这里写图片描述

可以发现这时候Build Variant中mobile module多了一个buildType:debug01,其就是我们刚刚配置的debug01 buildType,并且使用的是另外的一套签名信息,若我们选中debug01,则android studio默认run或者是build apk的时候就会编译debug01版本的apk了。

执行run app或者是Build apk操作

这里写图片描述

这样我们最终就能够输出一个apk格式的安装包了。

执行Generate singned apk操作

除了上面的通过gradle配置的方式生成apk文件,我们还可以执行Generate singned apk操作,通过这样的操作,我们也可以获得一个apk的输出文件,具体步骤如下:

执行Build –> Generate singed apk操作

填写相应的签名信息
    这里写图片描述

选择打包的类型
    这里写图片描述

好吧,上面就是我们所要介绍的打包apk的两种方式。下面我们在讲解一下如何通过android studio打包aar和jar。

android studio如何打jar包

目前通过android studio打包jar,基本有两种方式:

创建module,然后编译完成之后 module中自动的创建了相关的jar文件

这里写图片描述

这里的classes.jar就是module相关的jar包,我们可以将其更改名称之后拷贝到app下的lib目录中;

另一种方式其实跟第一种方式是一样的,只不过其是通过gradle脚本实现的

app为我们的主工程,librarydemo是我们要将其生成jar包的model.
在librarydemo中加入如下代码:

task makeJar(type: Copy) {
    delete 'build/libs/mysdk.jar'
    from('build/intermediates/bundles/release/')
    into('build/libs/')
    include('classes.jar')
    rename ('classes.jar', 'mysdk.jar')
}

makeJar.dependsOn(build)
//在终端执行生成JAR包
// gradlew makeJar

在Terminal中键入 gradlew makeJar 回车看到如下所示就OK了:
这里写图片描述

当然在主工程App的build中要加入librarys 这个依赖model:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile project(':librarys')
}

(二)android studio如何打aar包
其实打aar包和jar包类似,只不过是其目录变化了而已:

这里写图片描述

可以看到同样需要其作为library,而且其生成的目录为:/build/output/aar/

好了,以上就是如何通过androd studio打包apk,aar和jar的相关内容了。
---------------------
作者:一片枫叶_刘超
来源:CSDN
原文:https://blog.csdn.net/qq_23547831/article/details/51966166
版权声明:本文为博主原创文章,转载请附上博文链接!

Android tips(八)-->Android Studio打包apk,aar,jar包的更多相关文章

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

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

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

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

  3. android studio 使用gradle 导出jar包,并打包assets目录

    警告:本文年久失修. 随着android studio的升级 ,gradle的升级,严格按照本文的代码去做可能不会成功,希望依然可以作为解决问题的思路. 最近项目在做一个sdk,供别的开发者使用,所以 ...

  4. [转]--android studio 使用gradle 导出jar包,并打包assets目录

    转自: http://www.cnblogs.com/wuya/p/android-studio-gradle-export-jar-assets.html   最近项目在做一个sdk,供别的开发者使 ...

  5. Android使用KSOAP2调用WebService及正确导入jar包的问题(转)

    Android使用KSOAP2调用WebService及正确导入jar包的问题(转)     错误信息 最近在学Android使用KSOAP2调用现有的Webservice的方法,期间在网上找了很多代 ...

  6. 将多个jar包重新打包成一个jar包

    我介绍的方法是使用java命令来操作的,所以首先的安装jdk,这个就自己搞定吧. 提取jar包 为了将多个jar包打包成一个jar包,首先要将每个jar包的内容提取出来放到一个文件夹下,具体的操作命令 ...

  7. SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程

    一,创建Maven多模块项目先建立外层父工程         File →new →project  选择Spring Initializr          Next下一步到以下页面 工程结构如下 ...

  8. spring boot maven打包可运行jar包

    普通打包之后在程序目录运行,或者编写bat运行时会提示“没有主清单属性”,这是因为并没有找到main()方法,需要我们指明告诉java程序 我bat中的代码 @echo off title mytit ...

  9. 【Maven学习】Maven打包生成普通jar包、可运行jar包、包含所有依赖的jar包

    http://blog.csdn.net/u013177446/article/details/54134394 ******************************************* ...

随机推荐

  1. Java编程的逻辑 (42) - 排序二叉树

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  2. Kmeans 聚类 及其python实现

    主要参考   K-means 聚类算法及 python 代码实现    还有  <机器学习实战> 这本书,当然前面那个链接的也是参考这本书,懂原理,会用就行了. 1.概述 K-means  ...

  3. fullcalendar插件日程管理

    日程管理-fullcalendar插件用法   前言 本文分享fullcalendar用法,最后面提供代码下载 说到日程管理,基于JQuery的插件FullCalendar当之无愧,完整的API稳定和 ...

  4. 011.Zabbix的拓扑创建

    一 Map简介 Map的作用是将各种设备用网络拓扑图的方式展示,在Zabbix中,拓扑的展示通过手动方式添加. 二 Map的添加 2.1 添加Map的背景图 #在添加Map之前可谓Map添加一个背景图 ...

  5. 自制 COCO api 直接读取类 COCO 的标注数据的压缩文件

    第6章 COCO API 的使用 COCO 数据库是由微软发布的一个大型图像数据集,该数据集专为对象检测.分割.人体关键点检测.语义分割和字幕生成而设计.如果你要了解 COCO 数据库的一些细节,你可 ...

  6. 求任意多边形面积 python实现

    数学解决方法: 多边形外选取一点,连接各点构成三角形,计算求和......  详细链接  http://blog.csdn.net/hemmingway/article/details/7814494 ...

  7. WordPress 建站教程:新手搭建 WordPress个人博客图文教程(完全版)

    前言 WordPress 作为动态博客的代表,至今已经有十几年历史,而且一直在更新发展中,功能强大,插件和主题丰富,WordPress搭建使用也很方便.作为个人站长和博主,很多都是从 WordPres ...

  8. Sublime Text下使用SFTP/FTP插件

    一.前言 本文主要记录了Sublime Text编辑器下的SFTP/FTP的安装使用,方便linux和windows下的文件编辑,只是简单的记录,有不足之处,还望指教. 二.Linux和windows ...

  9. Android的设计尺寸

    术语和概念 屏幕尺寸 指实际的物理尺寸,为屏幕对角线的测量.为了简单起见,Android把实际屏幕尺寸分为四个广义的大小:小,正常,大,特大. 像素(PX) 代表屏幕上一个物理的像素点代表屏幕上一个物 ...

  10. 使用CefSharp在.Net程序中嵌入Chrome浏览器(九)——性能问题

    在使用CEF的过程中,我发现了一个现象:WPF版的CEF比Chrome性能要差:一些有动画的地方会掉帧(例如,CSS动画,全屏图片拖动等),视频播放的效果也没有Chrome流畅. 查了一下相关资料,发 ...