开发中遇到需要配置两个接口地址,也就是服务器地址。
生成及配置一个schema.json 文件,请参考我的另一篇简书《Graphql & Android 生成 schema.json 文件步骤》
配置多个 schema.json
1 按照不同地址生成相应的 schema.json
2 创建多个包来放置生成的 schema.json 文件 & 相应的要用到该接口的 *.graphql 文件
3 注释掉 bulid.gradle 中针对一个地址所指定文件路径的代码,如图:
总结起来一句话,同级分包,不设路径
题外之意
可能你会疑问,上图中没有注释掉的这行代码是做什么的?
apollo {
customTypeMapping['CarbonDateTime']="String"
}
作用:强转类型 CarbonDateTime 为 String ,在使用Graphql开发中会经常遇到一个错《Graphql & Validation of GraphQL query document failed》,就是类似我们说的解析类型错误,类型不匹配的意思。
我遇到的是同一个字段名,竟然不同数据类型,导致解析报错。
这时,我们可以通过强转类型来解决该类问题!
Web端 & iOS端的解决思路
Web端是建立多个客户端(具体不清楚)
iOS端是修改了文件名字(据说项目中不能出现同名文件),默认生成的是 API.swift,可以根据下列命令生成*.swift文件来避开同名冲突,然后在配置中进行路径配置就可以了(具体不清楚)
APOLLO_FRAMEWORK_PATH="$(eval find $FRAMEWORK_SEARCH_PATHS -name "Apollo.framework" -maxdepth 1)"
if [ -z "$APOLLO_FRAMEWORK_PATH" ]; then
echo "error: Couldn't find Apollo.framework in FRAMEWORK_SEARCH_PATHS; make sure to add the framework to your project."
exit 1
fi
cd "${SRCROOT}/${TARGET_NAME}"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate $(find . -name '*.graphql') --schema schema.json --output API.swift
修改这里,比如修改为 --output KKK.swift
--output API.swift
多套环境(测试,开发,仿真,线上环境)
随意选一套环境的服务器地址,生成后的scream.json文件,是通用多套环境的
参考链接
https://github.com/apollographql/apollo-android
https://github.com/apollographql/apollo-android/issues