Android Studio打包apk,aar,jar包 总结

原创 2016年08月30日 14:33:43
文本我们将讲解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中加入如下代码:
 <pre name="code" class="html">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的相关内容了。
ps:感谢一片枫叶_刘超
最后还是那句话:
成功只有一个定义,那就是对结果负责
因为我始终坚信的一句话:没有做不到的,只有想不到的
QQ交流群 :232203809,欢迎入群 
这里写图片描述 
微信公众号:终端研发部 
(欢迎关注学习和交流)

相关文章推荐

android studio library生成jar包和aar的方法总结

写了个工具包。然后想生成成jar包或者arr的资源格式,网上找了方法,这边算是总结下 首先是生成jar包 首先在library的工程目录下选中它的build.gradle文件并打开 在文...
  • g777520
  • g777520
  • 2016年11月25日 10:39
  • 2943

Android Studio中将一个android工程打成.aar包或者jar包

1.创建一个android工程,此时module层的build.gradle文件中apply plugin和applicationId都存在,是创建时默认生成的 此时点击右侧的assembleRe...

gradle 编译打包并使用 aar

一般在开发过程中我们会将一些公共组件库进行打包使用,在android下打包

打包依赖.aar文件以及坑总结

AAR 文件的单模块打包和多模块打包,以及引入到项目中的两种方式,以及常见遇到的问题......

android studio生成aar包并在其他工程引用aar包

1.aar包是android studio下打包android工程中src、res、lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...

[Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法

讲解Android Studio中生成aar文件以及本地导入到项目方式使用aar文件的方法。 在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件。 分别存...
  • qiujuer
  • qiujuer
  • 2014年10月03日 11:52
  • 32748

Android Studio打包apk,aar,jar包

1jar vs aar    文本我们将讲解android studio打包apk,aar,jar包的相关知识。apk包就是android系统的安装包,这里没什么好说的,aar包是android...
  • LM_ZP
  • LM_ZP
  • 2016年09月12日 15:59
  • 847

android 解决studio生成aar包并在其他工程引用aar包的坑,不需要任何gradle配置

1、首先我们创建一个module 2、编写我们的一个类 3、编译我们的module,生成release版本的aar,注意千万不要是debug版本的,点击最右边的gradle面板 4、将...

aar打包和用aar打apk包的混淆问题

一下混淆都已百度定位的aar为例 1:首先我们看下打成aar包后的混淆的文件 在这里除了@keep的之外,可以看到全部都被混淆 接下来看打成apk反编译出来的文件通过对比,可以看到 1:打包生...

Android开发,关于aar你应该知道的

转载自:http://alphayang.community/2015/10/17/all-about-aar/ 背景 在软件工程中,分治是最基本的设计原理,就如同现实中的砖、瓦、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Studio打包apk,aar,jar包 总结
举报原因:
原因补充:

(最多只允许输入30个字)