У меня есть библиотека с общим кодом, который использует android.util.Log
:
java_library(
name = "common",
srcs = glob(["*.java"]),
)
И у меня есть правило j2objc для iOS, которое отлично работает:
j2objc_library(
name = "common_ios",
deps = ["//common"],
jre_deps = ["@bazel_j2objc//:android_util_lib"],
)
Но когда я использую common
в своем проекте Android:
android_binary(
name = "app",
srcs = glob(["*.java"]),
manifest = "//android:manifest",
resource_files = ["//android:resources"],
deps = ["//common"],
)
Но когда я запускаю bazel build //android:app
, я получаю:
common/MyVeryOwnLogger.java:3: error: package android.util does not exist
import android.util.Log;
Что имеет смысл, так как android.*
библиотеки не должны быть доступны в правиле java_library
. Я что-то упускаю? Разве это не рекомендуемый способ настройки проекта?
Спасибо!
android.util.Log
реализацию или удалитьMyVeryOwnLogger
реализацию из общей - person Selvin   schedule 07.06.2018android_util
в iOS и нативный пакетandroid.util
в Android. - person Vitor Pereira   schedule 07.06.2018android_util
с одним файломandroid/util/Log.java
2. добавил его какdeps
(deps = ["//common", "android_util"]
) в common_ios... - person Selvin   schedule 07.06.2018//common
, но также и отandroid_util_lib
для ведения журнала. Проблема в том, что на Android правило//common
не может найти классыandroid.*
, хотя от него зависит правилоandroid_binary
. Это заставляет меня думать, что моя настройка bazel не соответствует правильной практике. РЕДАКТИРОВАТЬ: добавлена команда bazel, которая выдает ошибку. - person Vitor Pereira   schedule 07.06.2018