Android Studio 0.4.0。以前にGradleを使用したことがなく、問題が発生しているだけです。私はそれについて十分に知らないので、その目的/利点を見ていません。
私が持っているいくつかの特定の質問
これらの依存関係は何ですか?ネイティブでサポートされるべきAPI11 +を対象とした、ナビゲーションドロワーを備えたシンプルなアプリを作成しています。どのような依存関係を使用できますか?
Gradleラッパーとは何ですか?完成したアプリケーションにどのような変更が加えられますか?
Gradleが常にオンラインである必要があるのはなぜですか?仕事中は、個人のラップトップでインターネットにアクセスできません。 Gradleはインターネットにアクセスできないと一部のリソースを解決できないため、アプリを実行またはテストできないようになりました。
GradleがGroovyを使用することが重要なのはなぜですか?私はインターネットを検索しましたが、それはGradleについて人々が好きなものになる傾向がありますが、Groovyが重要である理由や、Androidアプリで何をするのか)は通常説明されていません。
情報が過度に単純または過度に複雑になる傾向があるため、中級プログラマーとしては難しい場合があります。私の特定の質問は別として、あなたが提供できるどんな追加情報も役に立つでしょう。 Gradleと同じことを行う可能性のある他のツールの長所と短所について議論するつもりはありません。情報に基づいた決定を下せるように、Gradleとその使用法について詳しく知りたいと思います。
ありがとう
あなたの質問のいくつかは、ビルドツールが一般的な問題として良いことである理由を話しているという点で一般的です。特にGradleにアクセスする人もいます。私は、他の人のつまらない用語を避けながら、両方のカテゴリにできるだけ簡潔に対処するように努めます。
Maven、Gradle、SBT、Leiningenなどのビルドツールは、手動で実行または「手動で自動化」する必要があるタスクを自動化するのに役立ちます。後者を使用して、Antで行っていたことを説明します。つまり、Javadocをコンパイル、実行、生成するためのカスタムタスクを記述して、将来のタスクを自動化できるようにします。 Mavenによって最初に定義され、その後他の人によって採用された規則(ソースをsrc/main/Javaに入れるなど)に準拠することで、これが可能になります。規則に従えば、ビルドツールは最小限の追加作業でコンパイル、実行、Javadocの生成、テスト、その他すべてを行うことができます。
今あなたの質問に(順番に):
お役に立てば幸いです。
これらの依存関係は何ですか?
あなたが使用することに決めるかもしれない非常に多くのクールなライブラリがあります。そして、これらのライブラリの多くは現在、gradleとの統合をサポートしています。したがって、プロジェクトをインポートして自分でホストする必要はもうありません。すべてがmavencentralでホストされています。たとえば、API 11以降をターゲットにすることにした場合でも、サポートライブラリが必要です。
Gradleラッパーとは何ですか?
チームで作業している場合、または特にオープンソースプロジェクトで作業している場合、gradleラッパーは素晴らしいツールです。 Gradleをインストールする必要はありません。 Gradleラッパーは、最初の実行時にすべての依存関係をダウンロードしてキャッシュします。したがって、チームのすべての開発者は、プロジェクトを非常に迅速に構築できます。
Gradleが常にオンラインである必要があるのはなぜですか?
依存関係を同期する必要があるためです。 Android Studioを使用している場合は、幸運です。最新バージョンは「gradleオフラインモード」をサポートしています。
リリースノート から:
StudioはGradleオフラインモードをサポートするようになりました。これは、ネットワークに接続しておらず、依存関係がプラス構文を使用して利用可能な最新バージョンを取得している場合に役立ちます。その場合、Gradleは1日に1回(デフォルトで)アーティファクトリポジトリに接続して、より新しいバージョンがあるかどうかを確認します。そのネットワーク接続が失敗すると、ビルドは失敗します。ネットワーク接続がない場合、これは問題があります。これで、[コンパイラ]> [Gradle]オプションを開き、オフラインモードを有効にできます。これにより、Gradleは最新の更新チェックを無視するようになります。
GradleがGroovyを使用することが重要なのはなぜですか?
Groovyでgradleプラグインを作成します。また、build.gradleのすべてのgradleタスクも同様です。
注意:私はgradleの専門家ではありません。実際、比較的新しいユーザーでもあります。
Gradleのオンライン部分が必要な理由については、誰もが述べていることを理解していますが、ファイアウォールの背後にいる私たちにとって、またはオフラインで作業している可能性がある場合は、少なくとも1回はオンラインにする必要があります。オフラインモードでコンパイルできるようにします。
この要件がプロジェクトに課せられている理由がわかりません。コンセプトをテストしたいAndroid Studioでまったく新しいプロジェクトを開始した場合はどうなりますか?少なくとも一度はオンラインにしないと、それはできません。その時点でインターネットにアクセスできず、これを実行したい場合はどうなりますか?では、どうしますか?
回避できる不要な問題で開発者に負担をかける不要な要件のようです。繰り返しになりますが、その背後にある理由は理解していますが、それでも、オフラインで使用するために少なくとも一度オンラインでコンパイルするという要件を強制することは少しばかげているようです。
Gradleを使いたいのですが、現時点ではオンラインの要件のため、職場でも使えないものです。セキュリティ部門と協力して、これを許可するためにファイアウォールにどの穴を開けるかを決定し、プロキシを正しく設定して許可する必要があります。
そのため、現時点では、Gradleを私の職場で使用することをお勧めすることはできません。つまり、AndroidStudioではなくAndroid開発にもEclipseを引き続き使用します。必要ではないように思われる制限要件のようです。
次の点を理解することが、賛成の根拠となると仮定しましょう。
クラス、インターフェース、API、パッケージ、モジュール、ライブラリとは何ですか。
モジュールの依存関係とは何ですか?「依存関係の管理」とはどういう意味ですか。
最新のアプリケーションの複雑さ。単純な「Hello、world」アプリ(デスクトップアプリケーションまたはWebアプリケーション)を実行する場合でも、さまざまなライブラリが12個(100個ではないにしても)含まれている必要があります。これらのライブラリはすべてアプリにインフラストラクチャを提供しますが、それらの多くはアプリのロジックに直接関係していません。
アプリが「Hello、world」でない場合は、(適切なモジュール化によって)複雑さを隠し、(適切なビルドツールを使用して)アセンブリとテストを自動化することが成功に不可欠です。
この理解を念頭に置いて(そして上記の親愛なる同僚によってリストされた貴重な考慮事項を考慮に入れて)、gradle、ant、ivy、mavenについて話し始めるのは理にかなっています。