Android打包,如何打包时不包含依赖包(gradle各种依赖方式)
Eclipse中的实现是非常简单的。
Eclipse如上图去掉勾选就可以打出所需的包了!
文章图片
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 名称配合编译类型。
文章图片
其中2.x版本的 Provided 变成了 compileOnly.
你以为,这样就能解决自己遇到的问题了,太幼稚了,问题总比答案多。在库依赖的过程中,有库依赖库的,有应用依赖库的。
这个库,有的是jar包形式,有的是aar形式,有的就是module形式。问题来了,上面的规则,对于这三种形式,是有限制的。
这个时候,你可能就需要纯手动,去自己编写 gradle 脚本,或者采用别的方式,绕开问题。首先,把编译关给通过了。
当然,如果你是手动编译大神,请忽略所有这些 IDE 工具依赖的毛病。
这里,我就不提供脚本了。请自行github或者google,千万不要百度,你会浪费时间的。
现在又来问题了,如果不想把 jdk_src 和 android sdk 的源码打进来,怎么办?
当然,这个问题在 Eclipse 这个万能通用IDE里面,依然灰常简单,点击一下就能解决问题。但是在 Android Studio 里面,可就没有这么简单了。
首先JDK这个不用担心,这个是运行时环境,默认,也是没有的。
而sdk就不一样了。真正的虚拟机,不会想着只运行android的。
这个问题,留着我研究研究。有结果,会贴出来。提醒一下,在网上,我没找到直接有效的回答,都他妈是浪费时间的回答。
【Android打包,如何打包时不包含依赖包(gradle各种依赖方式)】
推荐阅读
- android第三方框架(五)ButterKnife
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- java中如何实现重建二叉树