Hi 

We have a simple test project creating two flavors, one building with jack.

android {
    productFlavors {
         usejack{
             useJack = true
         }
         usejavac{
             // build with javac
         }
    }
}

But since we are stepping up from 1.4.0-beta1 to beta2 the flavor building 
with jack no longer contains the dex file.  This also holds all the way up 
to beta6

Whats new in beta2 it the transform API, but it is said that it does not 
support jack but still there are tasks related to the transform api (red 
lines below)

When I build the useJack flavor (assembleUseJackRelease) i can see the 
following tasks being executed:

:preBuild
:preUsejackReleaseBuild
:checkUsejackReleaseManifest
:prepareUsejackReleaseDependencies
:compileUsejackReleaseAidl
:compileUsejackReleaseRenderscript
:generateUsejackReleaseBuildConfig
:generateUsejackReleaseAssets
:mergeUsejackReleaseAssets
:generateUsejackReleaseResValues
:generateUsejackReleaseResources
:mergeUsejackReleaseResources
:processUsejackReleaseManifest
:processUsejackReleaseResources
:generateUsejackReleaseSources
:jillUsejackReleasePackagedLibraries
:jillUsejackReleaseRuntimeLibraries
:processUsejackReleaseJavaRes
:transformClassesAndResourcesWithExtractJarsForUsejackRelease
:transformResourcesWithMergeJavaResForUsejackRelease
:compileUsejackReleaseJavaWithJack
:compileUsejackReleaseNdk
:validateDebugSigning
:packageUsejackRelease
... 

Building usejavac flavor (assenbleUsejavacRelease) results in:

:preBuild
:preUsejavacReleaseBuild 
:checkUsejavacReleaseManifest
:prepareUsejavacReleaseDependencies
:compileUsejavacReleaseAidl
:compileUsejavacReleaseRenderscript
:generateUsejavacReleaseBuildConfig
:generateUsejavacReleaseAssets
:mergeUsejavacReleaseAssets
:generateUsejavacReleaseResValues 
:generateUsejavacReleaseResources
:mergeUsejavacReleaseResources
:processUsejavacReleaseManifest
:processUsejavacReleaseResources
:generateUsejavacReleaseSources
:compileUsejavacReleaseJavaWithJavac
:compileUsejavacReleaseNdk
:transformClassesAndResourcesWithExtractJarsForUsejavacRelease
:transformClassesWithDexForUsejavacRelease
:processUsejavacReleaseJavaRes 
:transformResourcesWithMergeJavaResForUsejavacRelease
:validateDebugSigning
:packageUsejavacRelease
...

Locking into the log

15:41:50.629 [INFO] 
[org.gradle.api.internal.changedetection.changes.RebuildIncrementalTaskInputs] 
All input files are considered out-of-date for incremental task 
':packageUsejackRelease'.
15:41:50.751 [DEBUG] [org.gradle.api.Project] Packaging 
bootclasspath-usejack-release-unaligned.apk
15:41:50.751 [DEBUG] [org.gradle.api.Project] ... 
build/intermediates/res/resources-usejack-release.ap_:
15:41:50.751 [DEBUG] [org.gradle.api.Project] => AndroidManifest.xml
15:41:50.755 [DEBUG] [org.gradle.api.Project] => res/drawable/icon.png
15:41:50.755 [DEBUG] [org.gradle.api.Project] => res/layout/main.xml
15:41:50.755 [DEBUG] [org.gradle.api.Project] => res/raw/notice.txt
15:41:50.756 [DEBUG] [org.gradle.api.Project] => resources.arsc

while building with jack give me:

15:43:31.356 [INFO] 
[org.gradle.api.internal.changedetection.changes.RebuildIncrementalTaskInputs] 
All input files are considered out-of-date for incremental task 
':packageUsejavacRelease'.
15:43:31.495 [DEBUG] [org.gradle.api.Project] Packaging 
bootclasspath-usejavac-release-unaligned.apk
15:43:31.496 [DEBUG] [org.gradle.api.Project] 
...build/intermediates/res/resources-usejavac-release.ap_:
15:43:31.496 [DEBUG] [org.gradle.api.Project] => AndroidManifest.xml
15:43:31.501 [DEBUG] [org.gradle.api.Project] => res/drawable/icon.png
15:43:31.501 [DEBUG] [org.gradle.api.Project] => res/layout/main.xml
15:43:31.502 [DEBUG] [org.gradle.api.Project] => res/raw/notice.txt
15:43:31.503 [DEBUG] [org.gradle.api.Project] => resources.arsc
15:43:31.504 [DEBUG] [org.gradle.api.Project] => classes.dex

Now, I have looked into the source code of beta-6 and debugging the both 
cases and in
in com.android.build.core.AndroidBuilder method packageApk(..) the Map 
dexFolders are always null when running with Jack. 

and at com.android.build.gradle.tasks,PackageApplication inner class 
ConficAction method execute(PackageApplication) 
at row (315)  ConventionMappingHelper.map(packageApp, "dexFolders" ...... ) 
the is no DEX stream.

As mentioned before it is stated that Transform API isn't supported for 
Jack, but yet there are transform tasks executed so it is difficult to know 
how much of the transform code that actually is used when building with 
jack.

The attribute Map dexFolder in packageApplication is null by default so it 
must be set in some way to get it into the apk. 

BR / JO Sivtoft, Sony Mobile in Lund, Sweden.







-- 
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.

Reply via email to