Commit 9bf7501b authored by John Budorick's avatar John Budorick Committed by Commit Bot

Rewrite android SDK jar build rules.

Android P splits some of the old android.test.* classes into what it
calls "legacy testing libraries." These need to interact with our build
system like the main android.jar does. That jar previously interacted
with the build system as a special case, though; this CL generalizes
it.

Bug: 841695
Cq-Include-Trybots: master.tryserver.chromium.android:android_cronet_tester;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: Ie6a61bdafbf4990e6f82d9431ae8d7c2fd6ba709
Reviewed-on: https://chromium-review.googlesource.com/1102915
Commit-Queue: John Budorick <jbudorick@chromium.org>
Reviewed-by: default avatarHelen Li <xunjieli@chromium.org>
Reviewed-by: default avatarTommy Nyquist <nyquist@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avataragrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#569291}
parent 01cfd3fb
......@@ -9,13 +9,6 @@ import("//build/config/android/rules.gni")
import("generate_resource_rewriter.gni")
import("glue.gni")
webview_public_framework_ijar = "frameworks.public.interface.jar"
generate_interface_jar("public_framework_ijar") {
input_jar = webview_public_framework_jar
output_jar = "$target_out_dir/$webview_public_framework_ijar"
}
generate_resource_rewriter("glue_resource_rewriter") {
# Change deps? please modify glue_library_deps variable.
deps = glue_library_deps
......@@ -27,11 +20,9 @@ android_library("glue") {
deps = glue_library_deps
srcjar_deps = [ ":glue_resource_rewriter" ]
alternative_android_sdk_ijar_dep = ":public_framework_ijar"
_ijar = webview_public_framework_ijar
_ijar_dir = get_label_info(alternative_android_sdk_ijar_dep, "target_out_dir")
alternative_android_sdk_ijar = "$_ijar_dir/$_ijar"
alternative_android_sdk_jar = webview_public_framework_jar
alternative_android_sdk_dep =
"//third_party/android_system_sdk:public_framework_system_java"
java_files = [
"java/src/com/android/webview/chromium/ApiHelperForM.java",
"java/src/com/android/webview/chromium/ApiHelperForN.java",
......
......@@ -17,8 +17,8 @@ template("system_webview_apk_tmpl") {
"//base:base_java",
]
if (!defined(alternative_android_sdk_jar)) {
alternative_android_sdk_jar = webview_framework_jar
if (!defined(alternative_android_sdk_dep)) {
alternative_android_sdk_dep = webview_framework_dep
}
shared_resources = true
......
......@@ -65,6 +65,7 @@ instrumentation_test_apk("webview_ui_test_app_test_apk") {
"//third_party/junit",
"//third_party/ub-uiautomator:ub_uiautomator_java",
]
deps += android_extra_test_deps
data = [
"test/data/",
]
......
......@@ -38,9 +38,8 @@ if (enable_java_templates) {
]
}
generate_interface_jar("android_ijar") {
input_jar = android_sdk_jar
output_jar = "$root_out_dir/lib.java/android.interface.jar"
android_system_java_prebuilt("android_sdk_java") {
jar_path = android_sdk_jar
}
# Write to a file some GN vars that are useful to scripts that use the output
......
......@@ -296,10 +296,11 @@ def _CreateLinkApkArgs(options):
'--version-name', options.version_name,
'--auto-add-overlay',
'--no-version-vectors',
'-I', options.android_sdk_jar,
'-o', options.apk_path,
]
for j in options.android_sdk_jars:
link_command += ['-I', j]
if options.proguard_file:
link_command += ['--proguard', options.proguard_file]
if options.proguard_file_main_dex:
......@@ -336,7 +337,9 @@ def _ExtractVersionFromSdk(aapt_path, sdk_path):
Returns:
A (version_code, version_name) pair of strings.
"""
output = subprocess.check_output([aapt_path, 'dump', 'badging', sdk_path])
output = build_utils.CheckOutput(
[aapt_path, 'dump', 'badging', sdk_path],
print_stdout=False, print_stderr=False)
version_code = re.search(r"versionCode='(.*?)'", output).group(1)
version_name = re.search(r"versionName='(.*?)'", output).group(1)
return version_code, version_name,
......@@ -362,8 +365,23 @@ def _FixManifest(options, temp_dir):
ElementTree.register_namespace('tools', _TOOLS_NAMESPACE)
original_manifest = ElementTree.parse(options.android_manifest)
version_code, version_name = _ExtractVersionFromSdk(
options.aapt_path, options.android_sdk_jar)
def maybe_extract_version(j):
try:
return _ExtractVersionFromSdk(options.aapt_path, j)
except build_utils.CalledProcessError:
return None
extract_all = [maybe_extract_version(j) for j in options.android_sdk_jars]
successful_extractions = [x for x in extract_all if x]
if len(successful_extractions) == 0:
raise Exception(
'Unable to find android SDK jar among candidates: %s'
% ', '.join(options.android_sdk_jars))
elif len(successful_extractions) > 1:
raise Exception(
'Found multiple android SDK jars among candidates: %s'
% ', '.join(options.android_sdk_jars))
version_code, version_name = successful_extractions.pop()
# ElementTree.find does not work if the required tag is the root.
if original_manifest.getroot().tag == 'manifest':
......@@ -635,9 +653,9 @@ def main(args):
possible_input_paths = [
options.aapt_path,
options.android_manifest,
options.android_sdk_jar,
options.shared_resources_whitelist,
]
possible_input_paths += options.android_sdk_jars
input_paths = [x for x in possible_input_paths if x]
input_paths.extend(options.dependencies_res_zips)
input_paths.extend(options.extra_r_text_files)
......
......@@ -17,21 +17,21 @@ _DESUGAR_JAR_PATH = os.path.normpath(os.path.join(
_SRC_ROOT, 'third_party', 'bazel', 'desugar', 'Desugar.jar'))
def _OnStaleMd5(input_jar, output_jar, classpath, bootclasspath_entry):
def _OnStaleMd5(input_jar, output_jar, classpath, bootclasspath):
cmd = [
'java',
'-jar',
_DESUGAR_JAR_PATH,
'--input',
input_jar,
'--bootclasspath_entry',
bootclasspath_entry,
'--output',
output_jar,
# Don't include try-with-resources files in every .jar. Instead, they
# are included via //third_party/bazel/desugar:desugar_runtime_java.
'--desugar_try_with_resources_omit_runtime_classes',
]
for path in bootclasspath:
cmd += ['--bootclasspath_entry', path]
for path in classpath:
cmd += ['--classpath_entry', path]
build_utils.CheckOutput(cmd, print_stdout=False)
......@@ -47,21 +47,19 @@ def main():
help='Jar output path.')
parser.add_argument('--classpath', required=True,
help='Classpath.')
parser.add_argument('--bootclasspath-entry', required=True,
parser.add_argument('--bootclasspath', required=True,
help='Path to javac bootclasspath interface jar.')
options = parser.parse_args(args)
options.bootclasspath = build_utils.ParseGnList(options.bootclasspath)
options.classpath = build_utils.ParseGnList(options.classpath)
input_paths = options.classpath + [
options.bootclasspath_entry,
options.input_jar,
]
input_paths = options.classpath + options.bootclasspath + [options.input_jar]
output_paths = [options.output_jar]
depfile_deps = options.classpath + [_DESUGAR_JAR_PATH]
build_utils.CallAndWriteDepfileIfStale(
lambda: _OnStaleMd5(options.input_jar, options.output_jar,
options.classpath, options.bootclasspath_entry),
options.classpath, options.bootclasspath),
options,
input_paths=input_paths,
input_strings=[],
......
......@@ -131,7 +131,11 @@ def _GenerateRTxt(options, dep_subdirs, gen_dir):
'--no-crunch',
'--auto-add-overlay',
'--no-version-vectors',
'-I', options.android_sdk_jar,
]
for j in options.android_sdk_jars:
package_command += ['-I', j]
package_command += [
'--output-text-symbols', gen_dir,
'-J', gen_dir, # Required for R.txt generation.
'--ignore-assets', build_utils.AAPT_IGNORE_PATTERN]
......@@ -255,8 +259,8 @@ def main(args):
possible_input_paths = [
options.aapt_path,
options.android_manifest,
options.android_sdk_jar,
]
possible_input_paths += options.android_sdk_jars
input_paths = [x for x in possible_input_paths if x]
input_paths.extend(options.dependencies_res_zips)
input_paths.extend(options.extra_r_text_files)
......
......@@ -448,7 +448,7 @@ def ResourceArgsParser():
build_utils.AddDepfileOption(output_opts)
input_opts.add_argument('--android-sdk-jar', required=True,
input_opts.add_argument('--android-sdk-jars', required=True,
help='Path to the android.jar file.')
input_opts.add_argument('--aapt-path', required=True,
......@@ -484,6 +484,8 @@ def HandleCommonOptions(options):
options: the result of parse_args() on the parser returned by
ResourceArgsParser(). This function updates a few common fields.
"""
options.android_sdk_jars = build_utils.ParseGnList(options.android_sdk_jars)
options.dependencies_res_zips = (
build_utils.ParseGnList(options.dependencies_res_zips))
......
......@@ -512,7 +512,7 @@ from util import build_utils
_ROOT_TYPES = ('android_apk', 'java_binary',
'java_annotation_processor', 'junit_binary', 'resource_rewriter')
# Types that should not allow code deps to pass through.
_RESOURCE_TYPES = ('android_assets', 'android_resources')
_RESOURCE_TYPES = ('android_assets', 'android_resources', 'system_java_library')
def _ExtractMarkdownDocumentation(input_text):
......@@ -817,7 +817,6 @@ def main(argv):
help='Path to JAR that contains java resources. Everything '
'from this JAR except meta-inf/ content and .class files '
'will be added to the final APK.')
parser.add_option('--bootclasspath', help='Path to custom android.jar/rt.jar')
# android library options
parser.add_option('--dex-path', help='Path to target\'s dex output.')
......@@ -883,17 +882,18 @@ def main(argv):
jar_path_options = ['jar_path', 'unprocessed_jar_path', 'interface_jar_path']
required_options_map = {
'java_binary': ['build_config'],
'java_annotation_processor': ['build_config', 'main_class'],
'junit_binary': ['build_config'],
'java_library': ['build_config'] + jar_path_options,
'android_apk': ['build_config','dex_path'] + jar_path_options,
'android_assets': ['build_config'],
'android_resources': ['build_config', 'resources_zip'],
'android_apk': ['build_config','dex_path'] + jar_path_options,
'dist_jar': ['build_config'],
'dist_aar': ['build_config'],
'resource_rewriter': ['build_config'],
'dist_jar': ['build_config'],
'group': ['build_config'],
'java_annotation_processor': ['build_config', 'main_class'],
'java_binary': ['build_config'],
'java_library': ['build_config'] + jar_path_options,
'junit_binary': ['build_config'],
'resource_rewriter': ['build_config'],
'system_java_library': ['build_config'],
}
required_options = required_options_map.get(options.type)
if not required_options:
......@@ -924,7 +924,8 @@ def main(argv):
is_java_target = options.type in (
'java_binary', 'junit_binary', 'java_annotation_processor',
'java_library', 'android_apk', 'dist_aar', 'dist_jar')
'java_library', 'android_apk', 'dist_aar', 'dist_jar',
'system_java_library')
deps = _DepsFromPaths(
build_utils.ParseGnList(options.deps_configs), options.type)
......@@ -939,6 +940,7 @@ def main(argv):
processor_deps.AllConfigPaths() +
classpath_deps.AllConfigPaths()))
system_library_deps = deps.Direct('system_java_library')
direct_library_deps = deps.Direct('java_library')
all_library_deps = deps.All('java_library')
all_resources_deps = deps.All('android_resources')
......@@ -985,8 +987,6 @@ def main(argv):
gradle['dependent_java_projects'] = []
gradle['dependent_prebuilt_jars'] = deps.GradlePrebuiltJarPaths()
if options.bootclasspath:
gradle['bootclasspath'] = options.bootclasspath
if options.main_class:
deps_info['main_class'] = options.main_class
......@@ -1138,7 +1138,8 @@ def main(argv):
if is_java_target:
# The classpath used to compile this target when annotation processors are
# present.
javac_classpath = [c['unprocessed_jar_path'] for c in direct_library_deps]
javac_classpath = [
c['unprocessed_jar_path'] for c in direct_library_deps]
# The classpath used to compile this target when annotation processors are
# not present. These are also always used to know when a target needs to be
# rebuilt.
......@@ -1148,7 +1149,8 @@ def main(argv):
javac_full_interface_classpath = [
c['interface_jar_path'] for c in all_library_deps]
# The classpath used for bytecode-rewritting.
javac_full_classpath = [c['unprocessed_jar_path'] for c in all_library_deps]
javac_full_classpath = [
c['unprocessed_jar_path'] for c in all_library_deps]
# The classpath to use to run this target (or as an input to ProGuard).
java_full_classpath = []
if options.jar_path:
......@@ -1263,7 +1265,16 @@ def main(argv):
dex_config = config['final_dex']
dex_config['dependency_dex_files'] = deps_dex_files
system_jars = [c['jar_path'] for c in system_library_deps]
system_interface_jars = [c['interface_jar_path'] for c in system_library_deps]
if system_library_deps:
config['android'] = {}
config['android']['sdk_interface_jars'] = system_interface_jars
config['android']['sdk_jars'] = system_jars
gradle['bootclasspath'] = system_jars
if is_java_target:
config['javac']['bootclasspath'] = system_jars
config['javac']['classpath'] = javac_classpath
config['javac']['interface_classpath'] = javac_interface_classpath
# Direct() will be of type 'java_annotation_processor'.
......
......@@ -42,7 +42,7 @@ def _AddNamespace(name):
"""Adds the android namespace prefix to the given identifier."""
return '{%s}%s' % (_ANDROID_NAMESPACE, name)
def _ParseArgs():
def _ParseArgs(args):
parser = argparse.ArgumentParser()
parser.add_argument('--src-manifest',
help='The main manifest of the app',
......@@ -57,12 +57,15 @@ def _ParseArgs():
parser.add_argument('--out-apk', help='Path to output .ap_ file')
parser.add_argument('--in-apk', help='Path to non-incremental .ap_ file')
parser.add_argument('--aapt-path', help='Path to the Android aapt tool')
parser.add_argument('--android-sdk-jar', help='Path to the Android SDK jar.')
parser.add_argument('--android-sdk-jars', help='Path to the Android SDK jar.')
ret = parser.parse_args()
if ret.out_apk and not (ret.in_apk and ret.aapt_path and ret.android_sdk_jar):
ret = parser.parse_args(build_utils.ExpandFileArgs(args))
if ret.out_apk and not (ret.in_apk and ret.aapt_path
and ret.android_sdk_jars):
parser.error(
'--out-apk requires --in-apk, --aapt-path, and --android-sdk-jar.')
'--out-apk requires --in-apk, --aapt-path, and --android-sdk-jars.')
ret.android_sdk_jars = build_utils.ParseGnList(ret.android_sdk_jars)
return ret
......@@ -122,8 +125,8 @@ def _ExtractVersionFromApk(aapt_path, apk_path):
return version_code, version_name,
def main():
options = _ParseArgs()
def main(raw_args):
options = _ParseArgs(raw_args)
with open(options.src_manifest) as f:
main_manifest_data = f.read()
new_manifest_data = _ProcessManifest(main_manifest_data,
......@@ -136,10 +139,12 @@ def main():
options.aapt_path, options.in_apk)
with tempfile.NamedTemporaryFile() as f:
cmd = [options.aapt_path, 'package', '-f', '-F', f.name,
'-M', options.out_manifest, '-I', options.android_sdk_jar,
'-M', options.out_manifest,
'-I', options.in_apk, '--replace-version',
'--version-code', version_code, '--version-name', version_name,
'--debug-mode']
for j in options.android_sdk_jars:
cmd += ['-I', j]
subprocess.check_call(cmd)
with zipfile.ZipFile(f.name, 'a') as z:
path_transform = lambda p: None if p == 'AndroidManifest.xml' else p
......@@ -147,6 +152,8 @@ def main():
z, [options.in_apk], path_transform=path_transform)
shutil.copyfile(f.name, options.out_apk)
return 0
if __name__ == '__main__':
main()
sys.exit(main(sys.argv[1:]))
......@@ -213,7 +213,7 @@ class _ParseState(object):
# There can be no nested constant element values.
assert parent.ftype in [_ELEMENT_ARRAY, _ELEMENT_ANNOTATION]
field = self._annotation_stack[-1]
if type(value) is str and not field.ftype == _ELEMENT_PRIMITIVE:
if isinstance(value, str) and not field.ftype == _ELEMENT_PRIMITIVE:
# The value comes from the output parser via
# UpdateCurrentAnnotationFieldValue, and should be a value of a constant
# element. If it isn't, just skip it.
......
......@@ -118,10 +118,10 @@ if (is_android || is_chromeos) {
system_webview_apk_target = "//android_webview:system_webview_apk"
}
webview_public_framework_jar =
"//third_party/android_system_sdk/android_system.jar"
if (!defined(webview_framework_jar)) {
webview_framework_jar = webview_public_framework_jar
webview_public_framework_dep =
"//third_party/android_system_sdk:public_framework_system_java"
if (!defined(webview_framework_dep)) {
webview_framework_dep = webview_public_framework_dep
}
# TODO(crbug.com/807768): Remove this extra dependency.
......
This diff is collapsed.
......@@ -782,6 +782,8 @@ if (enable_java_templates) {
# deps: Specifies the dependencies of this target. Any Android resources
# listed in deps will be included by libraries/apks that depend on this
# target.
# alternative_android_sdk_dep: Optional. Alternative Android system
# android java target to use.
# resource_dirs: List of directories containing resources for this target.
# generated_resource_dirs: List of directories containing resources for this
# target which are *generated* by a dependency. |generated_resource_files|
......@@ -831,6 +833,17 @@ if (enable_java_templates) {
_srcjar_path = _base_path + ".srcjar"
}
_deps = []
if (defined(invoker.deps)) {
_deps += invoker.deps
}
if (defined(invoker.alternative_android_sdk_dep)) {
_deps += [ invoker.alternative_android_sdk_dep ]
} else {
_deps += [ "//build/android:android_sdk_java" ]
}
write_build_config(_build_config_target_name) {
type = "android_resources"
build_config = _build_config
......@@ -859,9 +872,7 @@ if (enable_java_templates) {
srcjar = _srcjar_path
}
if (defined(invoker.deps)) {
possible_config_deps = invoker.deps
}
possible_config_deps = _deps
}
prepare_resources(target_name) {
......@@ -869,15 +880,12 @@ if (enable_java_templates) {
[
"android_manifest",
"custom_package",
"deps",
"generated_resource_dirs",
"generated_resource_files",
"resource_dirs",
"v14_skip",
])
if (!defined(deps)) {
deps = []
}
deps = _deps
deps += [ ":$_build_config_target_name" ]
if (defined(invoker.android_manifest_dep)) {
deps += [ invoker.android_manifest_dep ]
......@@ -1241,6 +1249,9 @@ if (enable_java_templates) {
type = "junit_binary"
main_target_name = invoker.target_name
# Include the android SDK jar(s) for resource processing.
include_android_sdk = true
# Robolectric can handle deps that set !supports_android as well those
# that set requires_android.
bypass_platform_checks = true
......@@ -1435,6 +1446,9 @@ if (enable_java_templates) {
if (defined(invoker.deps)) {
_deps = invoker.deps
}
if (_supports_android) {
_deps += [ "//build/android:android_sdk_java" ]
}
_enable_build_hooks =
_supports_android &&
(!defined(invoker.no_build_hooks) || !invoker.no_build_hooks)
......@@ -1469,18 +1483,16 @@ if (enable_java_templates) {
proguard(_jar_target_name) {
forward_variables_from(invoker,
[
"alternative_android_sdk_jar",
"data",
"proguard_jar_path",
])
build_config = _build_config
deps = _deps
inputs = [
_build_config,
]
# Although these will be listed as deps in the depfile, they must also
# appear here so that "gn analyze" knows about them.
# https://crbug.com/827197
inputs = []
if (defined(invoker.proguard_configs)) {
inputs += invoker.proguard_configs
}
......@@ -1705,11 +1717,6 @@ if (enable_java_templates) {
java_library(target_name) {
forward_variables_from(invoker, "*")
if (defined(alternative_android_sdk_ijar)) {
assert(defined(alternative_android_sdk_ijar_dep))
assert(defined(alternative_android_sdk_jar))
}
supports_android = true
requires_android = true
......@@ -1746,6 +1753,15 @@ if (enable_java_templates) {
}
}
template("android_system_java_prebuilt") {
java_library_impl(target_name) {
forward_variables_from(invoker, "*")
no_build_hooks = true
supports_android = true
type = "system_java_library"
}
}
# Creates org/chromium/base/BuildConfig.java
# This doesn't really belong in //build since it genates a file for //base.
# However, we don't currently have a better way to include this file in all
......@@ -2146,7 +2162,6 @@ if (enable_java_templates) {
compile_apk_resources(_compile_resources_target) {
forward_variables_from(invoker,
[
"alternative_android_sdk_jar",
"app_as_shared_lib",
"shared_resources",
"support_zh_hk",
......@@ -2316,6 +2331,7 @@ if (enable_java_templates) {
java_library_impl(_java_target) {
forward_variables_from(invoker,
[
"alternative_android_sdk_dep",
"android_manifest",
"android_manifest_dep",
"apk_under_test",
......@@ -2396,18 +2412,14 @@ if (enable_java_templates) {
if (_proguard_enabled) {
_proguard_target = "${_template_name}__proguard"
proguard(_proguard_target) {
forward_variables_from(invoker,
[
"alternative_android_sdk_jar",
"proguard_jar_path",
])
forward_variables_from(invoker, [ "proguard_jar_path" ])
build_config = _build_config
deps = _deps + [
":$_build_config_target",
":$_compile_resources_target",
":$_java_target",
]
inputs = [
_build_config,
_jar_path,
]
......@@ -2570,7 +2582,6 @@ if (enable_java_templates) {
create_apk("${_template_name}__create") {
forward_variables_from(invoker,
[
"alternative_android_sdk_jar",
"public_deps",
"secondary_native_libs",
"shared_resources",
......
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
android_system_java_prebuilt("public_framework_system_java") {
jar_path = "//third_party/android_system_sdk/android_system.jar"
}
......@@ -1179,6 +1179,7 @@ chrome_public_apk_tmpl_shared("chrome_public_apk_for_test") {
"//components/heap_profiling:heap_profiling_java_test_support",
"//content/public/test/android:content_java_test_support",
]
deps += android_extra_test_deps
if (!is_java_debug) {
proguard_configs = [ "//chrome/android/java/apk_for_test.flags" ]
}
......@@ -1340,6 +1341,7 @@ if (enable_vr) {
deps = [
":chrome_test_vr_java",
]
deps += android_extra_test_deps
additional_apks = [ "//net/android:net_test_support_apk" ]
proguard_enabled = !is_java_debug
if (proguard_enabled && !enable_proguard_obfuscation) {
......@@ -1413,6 +1415,7 @@ instrumentation_test_apk("chrome_sync_shell_test_apk") {
"//third_party/junit",
"//ui/android:ui_java",
]
deps += android_extra_test_deps
proguard_enabled = !is_java_debug
if (proguard_enabled && !enable_proguard_obfuscation) {
proguard_configs = [ "//base/android/proguard/enable_obfuscation.flags" ]
......
......@@ -149,7 +149,7 @@ template("monochrome_public_apk_tmpl") {
[ "//chrome/android:monochrome_secondary_abi_lib" ]
}
alternative_android_sdk_jar = webview_framework_jar
alternative_android_sdk_dep = webview_framework_dep
app_as_shared_lib = true
use_chromium_linker = false
requires_sdk_api_level_23 = true
......
......@@ -719,6 +719,7 @@ instrumentation_test_apk("cronet_test_instrumentation_apk") {
"//third_party/android_support_test_runner:runner_java",
"//third_party/hamcrest:hamcrest_core_java",
]
deps += android_extra_test_deps
additional_apks = [ "//net/android:net_test_support_apk" ]
data_deps = [
......@@ -778,6 +779,7 @@ instrumentation_test_apk(
"//base:base_java_test_support",
"//third_party/android_support_test_runner:runner_java",
]
deps += android_extra_test_deps
proguard_enabled = true
......@@ -827,6 +829,7 @@ instrumentation_test_apk(
deps = [
":cronet_smoketests_missing_native_library_java",
]
deps += android_extra_test_deps
proguard_enabled = true
......@@ -863,6 +866,7 @@ android_apk("cronet_perf_test_apk") {
":cronet_test_apk_java",
"//base:base_java",
]
deps += android_extra_test_deps
proguard_enabled = true
proguard_configs = [
......
......@@ -271,6 +271,7 @@ if (is_android) {
"//third_party/cacheinvalidation:cacheinvalidation_proto_java",
"//third_party/junit",
]
deps += android_extra_test_deps
java_files = [
"android/javatests/src/org/chromium/components/invalidation/InvalidationClientServiceTest.java",
"android/javatests/src/org/chromium/components/invalidation/TestableInvalidationClientService.java",
......
......@@ -9,9 +9,8 @@ import("//build/config/android/rules.gni")
# the full guava and one that supports android. Please keep the versions in
# sync with one another.
java_prebuilt("guava_android_java") {
android_java_prebuilt("guava_android_java") {
testonly = true
supports_android = true
jar_path = "lib/guava-android.jar"
# Avoids dependency cycle.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment