meet jack & jill
TRANSCRIPT
@mgrzechocinski 2
“Jack and Jill went up the hillTo fetch a pail of water.Jack fell down and broke his crown,And Jill came tumbling after.”
English nursery rhyme, 1786
@mgrzechocinski
Mateusz Grzechociński
3
@mgrzechocinski
http://gradleware.com
@mgrzechocinski 7
dependencies({(((((compile('com.android.support:appcompat#v7:21.0.3'(((((compile('com.squareup.picasso:picasso:2.4.0'(((((compile('com.jakewharton:butterknife:6.1.0'(((((compile('com.octo.android.robospice:robospice:1.4.14'(((((compile('com.octo.android.robospice:robospice#retrofit:1.4.14'(((((compile('com.octo.android.robospice:robospice#ormlite:1.4.14'(((((compile('com.getbase:floatingactionbutton:1.3.0'(((((compile('fr.baloomba:viewpagerindicator:2.4.2'(((((compile('com.google.dagger:dagger:2.0#SNAPSHOT'(((((compile('com.android.support:cardview#v7:21.0.3'(((((compile('com.android.support:recyclerview#v7:21.0.3'(((((compile('io.reactivex:rxandroid:0.24.0'(((((compile('com.jakewharton.timber:timber:2.5.0'(((((compile('org.parceler:parceler#api:0.2.15'(((((compile('me.tatarka.support:jobscheduler:0.1.1'(((((compile('se.emilsjolander:stickylistheaders:2.5.2'(((((compile('com.nispok:snackbar:2.7.5'(((((compile('de.keyboardsurfer.android.widget:crouton:1.8.5'(
((((apt('org.parceler:parceler:0.2.15'(((((apt('org.projectlombok:lombok:1.14.8'(((((apt('com.google.dagger:dagger#compiler:2.0#SNAPSHOT'(
((((provided('org.glassfish:javax.annotation:10.0#b28'(((((provided('org.projectlombok:lombok:1.14.8'(}(
@mgrzechocinski
Android WorldJava World
9
Dalvik.bytecode.
(classes.dex)javac dx
Java.source.code.(*.java)
Java.byte.code.(*.class)
On.to.APK
@mgrzechocinski
Java World Android World
10
Java.source.code.(*.java)
Java.byte.code.(*.class)
Optimised.Shrunk.
Obfuscated.
Dalvik.bytecode.classes.dex.Libraries.
(*.class./.*.jar)
javac
ProGuard
Optimised.Shrunk.
Obfuscated.
.Java.bytecode.(*.class).
dx
Config Mapping
On.to.APK
@mgrzechocinski
Java World Android World
12
Java.source.code.(*.java)
Dalvik.bytecode.
(classes.dex)JACK On.to.
APK
ProGuardConfig
ProGuardMapping
@mgrzechocinski
Java World Android World
15
Library.modules.(*.java)
Jack.intermediate.bytecode.(*.jayce)
JILL On.to.APKJar.
dependencies..(*.jar)
AAR.dependencies..
(*.aar)
JACKDalvik.
bytecode.(classes.dex)
@mgrzechocinski
JACK RESPONSIBILITIES
CompilingMinificationRepackagingMultidexingIncremental compilationAll in one shot!
16
@mgrzechocinski
Gradle
20
buildTypes({(((((((((experimental.initWith(buildTypes.debug)(((((((((experimental({(((((((((((((//"Enable"the"experimental"Jack"build"tools."((((((((((((//"Only"for"application"projects"(((((((((((+useJack+=+true+((((((((((((minifyEnabled(true(((((((((}(}
@mgrzechocinski
ANT
21
<ANDROID_HOME>/build-tools/21.1.0/jill.jar
<ANDROID_HOME>/build-tools/21.1.0/jack.jar
@mgrzechocinski
CLEAN BUILD$ gradle —daemon assemble[Debug|Experimental]
23
Debug
Experimental
0.s 4,25.s 8,5.s 12,75.s 17.s
without.Proguard with.ProGuard
@mgrzechocinski
REBUILD AFTER CHANGE//change one line of code $ gradle —daemon assemble[Debug|Experimental]
24
Debug
Experimental
0.s 4,25.s 8,5.s 12,75.s 17.s
without.Proguard with.Proguard
@mgrzechocinski
REBUILD W/O CHANGES$ gradle —daemon assemble[Debug|Experimental]
25
Debug
Experimental
0.s 4,25.s 8,5.s 12,75.s 17.s
without.Proguard with.Proguard
@mgrzechocinski
ProGuard supportor rather ProGuard config/mapping support?
27
WARNING: com.android.jack.shrob.proguard.GrammarActions: Proguard flag is not supported: -dontskipnonpubliclibraryclassesWARNING: com.android.jack.shrob.proguard.GrammarActions: Proguard flag is not supported: -verboseWARNING: com.android.jack.shrob.proguard.GrammarActions: Proguard flag is not supported: -dontwarn android.support.**
@mgrzechocinski
classes.zip$ unzip -l app/build/intermediates/classes/experimental/classes.zip
28
Archive: app/build/intermediates/classes/experimental/classes.zip Length Date Time Name -------- ---- ---- ---- 885 02-04-15 03:05 net/grzechocinski/android/stack/MainActivity.jayce 249 02-04-15 03:05 jack.properties -------- ------- 1134
@mgrzechocinski
android.jar$ unzip -l app/build/intermediates/jill/experimental/runtime/android-b71ed217f6b570078ce4d6986605254dc4652c57.jar
29
[…] 1628 02-04-15 03:05 dalvik/system/DexClassLoader.jayce 2810 02-04-15 03:05 dalvik/system/PathClassLoader.jayce 4112 02-04-15 03:05 dalvik/system/BaseDexClassLoader.jayce 487 02-04-15 03:05 dalvik/annotation/TestTargetClass.jayce 590 02-04-15 03:05 dalvik/annotation/TestTarget.jayce -------- ------- 41307409 10624 files
@mgrzechocinski
LIMITATIONS
Java 8 supportAnnotation processorsBytecode manipulationAST modificationsIncremental buildsProguard flags
30
@mgrzechocinski
Mateusz Grzechociński@mgrzechocinskihttp://grzechocinski.net
Thank you
33