Code Monkey home page Code Monkey logo

Comments (7)

katre avatar katre commented on June 3, 2024 1

I'll take a look today

from examples.

meteorcloudy avatar meteorcloudy commented on June 3, 2024

@katre Is #398 related to this?

from examples.

katre avatar katre commented on June 3, 2024

There are two problems, lack of a CC toolchain and lack of a runtime Java toolchain

  1. There's no android_ndk_repository, which means there are no Android CC toolchains available. Possibly this worked in the past but currently every Android project needs CC toolchains
  2. The version of Android rules in use is v0.1.1, which is from 2018, and so is slightly out of date with Bazel at head.

I can create a PR to fix these issues.

I'm not sure when the requirement for a runtime Java toolchain was added, and I'm not sure where that should even come from. (pinging @ahumesky for advice).

from examples.

ahumesky avatar ahumesky commented on June 3, 2024

v0.1.1 of rules_android is just thin wrappers around the native android rules, so it's possible that something elsewhere within bazel changed to require this --

This is where we get the java toolchains in the starlark rules:
https://github.com/bazelbuild/rules_android/blob/5f6cc061249f8ea750f221da1ee0916cba61563f/MODULE.bazel#L8-L11

from examples.

katre avatar katre commented on June 3, 2024

Okay, debugged a bit further: rules_java adds runtime toolchains for various processors, including aarch64, but not for the Android OS constraint, so those aren't used. (These are created from the remote JDKs defined in rules_java/MODULE.bazel, where the target constraints are determined based on the actual name. There are no JDKs loaded for "android_aarch64", so none exist).

The JDK toolchain (not runtime) is fine, because it doesn't define any target constraints (cpu or os) (see https://github.com/bazelbuild/rules_java/blob/9cd25f0f7edc5184c4f1a10c4772ac4127f7322e/toolchains/default_java_toolchain.bzl#L181).

@ahumesky: Does the Android SDK contain a JDK for the different Android cpu flavors (in which case we just need to add the relevant toolchain configs), or do we need to download and configure a new one?

from examples.

cushon avatar cushon commented on June 3, 2024

Does the Android SDK contain a JDK for the different Android cpu flavors

I'm not sure that's what we want? There aren't JDKs for Android cpu flavors. I wonder if that what we want here is to be able to run things like robolectric tests, which exercise code built targeting a particular Android flavour on a JVM.

The approach we take for that in google3 is:

toolchain(
    name = "jdk-runtime-fake-android",
    target_compatible_with = [
        "//third_party/bazel_platforms/os:android",
    ],
    toolchain = ... # A JDK for the platform that the robolectric test executes on, e.g. linux k8
    toolchain_type = ":runtime_toolchain_type",
)

from examples.

katre avatar katre commented on June 3, 2024

That's a great question: all I know is "bazel thinks it wants a runtime JDK that targets android_aarch64", I haven't dug into why it wants that.

from examples.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.