1

Android 用にコンパイルするために Bazel を使い始めようとしていますが、アプリの 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", ],
)

Ok。次に、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 のようなパスはありません。 /アンドロイド/サポート

SDK マネージャー ツールを使用して、サポート リポジトリをフラッシュして再インストールしましたが、変更はありません。サポート ファイルはすべて m2repository の下にあります。そして、それらは *.jar ファイルではなく、*.aar ファイルです。*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. Google の SDK が m2repository の下で *.aar を探す必要があることを示しているように見えるのに、Bazel がサポートで *.jar を探しているのはなぜですか?
  2. Bazel が関連する appcompat-v7 ファイルを見つけられるようにするには、どのような変更を加える必要がありますか?

fwiw、Bazelビルドラベルは0.2.0-jdk7です

4

2 に答える 2

1

aar ファイルは、SDK マネージャーの Extras の下にある「Android Support Repository」から取得されます。bazel が使用している jar については、「Android Support Library」をダウンロードする必要があります。混乱させて申し訳ありません!

于 2016-05-12T20:00:50.850 に答える
0

Android ビルド ツール 24 以降、「Android サポート ライブラリ」は削除されました。

SDK Manager で Android サポート リポジトリが見つからない

于 2016-06-19T15:26:13.353 に答える