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.