Android Studio打包问题:gradle打包Android程序,如何打包时不包含依赖包

Android Studio打包时,默认会将依赖包一起打包


因为Unity在打包时,会将自带的那个classes.jar拷贝进apk,如果aar里的classes.jar不删除,打包时就会产出冲突,得到下面的错误:

IOException: Failed to Move File / Directory from 'Temp/StagingArea\android-libraries\app-release\classes.jar' to 'Temp/StagingArea\android-libraries\app-release\libs\classes.jar'.

也就是说,每次我们测试后,都需要将aar里的这个jar包手动删除。


找了资料,打包时不包含某个库的方法

File->Project Structure里,将Compile改成Provided,经测试有效

有时候会发现,在这里不能修改,尝试在APP的build.gradle文件里手动修改:

dependencies {

compile files('libs/BaiduLBS_Android.jar')

provided files('libs/classes.jar')

compile files('libs/wechat-sdk-android-with-mta-1.3.4.jar')

compile files('libs/alipaySdk-20170725.jar')

}

采用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打包。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,185评论 19 139
  • 参考 中文官网构建指南:https://developer.android.google.cn/studio/bu...
    FinalSky阅读 5,500评论 0 16
  • 1.介绍 如果你正在查阅build.gradle文件的所有可选项,请点击这里进行查阅:DSL参考 1.1新构建系统...
    Chuckiefan阅读 12,215评论 8 72
  • 0x01 基本项目结构 使用Android Studio创建的Android项目会划分成三个层级: project...
    银小古儿阅读 2,011评论 1 2
  • 我不厌每天的日顾东方 驶着梦中的车马破夜而出 无论老旧的符咒漆黑的路途 都抵不过你我深情对望 藏匿心底的微弱灯光 ...
    北梦沐曦阅读 206评论 0 7