Great. Thanks for looking into everything.
--- Jake Wharton http://about.me/jakewharton On Thu, Jan 9, 2014 at 8:32 AM, Xavier Ducrohet <x...@android.com> wrote: > Yeah I figured this would look ugly like that. I'll see what we can do. > > > On Wed, Jan 8, 2014 at 11:27 PM, Jake Wharton <jakewhar...@gmail.com>wrote: > >> I think we almost never do clean builds locally. We really noticed the >> regression on the CI as they more than doubled in time. >> >> I added the following for now: >> >> dexOptions { >> preDexLibraries = Boolean.valueOf(System.getProperty("pre-dex", "true")) >> } >> >> I hesitate to agree on adding more configuration options but for >> something like this I certainly wouldn’t complain. >> >> >> --- >> Jake Wharton >> http://about.me/jakewharton >> >> >> On Wed, Jan 8, 2014 at 8:38 PM, Xavier Ducrohet <x...@android.com> wrote: >> >>> I implemented and checked in parallelization of pre-dexing but even with >>> plenty of cores I don't think you're going to beat a build with predexing >>> off when running a clean build. >>> >>> I think it's still a good idea to disable it on CI. I'd like to see if I >>> can add task specific command line attributes (similar to the tasks --all >>> flag for instance), so that maybe you could just do "./gradlew build >>> --no-pre-dexing" instead of hacking the value of >>> android.dexOptions.preDexLibraries through an env var or something. >>> >>> >>> On Wed, Jan 8, 2014 at 1:25 PM, Jake Wharton <jakewhar...@gmail.com>wrote: >>> >>>> General info: >>>> >>>> - All apps compile with Java 7 >>>> - All apps minSdkVersion=14, targetSdkVersion=19, >>>> compileSdkVersion=19 >>>> - All apps build tools 19.0.0 (will ensure 19.0.1 doesn’t change >>>> behavior) >>>> >>>> Project structure: >>>> >>>> $ tree -d -L 2 >>>> . >>>> ├── one >>>> │ ├── one-app >>>> │ └── one-protos >>>> ├── two >>>> │ ├── two-protos >>>> │ ├── two-v0 >>>> │ └── two-v1 >>>> ├── common >>>> │ ├── truststore >>>> │ ├── typeface-square-market >>>> │ └── zxing-qrcode >>>> └── three >>>> ├── three-app >>>> └── three-protos >>>> >>>> App “One”: >>>> >>>> apk >>>> +--- com.jakewharton.hugo:hugo-annotations:1.0.0 >>>> +--- com.android.support:support-v4:19.0.+ -> 19.0.0 >>>> +--- com.google.android.gms:play-services:4.0.+ -> 4.0.30 >>>> | \--- com.android.support:support-v4:13.0.0 -> 19.0.0 >>>> +--- com.squareup.dagger:dagger:1.2.0 >>>> | \--- javax.inject:javax.inject:1 >>>> +--- com.squareup.okhttp:okhttp:1.2.1 >>>> | \--- com.squareup.okhttp:okhttp-protocols:1.2.1 >>>> +--- com.squareup.picasso:picasso:2.1.1 >>>> +--- com.squareup:pollexor:1.2.0 >>>> +--- com.squareup:otto:1.3.4 >>>> +--- com.squareup.retrofit:retrofit:1.3.0 >>>> | \--- com.google.code.gson:gson:2.2.4 >>>> +--- com.squareup.retrofit:converter-wire:1.3.0 >>>> | +--- com.squareup.retrofit:retrofit:1.3.0 (*) >>>> | \--- com.squareup.wire:wire-runtime:1.2.0 -> 1.3.0-SNAPSHOT >>>> +--- com.jakewharton:butterknife:4.0.1 >>>> +--- com.jakewharton.timber:timber:2.1.0 >>>> +--- com.netflix.rxjava:rxjava-core:0.16.0 >>>> +--- com.netflix.rxjava:rxjava-android:0.16.0 >>>> | \--- com.netflix.rxjava:rxjava-core:0.16.0 >>>> +--- com.crashlytics.android:crashlytics:1.+ -> 1.1.5 >>>> +--- sterling.common:truststore:unspecified >>>> +--- sterling.common:typeface-square-market:unspecified >>>> \--- sterling.one:one-protos:unspecified >>>> \--- com.squareup.wire:wire-runtime:1.3.0-SNAPSHOT >>>> >>>> debugApk >>>> +--- com.jakewharton.hugo:hugo-runtime:1.0.0 >>>> | +--- com.jakewharton.hugo:hugo-annotations:1.0.0 >>>> | \--- org.aspectj:aspectjrt:1.7.4 >>>> +--- com.squareup.retrofit:retrofit-mock:1.3.0 >>>> | \--- com.squareup.retrofit:retrofit:1.3.0 >>>> | \--- com.google.code.gson:gson:2.2.4 >>>> +--- com.github.kevinsawicki:http-request:5.5 >>>> +--- com.jakewharton.madge:madge:1.1.1 >>>> \--- com.jakewharton.scalpel:scalpel:1.0.0 >>>> >>>> apt >>>> \--- com.squareup.dagger:dagger-compiler:1.2.0 >>>> +--- com.squareup.dagger:dagger:1.2.0 >>>> | \--- javax.inject:javax.inject:1 >>>> +--- com.squareup:javawriter:2.3.0 >>>> \--- com.google.guava:guava:15.0 >>>> >>>> App “Two”: >>>> >>>> apk >>>> +--- com.android.support:support-v4:19.0.+ -> 19.0.0 >>>> +--- com.google.android.gms:play-services:4.0.+ -> 4.0.30 >>>> | \--- com.android.support:support-v4:13.0.0 -> 19.0.0 >>>> +--- com.squareup.retrofit:retrofit:1.2.1 >>>> | \--- com.google.code.gson:gson:2.2.4 >>>> +--- com.squareup.retrofit:converter-wire:1.2.1 >>>> | +--- com.squareup.retrofit:retrofit:1.2.1 (*) >>>> | \--- com.squareup.wire:wire-runtime:1.0.1 -> 1.0.2-SNAPSHOT >>>> +--- com.squareup.dagger:dagger:1.2.+ -> 1.2.0 >>>> | \--- javax.inject:javax.inject:1 >>>> +--- com.squareup.okhttp:okhttp:1.2.1 >>>> | \--- com.squareup.okhttp:okhttp-protocols:1.2.1 >>>> +--- com.squareup.picasso:picasso:2.0.2 >>>> +--- com.squareup.wire:wire-runtime:1.0.1 -> 1.0.2-SNAPSHOT >>>> +--- com.crashlytics.android:crashlytics:1.0.2 >>>> +--- com.flurry:agent:2.2.5 >>>> +--- com.jakewharton:butterknife:4.0.+ -> 4.0.1 >>>> +--- com.jakewharton.timber:timber:2.0.+ -> 2.0.0 >>>> +--- sterling.common:typeface-square-market:unspecified >>>> \--- sterling.two:two-protos:unspecified >>>> \--- com.squareup.wire:wire-runtime:1.0.2-SNAPSHOT >>>> >>>> apt >>>> \--- com.squareup.dagger:dagger-compiler:1.2.+ -> 1.2.0 >>>> +--- com.squareup.dagger:dagger:1.2.0 >>>> | \--- javax.inject:javax.inject:1 >>>> +--- com.squareup:javawriter:2.3.0 >>>> \--- com.google.guava:guava:15.0 >>>> >>>> App “Three”: >>>> >>>> apk >>>> +--- com.android.support:support-v4:19.0.+ -> 19.0.0 >>>> +--- com.google.android.gms:play-services:3.2.+ -> 3.2.65 >>>> | \--- com.android.support:support-v4:13.0.0 -> 19.0.0 >>>> +--- com.squareup.dagger:dagger:1.0.1 >>>> | \--- javax.inject:javax.inject:1 >>>> +--- com.squareup.okhttp:okhttp:1.2.1 >>>> | \--- com.squareup.okhttp:okhttp-protocols:1.2.1 >>>> +--- com.squareup.picasso:picasso:2.1.1 >>>> +--- com.squareup.phrase:phrase:1.0-SNAPSHOT >>>> +--- com.squareup.retrofit:retrofit:1.2.3-SNAPSHOT >>>> | \--- com.google.code.gson:gson:2.2.4 >>>> +--- com.squareup.retrofit:converter-wire:1.2.3-SNAPSHOT >>>> | +--- com.squareup.retrofit:retrofit:1.2.3-SNAPSHOT (*) >>>> | \--- com.squareup.wire:wire-runtime:1.2.0 -> 1.3.0-SNAPSHOT >>>> +--- com.jakewharton:butterknife:4.0.+ -> 4.0.1 >>>> +--- com.jakewharton.timber:timber:2.0.0 >>>> +--- com.netflix.rxjava:rxjava-core:0.15.+ -> 0.15.1 >>>> +--- com.netflix.rxjava:rxjava-android:0.15.+ -> 0.15.1 >>>> | \--- com.netflix.rxjava:rxjava-core:0.15.1 >>>> +--- com.crashlytics.android:crashlytics:1.0.+ -> 1.0.4 >>>> +--- sterling.common:truststore:unspecified >>>> +--- sterling.common:typeface-square-market:unspecified >>>> +--- sterling.common:zxing-qrcode:unspecified >>>> \--- sterling.three:three-protos:unspecified >>>> \--- com.squareup.wire:wire-runtime:1.3.0-SNAPSHOT >>>> >>>> debugApk >>>> \--- com.squareup.retrofit:retrofit-mock:1.2.3-SNAPSHOT >>>> \--- com.squareup.retrofit:retrofit:1.2.3-SNAPSHOT >>>> \--- com.google.code.gson:gson:2.2.4 >>>> >>>> >>>> >>>> --- >>>> Jake Wharton >>>> http://about.me/jakewharton >>>> >>>> >>>> On Wed, Jan 8, 2014 at 8:39 AM, Xavier Ducrohet <x...@android.com>wrote: >>>> >>>>> wow, the difference is crazy. If you can provide the dependency tree >>>>> that would be nice. >>>>> >>>>> I was looking at the code for the PreDex task and realize we don't >>>>> parallelize the pre-dexing when there are more than one library which I >>>>> thought we did. I think dx is making use of all the cores but I'm not sure >>>>> how much it would help for this case. >>>>> >>>>> >>>>> On Wed, Jan 8, 2014 at 1:27 AM, Jake Wharton <jakewhar...@gmail.com>wrote: >>>>> >>>>>> All of these benchmarks are done with nothing in gradle.properties. >>>>>> >>>>>> With pre-dexing off, ./gradlew clean assemble --profile --offline: >>>>>> >>>>>> :one:one-app 1m13.07s >>>>>> :one:one-app:dexDogfood 17.612s >>>>>> :one:one-app:dexRelease 17.261s >>>>>> :one:one-app:dexDebug 15.849s >>>>>> >>>>>> :two:two-v1 1m1.84s >>>>>> :two:two-v1:dexDogfood 15.553s >>>>>> :two:two-v1:dexDebug 15.066s >>>>>> :two:two-v1:dexRelease 14.183s >>>>>> >>>>>> :three:three-app 36.907s >>>>>> :three:three-app:dexDebug 9.278s >>>>>> :three:three-app:dexDogfood 8.848s >>>>>> :three:three-app:dexRelease 8.654s >>>>>> >>>>>> With pre-dexing on, ./gradlew clean assemble --profile --offline: >>>>>> >>>>>> :one:one-app 3m14.97s >>>>>> :one:one-app:preDexDebug 58.122s >>>>>> :one:one-app:preDexRelease 51.320s >>>>>> :one:one-app:preDexDogfood 50.261s >>>>>> :one:one-app:dexDebug 5.591s >>>>>> :one:one-app:dexDogfood 4.257s >>>>>> :one:one-app:dexRelease 4.037s >>>>>> >>>>>> :two:two-v1 2m29.22s >>>>>> :two:two-v1:preDexDogfood 36.434s >>>>>> :two:two-v1:preDexDebug 36.408s >>>>>> :two:two-v1:preDexRelease 35.988s >>>>>> :two:two-v1:dexDogfood 14.891s >>>>>> :two:two-v1:dexDebug 4.893s >>>>>> :two:two-v1:dexRelease 4.003s >>>>>> >>>>>> :three:three-app 2m14.54s >>>>>> :three:three-app:preDexRelease 44.191s >>>>>> :three:three-app:preDexDebug 35.970s >>>>>> :three:three-app:preDexDogfood 33.390s >>>>>> :three:three-app:dexDebug 3.956s >>>>>> :three:three-app:dexRelease 3.575s >>>>>> :three:three-app:dexDogfood 3.451s >>>>>> >>>>>> $ java -version >>>>>> java version "1.8.0-ea" >>>>>> Java(TM) SE Runtime Environment (build 1.8.0-ea-b116) >>>>>> Java HotSpot(TM) 64-Bit Server VM (build 25.0-b58, mixed mode) >>>>>> >>>>>> $ ./gradlew --version >>>>>> >>>>>> ------------------------------------------------------------ >>>>>> Gradle 1.9 >>>>>> ------------------------------------------------------------ >>>>>> >>>>>> Build time: 2013-11-19 08:20:02 UTC >>>>>> Build number: none >>>>>> Revision: 7970ec3503b4f5767ee1c1c69f8b4186c4763e3d >>>>>> >>>>>> Groovy: 1.8.6 >>>>>> Ant: Apache Ant(TM) version 1.9.2 compiled on July 8 2013 >>>>>> Ivy: 2.2.0 >>>>>> JVM: 1.8.0-ea (Oracle Corporation 25.0-b58) >>>>>> OS: Mac OS X 10.8.5 x86_64 >>>>>> >>>>>> Let me know if there's anything else I can provide (e.g., dependency >>>>>> tree?) >>>>>> >>>>>> >>>>>> >>>>>> --- >>>>>> Jake Wharton >>>>>> http://about.me/jakewharton >>>>>> >>>>>> >>>>>> On Tue, Jan 7, 2014 at 9:39 PM, Xavier Ducrohet <x...@android.com>wrote: >>>>>> >>>>>>> BTW I'm interested in the time it takes to do predex + dex vs dex >>>>>>> only (no pre-dexing) for clean builds >>>>>>> >>>>>>> It's worth it in incremental builds, but I'm suprised clean builds >>>>>>> are so much longer. I'd like to send some stats to the VM team (who >>>>>>> owns dx) >>>>>>> >>>>>>> thanks. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, Jan 7, 2014 at 11:36 PM, Xavier Ducrohet >>>>>>> <x...@android.com>wrote: >>>>>>> >>>>>>>> android { >>>>>>>> dexOptions { >>>>>>>> preDexLibraries = false >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Jan 7, 2014 at 3:13 PM, Jake Wharton <jakewhar...@gmail.com >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> Well it's definitely pre-dexing. Can this be easily disabled for >>>>>>>>> CI builds? >>>>>>>>> >>>>>>>>> :app1:app1-app 3m14.13s >>>>>>>>> :app1:app1-app:preDexDebug 1m5.23s >>>>>>>>> :app1:app1-app:preDexDogfood 51.836s >>>>>>>>> :app1:app1-app:preDexRelease 41.499s >>>>>>>>> >>>>>>>>> 81% of time spent pre-dexing >>>>>>>>> >>>>>>>>> >>>>>>>>> :app2:app2-v1 2m25.18s >>>>>>>>> :app2:app2-v1:preDexRelease 39.274s >>>>>>>>> :app2:app2-v1:preDexDogfood 38.637s >>>>>>>>> :app2:app2-v1:preDexDebug 36.630s >>>>>>>>> >>>>>>>>> 78% of time spent pre-dexing >>>>>>>>> >>>>>>>>> >>>>>>>>> :app3:app3-app 2m18.30s >>>>>>>>> :app3:app3-app:preDexRelease 45.504s >>>>>>>>> :app3:app3-app:preDexDebug 36.681s >>>>>>>>> :app3:app3-app:preDexDogfood 34.769s >>>>>>>>> >>>>>>>>> 84% of time spent pre-dexing >>>>>>>>> >>>>>>>>> >>>>>>>>> --- >>>>>>>>> Jake Wharton >>>>>>>>> http://about.me/jakewharton >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Jan 6, 2014 at 10:37 PM, Jake Wharton < >>>>>>>>> jakewhar...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> They were clean builds, yes. I'll dig deeper tomorrow. It was the >>>>>>>>>> end of the work day for me when we started the comparisons. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> --- >>>>>>>>>> Jake Wharton >>>>>>>>>> http://about.me/jakewharton >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Mon, Jan 6, 2014 at 6:07 PM, Xavier Ducrohet >>>>>>>>>> <x...@android.com>wrote: >>>>>>>>>> >>>>>>>>>>> incremental dexing has been disabled. There are some issues with >>>>>>>>>>> it. We have implemented pre-dexing though, but I'm not sure how the >>>>>>>>>>> performance is impacted. >>>>>>>>>>> >>>>>>>>>>> Are those time for clean builds? (which should not be impacted >>>>>>>>>>> by the removal of the incremental dex). >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Mon, Jan 6, 2014 at 4:50 PM, Jake Wharton < >>>>>>>>>>> jakewhar...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> I forgot to ask a question... Is anyone else seeing anything >>>>>>>>>>>> like this? >>>>>>>>>>>> >>>>>>>>>>>> I see this on small pet projects too. I can perceive tasks >>>>>>>>>>>> taking 10x longer than when on 0.6.x. Usually those towards the >>>>>>>>>>>> latter end >>>>>>>>>>>> of the processing (preDex, dex, assemble). >>>>>>>>>>>> >>>>>>>>>>>> Still digging for more info to pinpoint what is happening. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> --- >>>>>>>>>>>> Jake Wharton >>>>>>>>>>>> http://about.me/jakewharton >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Mon, Jan 6, 2014 at 4:44 PM, Jake Wharton < >>>>>>>>>>>> jakewhar...@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Our project builds have experienced a serious regression in >>>>>>>>>>>>> terms of performance upon upgrading to 0.7.x. >>>>>>>>>>>>> >>>>>>>>>>>>> Without --parallel: >>>>>>>>>>>>> >>>>>>>>>>>>> - 0.6.x: 4m 21s >>>>>>>>>>>>> - 0.7.x: 9m 04s >>>>>>>>>>>>> >>>>>>>>>>>>> With --parallel: >>>>>>>>>>>>> >>>>>>>>>>>>> - 0.6.x: 3m 36s >>>>>>>>>>>>> - 0.7.x: 6m 58s >>>>>>>>>>>>> >>>>>>>>>>>>> This project has 3 apps (each with three build types, no >>>>>>>>>>>>> flavors), 4 library modules, and 3 java modules. >>>>>>>>>>>>> >>>>>>>>>>>>> --- >>>>>>>>>>>>> Jake Wharton >>>>>>>>>>>>> http://about.me/jakewharton >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> 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 adt-dev+unsubscr...@googlegroups.com. >>>>>>>>>>>> For more options, visit >>>>>>>>>>>> https://groups.google.com/groups/opt_out. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Xavier Ducrohet >>>>>>>>>>> Android SDK Tech Lead >>>>>>>>>>> Google Inc. >>>>>>>>>>> http://developer.android.com | http://tools.android.com >>>>>>>>>>> >>>>>>>>>>> Please do not send me questions directly. Thanks! >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> 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 adt-dev+unsubscr...@googlegroups.com. >>>>>>>>>>> For more options, visit https://groups.google.com/groups/opt_out >>>>>>>>>>> . >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> -- >>>>>>>>> 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 adt-dev+unsubscr...@googlegroups.com. >>>>>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Xavier Ducrohet >>>>>>>> Android SDK Tech Lead >>>>>>>> Google Inc. >>>>>>>> http://developer.android.com | http://tools.android.com >>>>>>>> >>>>>>>> Please do not send me questions directly. Thanks! >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Xavier Ducrohet >>>>>>> Android SDK Tech Lead >>>>>>> Google Inc. >>>>>>> http://developer.android.com | http://tools.android.com >>>>>>> >>>>>>> Please do not send me questions directly. Thanks! >>>>>>> >>>>>>> -- >>>>>>> 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 adt-dev+unsubscr...@googlegroups.com. >>>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>>> >>>>>> >>>>>> -- >>>>>> 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 adt-dev+unsubscr...@googlegroups.com. >>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Xavier Ducrohet >>>>> Android SDK Tech Lead >>>>> Google Inc. >>>>> http://developer.android.com | http://tools.android.com >>>>> >>>>> Please do not send me questions directly. Thanks! >>>>> >>>>> -- >>>>> 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 adt-dev+unsubscr...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>> >>>> >>>> -- >>>> 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 adt-dev+unsubscr...@googlegroups.com. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>> >>> >>> >>> -- >>> Xavier Ducrohet >>> Android SDK Tech Lead >>> Google Inc. >>> http://developer.android.com | http://tools.android.com >>> >>> Please do not send me questions directly. Thanks! >>> >>> -- >>> 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 adt-dev+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- >> 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 adt-dev+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > > > -- > Xavier Ducrohet > Android SDK Tech Lead > Google Inc. > http://developer.android.com | http://tools.android.com > > Please do not send me questions directly. Thanks! > > -- > 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 adt-dev+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- 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 adt-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.