我正在尝试开始使用 Bazel 为 Android 进行编译,但我的应用程序 UI 存在一些问题 - 特别是,如果我尝试使用 UI,Bazel 会窒息。
主要活动如下所示:
package org.mamizou.example.test
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
....
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
}
所以根据android.developer.com,如果我想使用 appcompat-v7,正确的做法就是在我的 android_library 块中,包括“//external:android/appcompat_v7”。凉爽的。我的 android_library 块现在看起来像这样:
android_library(
name="lib",
deps=[ "//external:android/appcompat_v7", ],
srcs=[ "src/org/mamizou/example/test/ExampleLib.java", ],
)
行。然后我运行 bazel build,我得到了
ERROR: missing input file '@android_sdk//:extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar"
如果我去我的 android-sdk 目录查看它,我注意到有一个像 android-sdk/extras/android/ m2repository/com/android/support /appcompat-v7 这样的路径但是没有像 android-sdk/extras 这样的路径/android/支持
使用 SDK 管理器工具,我设法刷新了我的支持存储库并重新安装它,但没有任何变化 - 我的支持文件都在 m2repository 下。它们是 *.aar 文件,而不是 *.jar 文件。我找不到像 *appcompat.jar 这样的名称的任何东西
所以,这里出了点问题。闻起来好像我的环境配置做错了,但你已经看到了相关的 BUILD 块,我的 WORKSPACE 看起来像这样:
android_sdk_repository(
name="android_sdk",
path="/home/mamizou/android-sdk",
api_level=23,
build_tools_version="23.0.2",
)
至少在我看来格式正确(更重要的是,它指向安装 sdk 的真实位置)
- 为什么 Bazel 正在寻找支持的 *.jar,而在我看来 Google 的 SDK 表明它应该在 m2repository 下寻找 *.aar?
- 我需要进行哪些更改才能让 Bazel 找到相关的 appcompat-v7 文件?
fwiw,Bazel 构建标签是 0.2.0-jdk7