@@ -372,7 +372,25 @@ task collectAllJars {
372372 for (def i = 0 ; i < allJarPaths. size(); i++ ) {
373373 metadataParams. add(allJarPaths. get(i));
374374 }
375+ }
376+ }
377+
378+
379+ task buildMetadata (type : JavaExec ) {
380+ description " builds metadata with provided jar dependencies"
381+
382+ inputs. files(allJarPaths)
383+ inputs. dir(" build/intermediates/classes" )
375384
385+ outputs. files(" metadata/output/assets/metadata/treeNodeStream.dat" , " metadata/output/assets/metadata/treeStringsStream.dat" , " metadata/output/assets/metadata/treeValueStream.dat" )
386+
387+ doFirst {
388+ workingDir " build-tools"
389+
390+ main " -jar"
391+
392+ // get compiled classes to pass to metadata generator
393+ // these need to be called after the classes have compiled
376394 def classesDir = " $buildDir /intermediates/classes"
377395
378396 def classesSubDirs = new File (classesDir). listFiles()
@@ -411,13 +429,13 @@ task buildMetadata (type: JavaExec) {
411429
412430 args metadataParams. toArray()
413431 }
414-
432+
415433 doLast {
416434 copy {
417435 from " $projectDir /metadata/output/assets/metadata"
418436 into " $projectDir /src/main/assets/metadata"
419437 }
420-
438+
421439 def files = new File (" ${ buildDir} /intermediates/res" ). listFiles()
422440 def tmpResourceAPK = null
423441 for (File f : files) {
@@ -427,24 +445,24 @@ task buildMetadata (type: JavaExec) {
427445 break ;
428446 }
429447 }
430-
448+
431449 def aaptCommand = " ${ android.getSdkDirectory().getAbsolutePath()} /build-tools/${ android.buildToolsVersion} /aapt"
432450 if (isWinOs) {
433451 aaptCommand + = " .exe"
434452 }
435-
453+
436454 def tmpAPKPath = tmpResourceAPK. getPath()
437-
455+
438456 def removeCmdParams = new ArrayList<String > ([aaptCommand, " remove" , tmpAPKPath, " assets/metadata/treeNodeStream.dat" , " assets/metadata/treeStringsStream.dat" , " assets/metadata/treeValueStream.dat" ])
439-
457+
440458 exec {
441459 ignoreExitValue true
442460 workingDir " $projectDir /metadata/output"
443461 commandLine removeCmdParams. toArray()
444462 }
445-
463+
446464 def addCmdParams = new ArrayList<String > ([aaptCommand, " add" , tmpAPKPath, " assets/metadata/treeNodeStream.dat" , " assets/metadata/treeStringsStream.dat" , " assets/metadata/treeValueStream.dat" ])
447-
465+
448466 exec {
449467 workingDir " $projectDir /metadata/output"
450468 commandLine addCmdParams. toArray()
0 commit comments