学什么专业可以做网站,郑州网站建设外包,培训学校如何做网站宣传,垂直网站做排名subprojects 和 allprojects 的区别#xff0c;
先给出结论#xff1a;
allprojects是对所有project的配置#xff0c;包括Root Project#xff1b;
而subprojects是对所有Child Project的配置。
新建一个test_gradle的文件夹#xff0c;在文件夹里新建build.gradle和…subprojects 和 allprojects 的区别
先给出结论
allprojects是对所有project的配置包括Root Project
而subprojects是对所有Child Project的配置。
新建一个test_gradle的文件夹在文件夹里新建build.gradle和settings.gradle文件
另外再新建两个文件夹名字分别为app lib, 在settings.gradle中写入 include :app,:lib 在build.gradle中写入
allprojects {tasks.create(hello) {doLast {task -print project name is $task.project.name \n}}
}
测试一下allprojects的范围打开控制台并切换到新建的根目录执行gradle -q hello命令执行结果
bogon:test_gradle mq$ gradle -q hello
project name is test_gradle
project name is app
project name is lib 再来测试下subprojects的作用域打开build.gradle继续写入
allprojects {tasks.create(hello) {doLast {task -print project name is $task.project.name \n}}}subprojects {hello {print here is subprojects \n}}可以看到我们在下面新加了subprojects并通过之前建的task任务hello输出了一段字符串继续执行命令gradle -q hello执行结果
bogon:test_gradle mq$ gradle -q hello
project name is test_gradle project name is app
here is subprojects project name is lib
here is subprojects 可以看到只有只有根目录下面没有subprojects中task的输出这也印证了我们上面的结论
allprojects是对所有project的配置包括Root Project
而subprojects是对所有Child Project的配置。
进入Child Project目录下新建一个build.gradle文件写入
hello.doLast {print —— Im the app project \n
}继续执行命令gradle -q hello,执行结果
bogon:test_gradle mq$ gradle -q hello
project name is test_gradle project name is app
here is subprojects —— Im the app project project name is lib
here is subprojects 可以看到task(hello)遍历顺序是allprojects subprojects Child Project 在rootProject下的build.gradle中buildscript的repositories和allprojects的repositories有什么区别如下
//build.gradle
buildscript {repositories {jcenter()google()maven {url https://maven.google.com/name Google}}dependencies {classpath com.android.tools.build:gradle:2.3.3}
}allprojects {repositories {jcenter()google()maven {url http://maven.xxxxxxxx/xxxxx}}
}
1、buildscript里是gradle脚本执行所需依赖如上所示对应的是maven库和插件 。
2、allprojects里是项目本身需要的依赖
比如代码中某个类是打包到maven私有库中的那么在allprojects—repositories中需要配置maven私有库而不是buildscript中不然找不到。 gradle获取打包电脑IP
在安卓开发时本地同时跑了中台由于每天重连wifi分配的局域网IP都会变化这导致打包调试时总是需要改IP地址通过gradle脚本自动获取本机IP然后动态流入到对应的参数链接中之后就不用再去改代码了
此处以项目为例首先在build.gradle中定义获取IP的方法
static def getIP() {InetAddress result null;EnumerationNetworkInterface interfaces NetworkInterface.getNetworkInterfaces();while (interfaces.hasMoreElements()) {EnumerationInetAddress addresses interfaces.nextElement().getInetAddresses();while (addresses.hasMoreElements()) {InetAddress address addresses.nextElement();if (!address.isLoopbackAddress()) {if (address.isSiteLocalAddress()) {return address.getHostAddress();} else if (result null) {result address;}}}}return (result ! null ? result : InetAddress.getLocalHost()).getHostAddress();
}
然后调用方法获取IP流入到BuildConfig或者是渠道信息中此处以BuildConfig为例
android {……defaultConfig {……buildConfigField(String, IPAddress, \http:// getIP() :8080/Service/\)}
}
此时IPAddress被注入到BuildConfig的静态变量中在项目的网络配置NetworkConfig中使用
static {switch (BuildConfig.FLAVOR) {case local:{BASE_URL BuildConfig.IPAddress;YUNWEI_URL YUNWEI_URL_TEST;UPDATE_URL UPDATE_URL_TEST;break;}case dev:……case check: ……}
}