ig-json-parser
ig-json-parser copied to clipboard
Using with other annotation processor
Hello,
butterknife is a default library to development, so I must use it!
But I would like to use json parser.
And this part of gradle block butterknife:
compileJava {
doFirst {
// Directory should exists before compilation started.
generatedSourcesDir.mkdirs()
}
options.compilerArgs += [
'-processor',
'com.instagram.common.json.annotation.processor.JsonAnnotationProcessor',
'-s',
generatedSourcesDir
]
}
What is the proper way to use both libraries together? Others recommended to use ig-json-parser with android-apt but I don't know how can I.
bg, Larten
What happens when you combine the two?
Butterknife doesn't working.
I'm using both together without a problem. I don't believe I had to make any changes either. Have you confirmed that IG JSON Parser is working properly on its own?
My json models are in the android app module and if gradle task for ig-json-parser is uncommented, than it's generate correctly the models and I get NullPointerException for every view, but if I comment this, than work.
I think you need to put IG parser in its own module. Now that I think about it, I did run into an issue w/ the java gradle plugin causing some kind of incompatibility when merge with the main build.gradle. I know the IG folks use the parser in this way too as not to expose the models' members with default visibility. Here's how we have it set up.
Okay, maybe it will be good, but now my classes don't see generated files in model modul. Could you share this part of your gradle script?
settings.gradle
include ':tastemade'
include ':tastemade:jsonModels'
app module build.gradle
apply plugin: 'android'
android {
...
}
dependencies {
compile 'com.jakewharton:butterknife:5.1.2'
compile project(':tastemade:jsonModels')
...
}
jsonModels module build.gradle
apply plugin: 'java'
ext {
generatedSourcesDir = file("gen-src/main/java")
}
sourceSets {
main {
java {
srcDir 'src/main/java'
}
}
gensrc {
java {
srcDir 'gen-src/main/java'
}
}
}
compileJava {
doFirst {
// Directory should exists before compilation started.
generatedSourcesDir.mkdirs()
}
options.compilerArgs += [
'-processor',
'com.instagram.common.json.annotation.processor.JsonAnnotationProcessor',
'-s',
generatedSourcesDir
]
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
dependencies {
compile 'com.instagram:ig-json-parser-processor:0.0.3'
}
Hello, I have the same problem. I did everything you wrote, but my app modul can't see the properly generated helper methods, just the models I wrote. Do you have any advice?
thx, Szöszi
I have same problem :(
Sorry for the late response. Generally, we do indeed put the models in separate modules to avoid inadvertent access to package-privacy fields. However, there should be nothing that requires that behavior.
Unsure what's going on with the interaction with Butterknife, I will try it out when I get a chance.
In the meanwhile, I pushed a change so that the jar file tells the compiler how to invoke the annotation processor. Maybe that will help the issue? LMK!
Specifically, https://github.com/Instagram/ig-json-parser/commit/86f29b5fa173c84cf433d91a51ac3f41fa7d6e54
Sorry, but it's the same.
Thank you for reporting this issue and appreciate your patience. We've notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.