Index: build/config/android/rules.gni |
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni |
index a5da3d0a5809d0b211b055b4fb4444f9140346a5..510f516f47d3532544d8be43333bc274a6dc8294 100644 |
--- a/build/config/android/rules.gni |
+++ b/build/config/android/rules.gni |
@@ -118,17 +118,16 @@ template("generate_jar_jni") { |
base_output_dir = "${root_gen_dir}/${target_name}/${jni_package}" |
jni_output_dir = "${base_output_dir}/jni" |
- jni_generator_include = |
- rebase_path("//base/android/jni_generator/jni_generator_helper.h", |
- root_build_dir) |
+ jni_generator_include = "//base/android/jni_generator/jni_generator_helper.h" |
# TODO(cjhopman): make jni_generator.py support generating jni for multiple |
# .class files from a .jar. |
jni_actions = [] |
foreach(class, invoker.classes) { |
- classname_list = process_file_template( |
+ _classname_list = [] |
+ _classname_list = process_file_template( |
[class], "{{source_name_part}}") |
- classname = classname_list[0] |
+ classname = _classname_list[0] |
jni_target_name = "${target_name}__jni_${classname}" |
jni_actions += [ ":$jni_target_name" ] |
action(jni_target_name) { |
@@ -150,7 +149,7 @@ template("generate_jar_jni") { |
"--optimize_generation=1", |
"--ptr_type=long", |
"--output_dir", rebase_path(jni_output_dir, root_build_dir), |
- "--includes", rebase_path(jni_generator_include, "//"), |
+ "--includes", rebase_path(jni_generator_include, root_build_dir), |
] |
} |
} |
@@ -293,6 +292,7 @@ template("java_cpp_template") { |
# } |
template("android_resources") { |
assert(defined(invoker.resource_dirs)) |
+ assert(defined(invoker.android_manifest) || defined(invoker.custom_package)) |
base_path = "$target_gen_dir/$target_name" |
zip_path = base_path + ".resources.zip" |
@@ -474,8 +474,12 @@ template("android_library") { |
proguard_config = invoker.proguard_config |
} |
+ jar_excluded_patterns = [ |
+ "*/R.class", "*/R##*.class", |
+ "*/Manifest.class", "*/Manifest##*.class", |
+ ] |
if (defined(invoker.jar_excluded_patterns)) { |
- jar_excluded_patterns = invoker.jar_excluded_patterns |
+ jar_excluded_patterns += invoker.jar_excluded_patterns |
} |
if (defined(invoker.srcjar_deps)) { |
@@ -600,6 +604,7 @@ template("android_java_prebuilt") { |
# ] |
# } |
template("android_apk") { |
+ assert(defined(invoker.final_apk_path) || defined(invoker.apk_name)) |
gen_dir = "$target_gen_dir/$target_name" |
base_path = "$gen_dir/$target_name" |
build_config = "$base_path.build_config" |
@@ -609,17 +614,17 @@ template("android_apk") { |
jar_path = "$base_path.jar" |
final_dex_path = "$gen_dir/classes.dex" |
_template_name = target_name |
+ _final_apk_path = "" |
+ if (defined(invoker.final_apk_path)) { |
+ _final_apk_path = invoker.final_apk_path |
+ } else if (defined(invoker.apk_name)) { |
+ _final_apk_path = "$root_build_dir/apks/" + invoker.apk_name + ".apk" |
+ } |
- _native_lib_version_name = "" |
- |
- _use_chromium_linker = false |
- _enable_chromium_linker_tests = false |
- _load_library_from_apk = false |
- |
- _native_libs_dir = base_path + "/libs" |
_native_libs = [] |
if (defined(invoker.native_libs)) { |
_native_libs = invoker.native_libs |
+ _native_libs_dir = base_path + "/libs" |
} |
_keystore_path = android_default_keystore_path |
@@ -639,7 +644,7 @@ template("android_apk") { |
_rebased_build_config = rebase_path(build_config, root_build_dir) |
- write_build_config("${target_name}__build_config") { |
+ write_build_config("${_template_name}__build_config") { |
type = "android_apk" |
srcjar = resource_srcjar_path |
dex_path = final_dex_path |
@@ -657,8 +662,8 @@ template("android_apk") { |
final_deps = [] |
- final_deps += [":${target_name}__process_resources"] |
- process_resources("${target_name}__process_resources") { |
+ final_deps += [":${_template_name}__process_resources"] |
+ process_resources("${_template_name}__process_resources") { |
android_manifest = invoker.android_manifest |
resource_dirs = ["//build/android/ant/empty/res"] |
@@ -668,36 +673,42 @@ template("android_apk") { |
generate_constant_ids = true |
} |
- java_cpp_template("${target_name}__native_libraries_java") { |
- package_name = "org/chromium/base/library_loader" |
- sources = [ |
- "//base/android/java/templates/NativeLibraries.template", |
- ] |
- inputs = [ |
- build_config, |
- ] |
+ if (_native_libs != []) { |
+ _use_chromium_linker = false |
+ _enable_chromium_linker_tests = false |
+ _load_library_from_apk = false |
+ _native_lib_version_name = "" |
- defines = [ |
- "NATIVE_LIBRARIES_LIST=" + |
- "@FileArg($_rebased_build_config:native:java_libraries_list)", |
- "NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"", |
- ] |
- if (_use_chromium_linker) { |
- defines += ["ENABLED_CHROMIUM_LINKER"] |
- } |
- if (_load_library_from_apk) { |
- defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"] |
- } |
- if (_enable_chromium_linker_tests) { |
- defines += ["ENABLE_CHROMIUM_LINKER_TESTS"] |
+ |
+ java_cpp_template("${_template_name}__native_libraries_java") { |
+ package_name = "org/chromium/base/library_loader" |
+ sources = [ |
+ "//base/android/java/templates/NativeLibraries.template", |
+ ] |
+ inputs = [ |
+ build_config, |
+ ] |
+ |
+ defines = [ |
+ "NATIVE_LIBRARIES_LIST=" + |
+ "@FileArg($_rebased_build_config:native:java_libraries_list)", |
+ "NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"", |
+ ] |
+ if (_use_chromium_linker) { |
+ defines += ["ENABLED_CHROMIUM_LINKER"] |
+ } |
+ if (_load_library_from_apk) { |
+ defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"] |
+ } |
+ if (_enable_chromium_linker_tests) { |
+ defines += ["ENABLE_CHROMIUM_LINKER_TESTS"] |
+ } |
} |
+ _srcjar_deps += [ ":${_template_name}__native_libraries_java" ] |
} |
- _srcjar_deps += [ ":${target_name}__native_libraries_java" ] |
- |
- rebased_build_config = rebase_path(build_config, root_build_dir) |
- final_deps += [":${target_name}__java"] |
- android_java_library("${target_name}__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 |
@@ -708,22 +719,24 @@ template("android_apk") { |
dex_path = base_path + ".dex.jar" |
} |
- final_deps += [":${target_name}__final_dex"] |
- dex("${target_name}__final_dex") { |
+ final_deps += [":${_template_name}__final_dex"] |
+ dex("${_template_name}__final_dex") { |
sources = [jar_path] |
inputs = [build_config] |
output = final_dex_path |
- dex_arg_key = "${rebased_build_config}:apk_dex:dependency_dex_files" |
+ dex_arg_key = "${_rebased_build_config}:apk_dex:dependency_dex_files" |
args = ["--inputs=@FileArg($dex_arg_key)"] |
} |
if (_native_libs != []) { |
- copy_ex("${target_name}__prepare_native") { |
+ copy_ex("${_template_name}__prepare_native") { |
clear_dir = true |
- inputs = [build_config] |
+ inputs = [ |
+ build_config |
+ ] |
dest = "$_native_libs_dir/$android_app_abi" |
args = [ |
- "--files=@FileArg(${rebased_build_config}:native:libraries)", |
+ "--files=@FileArg(${_rebased_build_config}:native:libraries)", |
] |
if (is_debug) { |
rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir) |
@@ -734,13 +747,17 @@ template("android_apk") { |
} |
} |
- final_deps += [":${target_name}__create"] |
- create_apk("${target_name}__create") { |
- apk_path = invoker.final_apk_path |
+ final_deps += [":${_template_name}__create"] |
+ create_apk("${_template_name}__create") { |
+ apk_path = _final_apk_path |
android_manifest = invoker.android_manifest |
resources_zip = all_resources_zip_path |
dex_path = final_dex_path |
+ if (defined(invoker.asset_location)) { |
+ asset_location = invoker.asset_location |
+ } |
+ |
keystore_name = _keystore_name |
keystore_path = _keystore_path |
keystore_password = _keystore_password |
@@ -794,8 +811,8 @@ template("unittest_apk") { |
} |
android_apk(target_name) { |
- apk_name = test_suite_name |
- final_apk_path = "$root_build_dir/${apk_name}_apk/${apk_name}-debug.apk" |
+ _apk_name = test_suite_name |
+ final_apk_path = "$root_build_dir/${_apk_name}_apk/${_apk_name}-debug.apk" |
java_files = [ |
"//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java" |
] |