本项目是一个非官方的
QWeather
Kotlin / Java / Android SDK
, 可以在基于JVM
的语言使用, 例如Kotlin
、Java
、Scala
本项目基于
Web API
所以只需要申请一个Web API key
和这个key对应的Public ID
即可使用, 点击这里 来查看如何申请一个Web API key
以
Groovy DSL
为例
// 添加gson 和 QWeatherSDK 依赖
dependencies {
implementation("com.google.code.gson:gson:2.10.1")
implementation(files("./lib/QWeatherSDK.jar"))
}
你也可以使用
jitpack
来获取依赖
repositories {
// other repos...
maven { url "https://jitpack.io" }
}
dependencies {
implementation("com.google.code.gson:gson:2.10.1")
implementation("com.github.RTAkland:QWeatherSDK:v0.4.3")
}
如果想要将获取fatjar包你需要使用以下方法获取, 下面提供了两种脚本语言的解决方法
configurations {
embed
compile.extendsFrom(embed)
}
// other configurations...
jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE // 排除重复的依赖文件
from configurations.embed.collect {
it.isDirectory() ? it : zipTree(it)
}
}
dependencies {
implementation("com.github.RTAkland:QWeatherSDK:v0.4.3") // 这里需要用常规方法添加依赖
embed(api("com.github.RTAkland:QWeatherSDK:v0.4.3")) // 必须在这里使用embed再添加一次
}
使用embed将会把embed内包裹的库中的.class文件全部打包进, 你的jar文件中 如果库使用了别的库, 那embed也会把该库使用的库的.class文件打包进你的jar中 和 shadowJar比较类似 和gradle中的include类似, 但是gradle是将依赖jar打包进jar embed 不会和implementation关键字冲突, embed仅在编译时生效 使用embed后就可以在独立的环境运行而不需要额外下载依赖
以下是使用Kotlin作为Gradle构建脚本的解决方法
// other configurations...
dependencies {
implementation("com.github.RTAkland:QWeatherSDK:v0.4.3") // 直接使用常规方法添加依赖
}
tasks.jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
val files = configurations.runtimeClasspath.get()
.filter { it.exists() }
.map { if (it.isDirectory) it else zipTree(it) }
from(files)
}
import cn.rtast.qwsdk.QWeatherSDK
import cn.rtast.qwsdk.enums.Plans
fun main() {
val qw = QWeatherSDK("<this is your key>","<this is your key's publicid>", Plans.Free)
// 可用的计划有 Free, Standard, Custom
val response = qw.weather().now("101010100") // 填入对应的数据, 这里只需要填写一个
println(response) // 返回的数据已经被反序列化, 可以直接访问对应的数据类来获取数据
}
import cn.rtast.qwsdk.QWeatherSDK;
import cn.rtast.qwsdk.enums.Plans;
public class Main {
public static void main(String[] args) {
QWeatherSDK qw = new QWeatherSDK("<this is your key>", "<this is your key's publicid>", Plans.Free);
System.out.println(qw.weather().now("101010100"));
// 最后两个参数有默认值, 通过给函数添加@JvmOverloads注解在编译时生成重载函数来实现Java参数默认值
}
}
import cn.rtast.qwsdk.QWeatherSDK
import cn.rtast.qwsdk.enums.Plans
object Main extends App {
val qw = new QWeatherSDK("<this is your key", "<this is your key's publicid>", Plans.Free)
println(qw.weather().now("101010100"))
}
请点击这里查看
在
v0.2.0
版本添加了单元测试, 如果想要使用单元测试你需要添加两个环境变量QW_KEY
QW_PLAN
, 这两个变量分别代表 QWeather Key 和 key的版本,QW_PLAN
可用数据有free
standard
custom
不区分大小写, 但是变量名必须大写 测试完成后你可以在build/reports/tests/test/index.html
找到测试报告
如果你的Key无法使用某些api那么这个测试则会直接跳过并判定为成功, 你可以在这里找到各种订阅之间的差别
本SDK无法使用
太阳辐射
因为没有条件测试返回结果, 并且官方文档也没有写明返回的数据, 故无法创建数据类实现接口
目前编译出的产物的JVM版本为 1.8, 所以你至少需要JVM1.8以上版本来使用此SDK
- 建议使用
Intellij IDEA
进行开发
$ git clone https://github.com/RTAkland/QWeatherSDK.git
Linux/Unix/Mac OS
$ chmod +x ./gradlew
$ ./gradlew build
Windows
$ .\gradlew.bat build
- 本项目以Apache-2.0许可开源, 即:
- 你可以直接使用该项目提供的功能, 无需任何授权
- 你可以在注明来源版权信息的情况下对源代码进行任意分发和修改以及衍生
JetBrains Open Source
提供的强大IDE支持