rules_android
rules_android copied to clipboard
mobile-install fails with dependencies from rules_jvm_external
When trying to use mobile-install on the example/basicapp I am getting the following stacktrace after launching the application: stacktrace.txt
I am using rules_jvm_external with an overridden rules_android to the version from rules_android git repository.
This is a patch to apply to the example:
diff --git a/examples/basicapp/MODULE.bazel b/examples/basicapp/MODULE.bazel
index aac81cc..37a891e 100644
--- a/examples/basicapp/MODULE.bazel
+++ b/examples/basicapp/MODULE.bazel
@@ -4,6 +4,14 @@ module(
bazel_dep(name = "rules_java", version = "7.4.0")
bazel_dep(name = "bazel_skylib", version = "1.3.0")
+bazel_dep(name = "rules_jvm_external", version = "6.1")
+local_path_override(
+ module_name = "rules_jvm_external",
+ path = "../rules_jvm_external/"
+)
+
+remote_android_extensions = use_extension("@rules_android//bzlmod_extensions:android_extensions.bzl", "remote_android_tools_extensions")
+use_repo(remote_android_extensions, "android_gmaven_r8", "android_tools")
bazel_dep(
name = "rules_android",
@@ -15,7 +23,21 @@ local_path_override(
path = "../../",
)
-register_toolchains(
- "@rules_android//toolchains/android:android_default_toolchain",
- "@rules_android//toolchains/android_sdk:android_sdk_tools",
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+
+maven.install(
+ aar_import_bzl_label = "@rules_android//android:rules.bzl",
+ artifacts = [
+ "androidx.appcompat:appcompat:1.6.1",
+ "androidx.appcompat:appcompat-resources:1.6.1",
+ ],
+ fail_if_repin_required = True,
+ lock_file = "//:manifest_install.json",
+ repositories = [
+ "https://maven.google.com",
+ "https://repo1.maven.org/maven2",
+ ],
+ resolver = "maven",
+ use_starlark_android_rules = True,
)
+use_repo(maven, "maven")
diff --git a/examples/basicapp/WORKSPACE.bzlmod b/examples/basicapp/WORKSPACE.bzlmod
index a69bd79..589a040 100644
--- a/examples/basicapp/WORKSPACE.bzlmod
+++ b/examples/basicapp/WORKSPACE.bzlmod
@@ -1,4 +1,10 @@
load("@rules_android//rules:rules.bzl", "android_sdk_repository")
android_sdk_repository(
name = "androidsdk",
-)
\ No newline at end of file
+)
+
+new_local_repository(
+ name = "androidstudio",
+ path = "android-studio",
+ build_file = "//:androidstudio.BUILD",
+)
diff --git a/examples/basicapp/java/com/basicapp/BUILD b/examples/basicapp/java/com/basicapp/BUILD
index a8fb99d..80b401c 100644
--- a/examples/basicapp/java/com/basicapp/BUILD
+++ b/examples/basicapp/java/com/basicapp/BUILD
@@ -11,4 +11,7 @@ android_library(
srcs = ["BasicActivity.java"],
manifest = "AndroidManifest.xml",
resource_files = glob(["res/**"]),
+ deps = [
+ "@maven//:androidx_appcompat_appcompat"
+ ]
)
diff --git a/examples/basicapp/java/com/basicapp/BasicActivity.java b/examples/basicapp/java/com/basicapp/BasicActivity.java
index 03c9aef..98f4824 100644
--- a/examples/basicapp/java/com/basicapp/BasicActivity.java
+++ b/examples/basicapp/java/com/basicapp/BasicActivity.java
@@ -21,10 +21,12 @@ import android.view.View;
import android.widget.Button;
import android.widget.TextView;
+import androidx.appcompat.app.AppCompatActivity;
+
/**
* The main activity of the Basic Sample App.
*/
-public class BasicActivity extends Activity {
+public class BasicActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/mobile_install/tools.bzl b/mobile_install/tools.bzl
index 72dd5b6..c71fd58 100644
--- a/mobile_install/tools.bzl
+++ b/mobile_install/tools.bzl
@@ -37,7 +37,7 @@ TOOL_ATTRS = dict(
),
),
_studio_deployer = attr.label(
- default = "//tools/android:gen_fail", # TODO(#119): Studio deployer jar to be released
+ default = "@@androidstudio//:deployer_deploy.jar", # TODO(#119): Studio deployer jar to be released
allow_single_file = True,
cfg = "exec",
executable = True,
Edit: I forgot to mention that building and manually installing the apk works fine.