1

我正在尝试开始使用 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 的真实位置)

  1. 为什么 Bazel 正在寻找支持的 *.jar,而在我看来 Google 的 SDK 表明它应该在 m2repository 下寻找 *.aar?
  2. 我需要进行哪些更改才能让 Bazel 找到相关的 appcompat-v7 文件?

fwiw,Bazel 构建标签是 0.2.0-jdk7

4

2 回答 2

1

aar 文件来自 SDK 管理器中 Extras 下的“Android Support Repository”。对于 bazel 正在使用的 jar,您需要下载“Android 支持库”。对困惑感到抱歉!

于 2016-05-12T20:00:50.850 回答
0

自 Android 构建工具 24 以来,“Android 支持库”已被删除:

在 SDK 管理器中找不到 Android 支持存储库

于 2016-06-19T15:26:13.353 回答