From 36e7781a2cd9520d140a45fc1f9888e886936d5b Mon Sep 17 00:00:00 2001 From: "jayjang@chromium.org" Date: Tue, 2 Apr 2013 09:10:54 +0000 Subject: [PATCH] Support multiple proguard flags from java_apk.gypi. Proguard supports multiple proguard configuration files but java_apk and apk-build.xml supports only one proguard configuration. BUG=181470 Review URL: https://chromiumcodereview.appspot.com/12913017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191806 0039d316-1c4b-4281-b951-d872f2087c98 --- build/all_android.gyp | 1 + build/android/ant/apk-obfuscate.xml | 2 +- .../multiple_proguards/AndroidManifest.xml | 30 +++++++++++++++++ .../multiple_proguards/multiple_proguards.gyp | 33 +++++++++++++++++++ .../tests/multiple_proguards/proguard1.flags | 2 ++ .../tests/multiple_proguards/proguard2.flags | 3 ++ .../src/dummy/DummyActivity.java | 14 ++++++++ build/java_apk.gypi | 6 ++-- 8 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 build/android/tests/multiple_proguards/AndroidManifest.xml create mode 100644 build/android/tests/multiple_proguards/multiple_proguards.gyp create mode 100644 build/android/tests/multiple_proguards/proguard1.flags create mode 100644 build/android/tests/multiple_proguards/proguard2.flags create mode 100644 build/android/tests/multiple_proguards/src/dummy/DummyActivity.java diff --git a/build/all_android.gyp b/build/all_android.gyp index 3e778dc5148a51..4ff5d6aca9e895 100644 --- a/build/all_android.gyp +++ b/build/all_android.gyp @@ -43,6 +43,7 @@ '../android_webview/android_webview.gyp:android_webview_unittests', '../base/android/jni_generator/jni_generator.gyp:jni_generator_tests', '../base/base.gyp:base_unittests', + '../build/android/tests/multiple_proguards/multiple_proguards.gyp:multiple_proguards_test_apk', '../cc/cc_tests.gyp:cc_perftests_apk', '../cc/cc_tests.gyp:cc_unittests', '../chrome/chrome.gyp:unit_tests', diff --git a/build/android/ant/apk-obfuscate.xml b/build/android/ant/apk-obfuscate.xml index 75989700db0f81..d0600ca20a813c 100644 --- a/build/android/ant/apk-obfuscate.xml +++ b/build/android/ant/apk-obfuscate.xml @@ -129,7 +129,7 @@ are added under the call below. --> - + diff --git a/build/android/tests/multiple_proguards/AndroidManifest.xml b/build/android/tests/multiple_proguards/AndroidManifest.xml new file mode 100644 index 00000000000000..1794712bb3c8a8 --- /dev/null +++ b/build/android/tests/multiple_proguards/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/build/android/tests/multiple_proguards/multiple_proguards.gyp b/build/android/tests/multiple_proguards/multiple_proguards.gyp new file mode 100644 index 00000000000000..a7e1746fa9b407 --- /dev/null +++ b/build/android/tests/multiple_proguards/multiple_proguards.gyp @@ -0,0 +1,33 @@ +# Copyright (c) 2013 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. +{ + 'variables': { + 'chromium_code': 1, + 'package_name': 'multiple_proguard', + }, + 'targets': [ + { + 'target_name': 'multiple_proguards_test_apk', + 'type': 'none', + 'variables': { + 'app_manifest_version_name%': '<(android_app_version_name)', + 'java_in_dir': '.', + 'proguard_enabled': 'true', + 'proguard_flags_paths': [ + 'proguard1.flags', + 'proguard2.flags', + ], + 'R_package': 'dummy', + 'R_package_relpath': 'dummy', + 'apk_name': 'MultipleProguards', + }, + 'dependencies': [ + # guava has references to objects using reflection which + # should be ignored in proguard step. + '../../../../third_party/guava/guava.gyp:guava_javalib', + ], + 'includes': [ '../../../../build/java_apk.gypi' ], + }, + ], +} diff --git a/build/android/tests/multiple_proguards/proguard1.flags b/build/android/tests/multiple_proguards/proguard1.flags new file mode 100644 index 00000000000000..4539a7afcd4024 --- /dev/null +++ b/build/android/tests/multiple_proguards/proguard1.flags @@ -0,0 +1,2 @@ +# src/third_party/guava/guava.gyp:guava_javalib +-dontwarn sun.misc.Unsafe diff --git a/build/android/tests/multiple_proguards/proguard2.flags b/build/android/tests/multiple_proguards/proguard2.flags new file mode 100644 index 00000000000000..7da78c3654ce4c --- /dev/null +++ b/build/android/tests/multiple_proguards/proguard2.flags @@ -0,0 +1,3 @@ +# Striped64 uses reflection to access some local fields. +-dontnote com.google.common.cache.Striped64 +-dontnote com.google.common.cache.Striped64$Cell diff --git a/build/android/tests/multiple_proguards/src/dummy/DummyActivity.java b/build/android/tests/multiple_proguards/src/dummy/DummyActivity.java new file mode 100644 index 00000000000000..291a8100f39430 --- /dev/null +++ b/build/android/tests/multiple_proguards/src/dummy/DummyActivity.java @@ -0,0 +1,14 @@ +// Copyright (c) 2013 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. + +package dummy; + +import android.app.Activity; +import android.os.Bundle; + +/** + * Dummy activity to build apk. + */ +public class DummyActivity extends Activity { +} diff --git a/build/java_apk.gypi b/build/java_apk.gypi index 0a1122df582aab..a5a5563820ed56 100644 --- a/build/java_apk.gypi +++ b/build/java_apk.gypi @@ -59,7 +59,7 @@ 'app_manifest_version_name%': '<(android_app_version_name)', 'app_manifest_version_code%': '<(android_app_version_code)', 'proguard_enabled%': 'false', - 'proguard_flags_path%': '<(DEPTH)/build/android/empty_proguard.flags', + 'proguard_flags_paths%': ['<(DEPTH)/build/android/empty_proguard.flags'], 'native_libs_paths': [], 'jar_name': 'chromium_apk_<(_target_name).jar', 'resource_dir%':'<(DEPTH)/build/android/ant/empty/res', @@ -346,7 +346,7 @@ '<(DEPTH)/build/android/ant/apk-obfuscate.xml', '<(DEPTH)/build/android/ant/create-test-jar.js', '<(compile_stamp)', - '<(proguard_flags_path)', + '>@(proguard_flags_paths)', ], 'outputs': [ '<(obfuscate_stamp)', @@ -367,7 +367,7 @@ '-DOBFUSCATED_JAR_PATH=<(obfuscated_jar_path)', '-DOUT_DIR=<(intermediate_dir)', '-DPROGUARD_ENABLED=<(proguard_enabled)', - '-DPROGUARD_FLAGS=<(proguard_flags_path)', + '-DPROGUARD_FLAGS=<(proguard_flags_paths)', '-DTEST_JAR_PATH=<(PRODUCT_DIR)/test.lib.java/<(apk_name).jar', '-DSTAMP=<(obfuscate_stamp)',