Hi Jerome, Is it possible to do Dex transformations using the transform API in Gradle plugin 2.2.0-alpha2 ? If yes - is there any documentation for it? And if not - is it still planned for 2.2.0?
Thanks :) Ariel On Tuesday, April 12, 2016 at 9:51:34 AM UTC+3, Ariel Cattan wrote: > > That's excellent news! Thanks!! > Ariel > > On Monday, April 11, 2016 at 11:50:40 PM UTC+3, Jerome Dochez wrote: >> >> got it. yes this is relatively easy, we should add it in 2.2 timeframe. >> >> https://code.google.com/p/android/issues/detail?id=206504 >> >> Jerome >> >> On Mon, Apr 11, 2016 at 1:35 PM Ariel Cattan <[email protected]> wrote: >> >>> Hi Jerome, >>> >>> Actually we are already doing very extensive dex transformations today. >>> We found we had much more control with dex transformations, and in fact >>> switched our entire solution to be based on dex transformations. >>> Today our Gradle plugin finds its way through the various Android plugin >>> tasks, takes the output of the dex task, does the transformations, and then >>> adjusts the inputs of the packaging task so that it uses our instrumented >>> dex files instead of the original ones. We are doing it with Android >>> plugins below version 1.5.0, as well as above. However, since these are >>> not official APIs, we have to "chase" you guys with every release :-) >>> That's why we are striving to have an official, stable API that will >>> allow us to do that. >>> Using the Jack API may be interesting, depending on what capabilities it >>> will expose. However since we're already heavily invested in dex >>> instrumentation, it will be better for us to just be able to get the dex >>> files as an input to a transform, and output back instrumented dex files. >>> Wouldn't it be relatively easy for you to support such a path, using the >>> transform API? >>> >>> Thanks! >>> Ariel >>> >>> >>> On Monday, April 11, 2016 at 10:41:31 PM UTC+3, Jerome Dochez wrote: >>> >>>> Hi Ariel >>>> >>>> I think this discussion can go into different directions. >>>> >>>> - we might at some point give access to transforms that manipulate dex >>>> files but the question remain, how do you plan to do the actual >>>> transformation ? asm-dex seems to not be complete for instance. >>>> >>>> - we will keep a path (even with jack enabled) where javac will be used >>>> to compile java code into .class files and bytecode manipulation will >>>> still >>>> be possible before the .class files are reinjected into the jack pipeline >>>> (which will be how instant-run+jack will be implemented initially). >>>> >>>> - Jack will also provide an API (based on ECJ) to register jack native >>>> bytecode enhancement that will allow you to do byte code manipulation as >>>> well (although constructs will be at a higher level obviously). This might >>>> be how instant-run will evolve. >>>> >>>> which path would you rather take ? >>>> >>>> On Mon, Apr 11, 2016 at 6:26 AM Ariel Cattan <[email protected]> wrote: >>>> >>> Hi, >>>>> >>>>> At the initial stages of the Transform API there seemed to be a way to >>>>> add a Dex transformation, but this was taken away. >>>>> We are seeking for official/safe ways to instrument Dex files. It >>>>> became important when Jack was introduced (as Java bytecode >>>>> instrumentation >>>>> is not possible with Jack), and now with Instant Run it is again very >>>>> relevant. We would like to have the build system call our plugin in order >>>>> to transform each Dex file being created, so that we could instrument it. >>>>> With Instant Run, for example, once a new small Dex is created - if we >>>>> could have a transform being called and handed this changed file - we >>>>> could >>>>> instrument it on-the-fly, as part of the instant run build. >>>>> Is there a way to do it today, or plans to support such functionality >>>>> in the future? >>>>> >>>>> Thanks! >>>>> Ariel Cattan >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "adt-dev" group. >>>>> >>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>> >>>> >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "adt-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- You received this message because you are subscribed to the Google Groups "adt-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
