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的。

这个问题,留着我研究研究。有结果,会贴出来。提醒一下,在网上,我没找到直接有效的回答,都他妈是浪费时间的回答。

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值