In migrating from 2.5.5 to 3.1.0 on Android, I’ve hit an issue with having multiple services/schemas. The app reaches out to two GraphQL APIs, and thus has two services. In 2.x, the different services’ packages and folders could be set in the build.gradle, but I haven’t found documentation on how to do that in 3.x. If those docs are out there somewhere, can someone just link me to them? I’ve been unable to find them.
If those docs are missing, I need some help. When I update according to how I read the migration docs, I get the error: java.lang.IllegalStateException: Multiple schemas found: {lists schemas} Use different services for different schemas
. Here’s what worked in 2.x in the app/build.gradle
:
apollo {
generateKotlinModels.set(true)
service("service1") {
sourceFolder.set("com/proj/app/service1")
rootPackageName.set("com.proj.app.service1")
}
service("service2") {
sourceFolder.set("com/proj/app/service2")
rootPackageName.set("com.proj.app.service2")
}
}
and here’s one example of what’s not working in 3.x (causing the Multiple schemas found
error):
apollo {
service("service1") {
packageName.set("com.proj.app.service1")
}
service("service2") {
packageName.set("com.proj.app.service2")
}
}
Another thing I’ve tried that isn’t working is to replace each packageName.set
call with the following:
packageNamesFromFilePaths("com/proj/app/service#")
useSchemaPackageNameForFragments.set(true)
but I get the same error. Other things I’ve tried are:
- put
useSchemaPackageNameForFragments
above the services instead of in them (same error) - removing
useSchemaPackageNameForFragments
entirely (same error) - having all three lines in each service block (causes
IllegalStateException
)
Any and all help would be greatly appreciated!