版权声明:本博客主要记录学习笔记和遇到的一些问题解决方案,转载请注明出处! https://blog.csdn.net/u010982507/article/details/82866445
应用场景
通过后台服务配置gradle打包环境,因为服务工程要放到服务器Linux上,是无法连接外网的,所以需要配置Android的离线打包。
配置离线环境
一、 gradle-wrapper.properties配置
- 完整代码配置
#Sat Sep 29 10:09:36 CST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
# 配置本地gradle压缩包,要提前从网上下载好gradle全量包
distributionUrl=file\:///D:/AgreeWorkSpace/android/PackageServer/library/gradle-4.1-all.zip
distributionBas
e属性和distributionPath
属性
distributionBase
和distributionPath
组合在一起,是解压gradle-4.1-bin.zip之后的文件的存放位置。distributionPath是distributionBase指定的目录下的子目录。解压后在windows下是C:\Users\<user_name>\.gradle\wrapper\dists
zipStoreBase
属性和zipStorePath
属性
distributionBase
和distributionPath
组合在一起,是解压gradle-3.1-bin.zip之后的文件的存放位置。
distributionPath
是distributionBase
指定的目录下的子目录。
下载位置可以和解压位置不一样。
zipStoreBase
和distributionBase
有两种取值:GRADLE_USER_HOME
和PROJECT
。
其中,GRADLE_USER_HOME
表示用户目录。
在windows下是%USERPROFILE%/.gradle
,例如C:\Users\<user_name>\.gradle\
。
在linux下是$HOME/.gradle
,例如~/.gradle
。
PROJECT
表示工程的当前目录,即gradlew
所在的目录。
相关源码位置gradle-4.1-src\gradle-4.1\subprojects\wrapper\src\main\java\org\gradle\wrapper\PathAssembler.java
distributionUrl
属性
1、distributionUrl
是要下载的gradle的地址distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
,使用哪个版本的gradle,就在这里修改。下载后保存的路径是C:\Users\admin\.gradle\wrapper\dists\gradle-4.1-all
,如果之前已经下载过,就不会再去网上下载。
2、gradle的3种版本:
1)gradle-xx-all.zip是完整版,包含了各种二进制文件,源代码文件,和离线的文档。例如,https://services.gradle.org/distributions/gradle-4.1-all.zip
2)gradle-xx-bin.zip是二进制版,只包含了二进制文件(可执行文件),没有文档和源代码。例如,https://services.gradle.org/distributions/gradle-4.1-bin.zip
3)gradle-xx-src.zip是源码版,只包含了Gradle源代码,不能用来编译你的工程。例如,https://services.gradle.org/distributions/gradle-4.1-src.zip
参考文章:https://blog.csdn.net/u013553529/article/details/55011602?utm_source=copy
3、如果采用离线打包,这里就需要改成本地下载好的gradle路径,如:
distributionUrl=file\:///D:/AgreeWorkSpace/android/PackageServer/library/gradle-4.1-all.zip
,第一次打包运行的时候,会把gradle-4.1-all.zip解压到C:\Users\admin\.gradle\wrapper\dists\gradle-4.1-all
路径下,然后生成一串随机数字或字母的目录。注意Windows下和Linux下的路径配置:
windows下配置
distributionUrl=file\:///D:/AgreeWorkSpace/android/PackageServer/library/gradle-4.1-all.zip
Linux下配置
distributionUrl=file\:/home/abs/Android/library/gradle/gradle-4.1-all.zip
二、配置android gradle plugin
- android gradle plugin和gradle plugin区分
android gradle plugin和gradle plugin是不同的概念,android gradle plugin指的是根目录下build.gradle文件配置的gradle插件版本依赖。例如:
buildscript {
repositories {
......
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
- android gradle plugin和gradle plugin版本对应
其中com.android.tools.build:gradle:3.0.1
与gradle-wrapper.properties
中配置的gradle版本是相互对应的,如下图所示:参考链接:https://developer.android.google.cn/studio/releases/gradle-plugin#
- repositories配置
com.android.tools.build:gradle:3.0.1
默认加载的是联网状态的jcenter()
库,而离线的时候是无法加载jcenter()
库的,所以工程中所有的repositories
都要配置成本地仓库。Android gradle plugin本地仓库在Android studio安装目录下的Android Studio\gradle\m2repository
中,或者在AndroidSDK的extras目录下也有这个库,但是好像缺少插件。这里我们使用Android Studio下的库,可以把这个库拷贝到Android工程的gradle目录下,这样我们可以配置相对路径,如下所示:
repositories {
maven{
url 'gradle/m2repository'
}
google()
}
参考文章:https://blog.csdn.net/u012123160/article/details/73275912
执行打包命令
- Windows下
gradlew build
- Linux下
./gradlew
或sh gradlew