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.

Reply via email to