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,经测试有效

Android Studio打包问题:gradle打包Android程序,如何打包时不包含依赖包_第1张图片

有时候会发现,在这里不能修改,尝试在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打包。

你可能感兴趣的:(Android Studio打包问题:gradle打包Android程序,如何打包时不包含依赖包)