aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java28
1 files changed, 21 insertions, 7 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);
+ }
+ }
}