diff options
author | 2016-02-16 19:37:56 +0000 | |
---|---|---|
committer | 2016-02-17 09:55:20 +0000 | |
commit | d5d42790fbfb14d1ba176a24e8c238258eedf706 (patch) | |
tree | 3613aae5c93d73b622f74a0e365c838e572a94a9 /src | |
parent | e5031ecfb0a2f09915206cef5daf55053c27b72f (diff) |
Adds a java_import rule to the android sdk build file to provide the org.apache.http.legacy jar that was added in android 23.
See https://groups.google.com/forum/#!topic/bazel-discuss/aokvvF2866c
RELNOTES: @androidsdk//:org_apache_http_legacy added for the legacy Apache classes for android sdk version 23 and above.
--
MOS_MIGRATED_REVID=114775780
Diffstat (limited to 'src')
3 files changed, 29 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java index 3e4a767b1d..f3f4dc9299 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java @@ -53,18 +53,23 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction { String buildToolsVersion = attributes.get("build_tools_version", Type.STRING); Integer apiLevel = attributes.get("api_level", Type.INTEGER); - String template; - try { - template = ResourceFileLoader.loadResource( - AndroidSdkRepositoryFunction.class, "android_sdk_repository_template.txt"); - } catch (IOException e) { - throw new IllegalStateException(e); + String template = getStringResource("android_sdk_repository_template.txt"); + + // Android 23 removed most of org.apache.http from android.jar and moved it + // to a separate jar, but this jar exists only with version 23 and above. + // Not sure when this jar will be removed. + String orgApacheHttpLegacyImport = ""; + if (apiLevel >= 23) { + orgApacheHttpLegacyImport = + getStringResource("android_sdk_org_apache_http_legacy_import_template.txt") + .replaceAll("%api_level%", apiLevel.toString()); } String buildFile = template .replaceAll("%repository_name%", rule.getName()) .replaceAll("%build_tools_version%", buildToolsVersion) - .replaceAll("%api_level%", apiLevel.toString()); + .replaceAll("%api_level%", apiLevel.toString()) + .replaceAll("%org_apache_http_legacy_import%", orgApacheHttpLegacyImport); writeBuildFile(outputDirectory, buildFile); return RepositoryDirectoryValue.create(outputDirectory); @@ -74,4 +79,13 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction { public Class<? extends RuleDefinition> getRuleDefinition() { return AndroidSdkRepositoryRule.class; } + + private static String getStringResource(String name) { + try { + return ResourceFileLoader.loadResource( + AndroidSdkRepositoryFunction.class, name); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_org_apache_http_legacy_import_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_org_apache_http_legacy_import_template.txt new file mode 100644 index 0000000000..55d0d9e98b --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_org_apache_http_legacy_import_template.txt @@ -0,0 +1,7 @@ + +# Android 23 removed most of org.apache.http from android.jar and moved it +# to a separate jar. +java_import( + name = "org_apache_http_legacy", + jars = ["platforms/android-%api_level%/optional/org.apache.http.legacy.jar"] +) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt index 7707db5cc0..090ff2f1cf 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt @@ -98,7 +98,7 @@ android_library( resource_files = glob(["extras/android/support/v7/recyclerview/res/**"]), deps = [":recyclerview_v7_import"] ) - +%org_apache_http_legacy_import% java_import( name = "appcompat_v4", jars = ["extras/android/support/v4/android-support-v4.jar"] |