aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Alex Humesky <ahumesky@google.com>2016-02-16 19:37:56 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-17 09:55:20 +0000
commitd5d42790fbfb14d1ba176a24e8c238258eedf706 (patch)
tree3613aae5c93d73b622f74a0e365c838e572a94a9 /src
parente5031ecfb0a2f09915206cef5daf55053c27b72f (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java28
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_org_apache_http_legacy_import_template.txt7
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_sdk_repository_template.txt2
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"]