| Index: build/config/android/internal_rules.gni
|
| diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
|
| index 287a0066fba3b8270d4ad585890bfb451891a87c..6e28eea72bd520617777fbfde362c448702b85fd 100644
|
| --- a/build/config/android/internal_rules.gni
|
| +++ b/build/config/android/internal_rules.gni
|
| @@ -15,6 +15,11 @@ android_sdk_jar = "$android_sdk/android.jar"
|
| rebased_android_sdk_jar = rebase_path(android_sdk_jar, root_build_dir)
|
| android_aapt_path = "$rebased_android_sdk_build_tools/aapt"
|
|
|
| +android_configuration_name = "Release"
|
| +if (is_debug) {
|
| + android_configuration_name = "Debug"
|
| +}
|
| +
|
| template("android_lint") {
|
| set_sources_assignment_filter([])
|
|
|
| @@ -467,17 +472,98 @@ template("process_java_prebuilt") {
|
| }
|
| }
|
|
|
| -template("finalize_apk") {
|
| +# Creates an unsigned .apk.
|
| +#
|
| +# Variables
|
| +# deps: Specifies the dependencies of this target.
|
| +# dex_path: Path to classes.dex file to include (optional).
|
| +# resource_packaged_apk_path: Path to .ap_ to use.
|
| +# output_apk_path: Output path for the generated .apk.
|
| +# native_libs_dir: Directory containing native libraries.
|
| +template("package_apk") {
|
| action(target_name) {
|
| forward_variables_from(invoker,
|
| [
|
| - "data_deps",
|
| "deps",
|
| + "data_deps",
|
| "public_deps",
|
| "testonly",
|
| ])
|
| + script = "//build/android/gyp/ant.py"
|
| + _ant_script = "//build/android/ant/apk-package.xml"
|
| +
|
| + depfile = "$target_gen_dir/$target_name.d"
|
| +
|
| + inputs = [
|
| + invoker.resource_packaged_apk_path,
|
| + _ant_script,
|
| + ]
|
| + if (defined(invoker.dex_path)) {
|
| + inputs += [ invoker.dex_path ]
|
| + }
|
| +
|
| + outputs = [
|
| + depfile,
|
| + invoker.output_apk_path,
|
| + ]
|
| +
|
| + _rebased_emma_jar = ""
|
| + _rebased_resource_packaged_apk_path =
|
| + rebase_path(invoker.resource_packaged_apk_path, root_build_dir)
|
| + _rebased_packaged_apk_path =
|
| + rebase_path(invoker.output_apk_path, root_build_dir)
|
| + _rebased_native_libs_dir =
|
| + rebase_path(invoker.native_libs_dir, root_build_dir)
|
| + args = [
|
| + "--depfile",
|
| + rebase_path(depfile, root_build_dir),
|
| + "--",
|
| + "-quiet",
|
| + "-DANDROID_SDK_ROOT=$rebased_android_sdk_root",
|
| + "-DANDROID_SDK_TOOLS=$rebased_android_sdk_build_tools",
|
| + "-DRESOURCE_PACKAGED_APK_NAME=$_rebased_resource_packaged_apk_path",
|
| + "-DCONFIGURATION_NAME=$android_configuration_name",
|
| + "-DNATIVE_LIBS_DIR=$_rebased_native_libs_dir",
|
| + "-DOUT_DIR=",
|
| + "-DUNSIGNED_APK_PATH=$_rebased_packaged_apk_path",
|
| + "-DEMMA_INSTRUMENT=0",
|
| + "-DEMMA_DEVICE_JAR=$_rebased_emma_jar",
|
| + "-Dbasedir=.",
|
| + "-buildfile",
|
| + rebase_path(_ant_script, root_build_dir),
|
| + ]
|
| + if (defined(invoker.dex_path)) {
|
| + _rebased_dex_path = rebase_path(invoker.dex_path, root_build_dir)
|
| + args += [
|
| + "-DDEX_FILE_PATH=$_rebased_dex_path",
|
| + "-DHAS_CODE=true",
|
| + ]
|
| + } else {
|
| + args += [ "-DHAS_CODE=false" ]
|
| + }
|
| + }
|
| +}
|
| +
|
| +# Signs & zipaligns an apk.
|
| +#
|
| +# Variables
|
| +# input_apk_path: Path of the .apk to be finalized.
|
| +# output_apk_path: Output path for the generated .apk.
|
| +# keystore_path: Path to keystore to use for signing.
|
| +# keystore_name: Key alias to use.
|
| +# keystore_password: Keystore password.
|
| +# rezip_apk: Whether to add crazy-linker alignment.
|
| +template("finalize_apk") {
|
| + action(target_name) {
|
| script = "//build/android/gyp/finalize_apk.py"
|
| depfile = "$target_gen_dir/$target_name.d"
|
| + forward_variables_from(invoker,
|
| + [
|
| + "deps",
|
| + "data_deps",
|
| + "public_deps",
|
| + "testonly",
|
| + ])
|
|
|
| sources = [
|
| invoker.input_apk_path,
|
| @@ -527,6 +613,11 @@ template("create_apk") {
|
| _android_manifest = invoker.android_manifest
|
| _base_path = invoker.base_path
|
| _final_apk_path = invoker.apk_path
|
| + _incremental_final_apk_path_helper =
|
| + process_file_template(
|
| + [ _final_apk_path ],
|
| + "{{source_dir}}/{{source_name_part}}_incremental.apk")
|
| + _incremental_final_apk_path = _incremental_final_apk_path_helper[0]
|
|
|
| if (defined(invoker.resources_zip)) {
|
| _resources_zip = invoker.resources_zip
|
| @@ -557,14 +648,11 @@ template("create_apk") {
|
|
|
| _resource_packaged_apk_path = _base_apk_path + ".ap_"
|
| _packaged_apk_path = _base_apk_path + ".unfinished.apk"
|
| + _incremental_packaged_apk_path =
|
| + _base_apk_path + "_incremental.unfinished.apk"
|
| _shared_resources =
|
| defined(invoker.shared_resources) && invoker.shared_resources
|
|
|
| - _configuration_name = "Release"
|
| - if (is_debug) {
|
| - _configuration_name = "Debug"
|
| - }
|
| -
|
| _keystore_path = invoker.keystore_path
|
| _keystore_name = invoker.keystore_name
|
| _keystore_password = invoker.keystore_password
|
| @@ -609,7 +697,7 @@ template("create_apk") {
|
| rebased_android_sdk,
|
| "--aapt-path",
|
| android_aapt_path,
|
| - "--configuration-name=$_configuration_name",
|
| + "--configuration-name=$android_configuration_name",
|
| "--android-manifest",
|
| rebase_path(_android_manifest, root_build_dir),
|
| "--version-code",
|
| @@ -656,63 +744,34 @@ template("create_apk") {
|
| }
|
|
|
| package_target = "${target_name}__package"
|
| - action(package_target) {
|
| - script = "//build/android/gyp/ant.py"
|
| - _ant_script = "//build/android/ant/apk-package.xml"
|
| -
|
| - deps = [
|
| - ":${_package_resources_target_name}",
|
| - ]
|
| - if (defined(invoker.deps)) {
|
| - deps += invoker.deps
|
| - }
|
| - depfile = "$target_gen_dir/$target_name.d"
|
| + package_apk(package_target) {
|
| + deps = []
|
| + forward_variables_from(invoker, [ "deps" ])
|
| + deps += [ ":${_package_resources_target_name}" ]
|
|
|
| - inputs = [
|
| - _resource_packaged_apk_path,
|
| - _ant_script,
|
| - ]
|
| if (defined(_dex_path)) {
|
| - inputs += [ _dex_path ]
|
| + dex_path = _dex_path
|
| }
|
| + native_libs_dir = _native_libs_dir
|
| + output_apk_path = _packaged_apk_path
|
| + resource_packaged_apk_path = _resource_packaged_apk_path
|
| + }
|
|
|
| - outputs = [
|
| - depfile,
|
| - _packaged_apk_path,
|
| - ]
|
| + _incremental_package_target = "${target_name}_incremental__package"
|
| + package_apk(_incremental_package_target) {
|
| + deps = []
|
| + forward_variables_from(invoker, [ "deps" ])
|
| + deps += [ ":${_package_resources_target_name}" ]
|
|
|
| - _rebased_emma_jar = ""
|
| - _rebased_resource_packaged_apk_path =
|
| - rebase_path(_resource_packaged_apk_path, root_build_dir)
|
| - _rebased_packaged_apk_path = rebase_path(_packaged_apk_path, root_build_dir)
|
| - _rebased_native_libs_dir = rebase_path(_native_libs_dir, root_build_dir)
|
| - args = [
|
| - "--depfile",
|
| - rebase_path(depfile, root_build_dir),
|
| - "--",
|
| - "-quiet",
|
| - "-DANDROID_SDK_ROOT=$rebased_android_sdk_root",
|
| - "-DANDROID_SDK_TOOLS=$rebased_android_sdk_build_tools",
|
| - "-DRESOURCE_PACKAGED_APK_NAME=$_rebased_resource_packaged_apk_path",
|
| - "-DCONFIGURATION_NAME=$_configuration_name",
|
| - "-DNATIVE_LIBS_DIR=$_rebased_native_libs_dir",
|
| - "-DOUT_DIR=",
|
| - "-DUNSIGNED_APK_PATH=$_rebased_packaged_apk_path",
|
| - "-DEMMA_INSTRUMENT=0",
|
| - "-DEMMA_DEVICE_JAR=$_rebased_emma_jar",
|
| - "-Dbasedir=.",
|
| - "-buildfile",
|
| - rebase_path(_ant_script, root_build_dir),
|
| - ]
|
| + # TODO(agrieve): Multidex
|
| if (defined(_dex_path)) {
|
| - _rebased_dex_path = rebase_path(_dex_path, root_build_dir)
|
| - args += [
|
| - "-DDEX_FILE_PATH=$_rebased_dex_path",
|
| - "-DHAS_CODE=true",
|
| - ]
|
| - } else {
|
| - args += [ "-DHAS_CODE=false" ]
|
| + dex_path = _dex_path
|
| }
|
| +
|
| + # TODO(agrieve): Add a placeholder .so for http://crbug.com/384638
|
| + native_libs_dir = "//build/android/empty/res"
|
| + output_apk_path = _incremental_packaged_apk_path
|
| + resource_packaged_apk_path = _resource_packaged_apk_path
|
| }
|
|
|
| _finalize_apk_rule_name = "${target_name}__finalize"
|
| @@ -730,7 +789,20 @@ template("create_apk") {
|
| ]
|
| }
|
|
|
| - _final_deps = [ ":${_finalize_apk_rule_name}" ]
|
| + _incremental_finalize_apk_rule_name = "${target_name}_incremental__finalize"
|
| + finalize_apk(_incremental_finalize_apk_rule_name) {
|
| + input_apk_path = _incremental_packaged_apk_path
|
| + output_apk_path = _incremental_final_apk_path
|
| + keystore_path = _keystore_path
|
| + keystore_name = _keystore_name
|
| + keystore_password = _keystore_password
|
| +
|
| + public_deps = [
|
| + ":$_incremental_package_target",
|
| + ]
|
| + }
|
| +
|
| + _split_deps = []
|
|
|
| template("finalize_split") {
|
| finalize_apk(target_name) {
|
| @@ -756,7 +828,7 @@ template("create_apk") {
|
| split_type = "density"
|
| split_config = _split
|
| }
|
| - _final_deps += [ ":$_split_rule" ]
|
| + _split_deps += [ ":$_split_rule" ]
|
| }
|
| foreach(_split, _split_languages) {
|
| _split_rule = "${target_name}__finalize_${_split}_split"
|
| @@ -764,11 +836,14 @@ template("create_apk") {
|
| split_type = "lang"
|
| split_config = _split
|
| }
|
| - _final_deps += [ ":$_split_rule" ]
|
| + _split_deps += [ ":$_split_rule" ]
|
| }
|
|
|
| group(target_name) {
|
| - public_deps = _final_deps
|
| + public_deps = [ ":${_finalize_apk_rule_name}" ] + _split_deps
|
| + }
|
| + group("${target_name}_incremental") {
|
| + public_deps = [ ":${_incremental_finalize_apk_rule_name}" ] + _split_deps
|
| }
|
| }
|
|
|
|
|