| Index: build/config/android/rules.gni
|
| diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
|
| index 510f516f47d3532544d8be43333bc274a6dc8294..e6df98b6e9bf369c57536aa6bb47ca5920f47733 100644
|
| --- a/build/config/android/rules.gni
|
| +++ b/build/config/android/rules.gni
|
| @@ -620,6 +620,11 @@ template("android_apk") {
|
| } else if (defined(invoker.apk_name)) {
|
| _final_apk_path = "$root_build_dir/apks/" + invoker.apk_name + ".apk"
|
| }
|
| + _dist_jar_path_list = process_file_template(
|
| + [ _final_apk_path ],
|
| + "$root_build_dir/test.lib.java/{{source_name_part}}.jar"
|
| + )
|
| + _dist_jar_path = _dist_jar_path_list[0]
|
|
|
| _native_libs = []
|
| if (defined(invoker.native_libs)) {
|
| @@ -627,6 +632,12 @@ template("android_apk") {
|
| _native_libs_dir = base_path + "/libs"
|
| }
|
|
|
| + _has_java = (
|
| + defined(invoker.java_files)
|
| + || defined(invoker.DEPRECATED_java_in_dir)
|
| + || _native_libs != []
|
| + )
|
| +
|
| _keystore_path = android_default_keystore_path
|
| _keystore_name = android_default_keystore_name
|
| _keystore_password = android_default_keystore_password
|
| @@ -707,25 +718,63 @@ template("android_apk") {
|
| _srcjar_deps += [ ":${_template_name}__native_libraries_java" ]
|
| }
|
|
|
| - final_deps += [":${_template_name}__java"]
|
| - android_java_library("${_template_name}__java") {
|
| - android_manifest = invoker.android_manifest
|
| - if (defined(invoker.java_files)) {
|
| - java_files = invoker.java_files
|
| - } else {
|
| - DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir
|
| + if (_has_java) {
|
| + final_deps += [ ":${_template_name}__java" ]
|
| + android_java_library("${_template_name}__java") {
|
| + android_manifest = invoker.android_manifest
|
| + if (defined(invoker.java_files)) {
|
| + java_files = invoker.java_files
|
| + } else if (defined(invoker.DEPRECATED_java_in_dir)) {
|
| + DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir
|
| + } else {
|
| + assert(_srcjar_deps != [])
|
| + java_files = []
|
| + }
|
| + srcjar_deps = _srcjar_deps
|
| + dex_path = base_path + ".dex.jar"
|
| + }
|
| + } else {
|
| + assert(_srcjar_deps == [])
|
| + }
|
| +
|
| + if (_dist_jar_path != "") {
|
| + # TODO(cjhopman): This is only ever needed to calculate the list of tests to
|
| + # run. See build/android/pylib/instrumentation/test_jar.py. We should be
|
| + # able to just do that calculation at build time instead.
|
| + action("${_template_name}__create_dist_jar") {
|
| + script = "//build/android/gyp/create_dist_jar.py"
|
| + depfile = "$target_gen_dir/$target_name.d"
|
| + inputs = [ build_config ]
|
| + outputs = [
|
| + depfile,
|
| + _dist_jar_path,
|
| + ]
|
| + args = [
|
| + "--depfile", rebase_path(depfile, root_build_dir),
|
| + "--output", rebase_path(_dist_jar_path, root_build_dir),
|
| + "--inputs=@FileArg($_rebased_build_config:dist_jar:dependency_jars)",
|
| + ]
|
| + if (_has_java) {
|
| + inputs += [ jar_path ]
|
| + _rebased_jar_path = rebase_path([ jar_path ], root_build_dir)
|
| + args += [
|
| + "--inputs=$_rebased_jar_path",
|
| + ]
|
| + }
|
| }
|
| - srcjar_deps = _srcjar_deps
|
| - dex_path = base_path + ".dex.jar"
|
| }
|
|
|
| final_deps += [":${_template_name}__final_dex"]
|
| dex("${_template_name}__final_dex") {
|
| - sources = [jar_path]
|
| - inputs = [build_config]
|
| + sources = []
|
| + if (_has_java) {
|
| + deps = [ ":${_template_name}__java" ]
|
| + sources += [ jar_path ]
|
| + }
|
| + inputs = [ build_config ]
|
| output = final_dex_path
|
| dex_arg_key = "${_rebased_build_config}:apk_dex:dependency_dex_files"
|
| - args = ["--inputs=@FileArg($dex_arg_key)"]
|
| + args = [ "--inputs=@FileArg($dex_arg_key)" ]
|
| }
|
|
|
| if (_native_libs != []) {
|
|
|