In looking further into this, it seems that it may be caused by a library
project not compiling properly, or not getting added to the jack/jill build
cycle.
Running the gradle task with --debug, I spotted this warning in the log
output while running the "jack" command:
16:50:27.725 [INFO] [org.gradle.process.internal.DefaultExecHandle]
Starting process 'command
'/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin/java''.
Working directory: git/workspace Command:
/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin/java
-Djava.awt.headless=true -Xmx4G -Dfile.encoding=UTF-8 -Duser.country=US
-Duser.language=en -Duser.variant -cp /sdk/build-tools/23.0.2/jack.jar
com.android.jack.Main --verbose debug --classpath
build/intermediates/jill/jack/debug/runtime/android-ced512afb3dcf31a4e2d4ff40214332afd20b01d.jar
--import build/intermediates/jill/jack/debug/packaged/... --import ...
<SNIP>
16:50:34.164 [DEBUG] [org.gradle.process.internal.DefaultExecHandle]
Process 'command
'/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin/java''
*finished with exit value 4 (state: FAILED)*
16:50:34.173* [QUIET] [system.out] Warning: Exception while processing task*
java.io.IOException: com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command
'/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin/java''
finished with non-zero exit value 4
So the jack command is failing with exit code 4, but that failure is never
bubbling back out to the Gradle build process. The gradle build just
continues on as if the Jack process succeeded. Because it failed, there
will be no dex files generated by Jack, and that's why classes*.dex are all
missing from the APK.
So I extracted the "java -jar jack.jar ..." command from the gradle log,
and tried running it manually, and I got almost 4000 lines of JSON output.
When I change "--verbose debug" to "--verbose error", I still get 2500
lines of JSON output.
The Jack errors are reporting things like:
MESSAGE:{"kind":"ERROR","text":"The hierarchy of the type MyContentFragment
is
inconsistent","sources":[{"file":"src\/main\/java\/path\/to\/MyContentFragment.java","position":{"startLine":45,"startColumn":-1,"startOffset":-1,"endLine":45,"endColumn":-1,"endOffset":-1}}]}
But it doesn't explain why that hierarchy is inconsistent. The only thing
I could think of was that android.support.v4.app.Fragment maybe couldn't be
found, but I did find the jar file that contains that jayce file, and it is
already included in the --import entries.
At this point I'm not sure how else to proceed. The jack tool does not
seem to be reporting any usable errors to help track down what is happening.
I'll try to recreate a simplified test case to prove the above theory.
On Wednesday, February 3, 2016 at 4:41:15 PM UTC-5, Joe Hansche wrote:
>
> Test is basically:
>
> productFlavors {
> javac {
> useJack false
> }
> jack {
> useJack true
> }
> }
>
> $ ./gradlew :assembleJavacDebug :assembleJackDebug
>
> $ ls -l build/outputs/apk/ | grep -v unaligned
> total 443000
> -rw-r--r--+ 1 jhansche staff 30074468 Feb 3 16:31 App-javac-debug.apk
> -rw-r--r--+ 1 jhansche staff 21634256 Feb 3 16:32 App-jack-debug.apk
>
> Notice the size difference is almost 10 MB. Checking the contents of the
> compiled APKs shows that javac contains 3 (multidex) dex files:
>
> $ unzip -l build/outputs/apk/App-javac-debug.apk | grep dex
> 8870148 02-03-16 16:31 classes.dex
> 9338456 02-03-16 16:31 classes2.dex
> 1275928 02-03-16 16:31 classes3.dex
>
> while the Jack version contains 0 dex files:
>
> $ unzip -l build/outputs/apk/App-jack-debug.apk | grep dex
> $ unzip -l build/outputs/apk/App-jack-debug.apk | grep -c dex
> 0
>
>
> Running `find build -name '*.dex'` also shows only the dex files that go
> into the "Javac" flavor -- no files attributed to the "Jack" flavor.
>
> On Wednesday, February 3, 2016 at 4:35:15 PM UTC-5, Joe Hansche wrote:
>>
>> Using 2.0 preview 9 and gradle plugin 2.0.0-alpha9, building with useJack
>> true, I'm still seeing no classes.dex added in the APK. Was this a
>> regression?
>
>
--
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.