Android打包,如何打包时不包含依赖包(gradle各种依赖方式)

Eclipse中的实现是非常简单的。
Eclipse如上图去掉勾选就可以打出所需的包了!
Android打包,如何打包时不包含依赖包(gradle各种依赖方式)
文章图片

AndroidStudio
相比较而言,AndroidStudio 就比较麻烦一点。鉴于gradle提供的一体化功能,很多规则已经给你定好了。
AndroidStudio 的依赖改成如下
dependencies {
provided fileTree(dir: 'libs', include: ['*.jar'])
provided 'com.android.support:support-v4:21.0.3'
provided project(':main-host')
}
采用provided的方式,在编译开发的时候,会被引用,但是在打包带的时候,就不会打进来。这种方式也是 library scope.
Compile
compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。
Provided
Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。
APK
只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错
Test compile
Test compile 仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。
Debug compile
Debug compile 仅仅针对debug模式的编译和最终的debug apk打包。
Release compile
Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。
除了这6种方式,还有一种,就是 flavor 名称配合编译类型。
Android打包,如何打包时不包含依赖包(gradle各种依赖方式)
文章图片

其中2.x版本的 Provided 变成了 compileOnly.
你以为,这样就能解决自己遇到的问题了,太幼稚了,问题总比答案多。在库依赖的过程中,有库依赖库的,有应用依赖库的。
这个库,有的是jar包形式,有的是aar形式,有的就是module形式。问题来了,上面的规则,对于这三种形式,是有限制的。
这个时候,你可能就需要纯手动,去自己编写 gradle 脚本,或者采用别的方式,绕开问题。首先,把编译关给通过了。
当然,如果你是手动编译大神,请忽略所有这些 IDE 工具依赖的毛病。
这里,我就不提供脚本了。请自行github或者google,千万不要百度,你会浪费时间的。

现在又来问题了,如果不想把 jdk_src 和 android sdk 的源码打进来,怎么办?
当然,这个问题在 Eclipse 这个万能通用IDE里面,依然灰常简单,点击一下就能解决问题。但是在 Android Studio 里面,可就没有这么简单了。
首先JDK这个不用担心,这个是运行时环境,默认,也是没有的。
而sdk就不一样了。真正的虚拟机,不会想着只运行android的。
这个问题,留着我研究研究。有结果,会贴出来。提醒一下,在网上,我没找到直接有效的回答,都他妈是浪费时间的回答。
【Android打包,如何打包时不包含依赖包(gradle各种依赖方式)】

    推荐阅读