問題タブ [android-maven-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - ライブラリ プロジェクトとしてリソースを使用してクラスをコンパイルしましたか?
パッケージ化して Android 開発者に配布する必要がある Android ライブラリを開発する必要があります。Java クラスとリソース (アイコンなど) の両方があります。
そのようなライブラリを配布する最良の方法について疑問に思っています。多くの有名なライブラリがさまざまな形式で配布されていることは周知のとおりです。
- ActionBAR Sherlock - ZIP または APKLIB
- フラリー - JAR
私の前提条件:
- ソースを配布できません - コンパイルされた Java クラスとリソースのみが許可されています
- 私の目標は、クライアント プロジェクトの指示との統合をできるだけシンプルにすることです。たとえば、依存関係として Maven/Gradle の 1 行と、アプリ内でそれを使用するための数行のコードです。
- すべてのビルド システムを尊重する必要があります。NBS を使用するシステム、android-maven-plugin を使用するシステム、レガシー ANT を使用するシステムです。
私の最初のアイデアは、このライブラリを APKLIB (Maven) および AAR (NBS) として配布することでしたが、ANT がサポートされていないことに気付きました。
質問:
- APKLIB と AAR は、プレーンな Java ソースではなく、コンパイルされたクラスとリソースのみを持つことができますか?
- ANT用にコンパイルされたAndroidライブラリプロジェクトを配布するには? ZIPとして?
- ライブラリ用の R の生成についてはどうでしょうか。
ご提案ありがとうございます。
android - Robolectric、Dagger、およびコンパイル時の $ModuleAdapter の作成
Android TDD シリーズの他の 質問に続いて、 Robolectric、Mockito、Maven、およびABSを使用して、Android 開発の単体テストを行うことができました。明らかに、私は自分の知識の限界を押し広げているように見えますが、Android CI の夢はあまりにも魅力的です。私の次の問題を手伝っていただけるなら、とても感謝しています。
アプリケーションのデータベースを v1 から先頭に移動する統合テスト ケースを作成したいと考えています。私はDI にDaggerを使用しており、この非標準の JUnit テストを容易にするために、アップグレードを実行するために必要なクラスをテストに挿入しています。
注意すべき重要な点;
- テストは、テスト中のプロジェクトとは別に、独自のテスト プロジェクトの下に存在します (構造については、リンクされた質問を参照してください)。
- 失敗 (以下のスタック トレース) は、実際のアプリケーションのモジュール グラフを作成するときに発生します。
- インジェクター ルール (以下で説明) は、アプリケーションを実際に実行するときに使用されるモジュールを含むテスト プロジェクト モジュールにリンクします。
DaggerInjector
ルールの下で何が起こっているのですか?
テストに必要な依存関係を注入しようとします。
テストモジュールはどのように見えますか?
テストおよび (予定の) テスト モックの置換用のエントリ ポイント (これはであり、 replacesdagger-0.9.1
の最新のものではありません) を追加します。inject
entryPoints
実際のアプリケーションのオブジェクト グラフを作成するコード行をコメント アウトすると、テストは緑色で実行されます。これがスタック トレースです。
エラー 1: 私のテストの観点からは、捕らえられて飲み込まれました
dagger.internal.RuntimeAggregatingPlugin#getModuleAdapter
エラー 2: Robolectricによってコンソールにダンプされる
これまでの調査
「Error 1」が発生した理由に焦点を当てています。ユーザー ガイドの「コンパイル時のコード生成」の側面を読むと、RuntimeAggregatingPlugin が探しているアダプター ( OceanLifeModule$ModuleAdapter
) がコンパイル時に生成されることがわかります。それから、私は自分の Maven 構成を調べてきました。コミュニティがこれを理解する必要があると感じた場合は、喜んでそれを提供します。「エラー 2」の低レベルの性質は、根本原因よりも派生的なものだと思います。
android - NetBeans が apklib のクラスを認識しない (たとえば、ActionBarSherlock)
NetBeans 7.3 で Android アプリを作成しています (これが私の好みの IDE であるため)。これは Maven プロジェクトであり、 ActionBarSherlockに依存しており、android-maven-plugin を使用しています。
私のPOMはこれに似ています:
実際に ActionBarSherlock ライブラリを使用するまで、すべてが正常に機能します。NetBeans は、apklib 内のクラスを認識していないようです (例: com.actionbarsherlock.app.SherlockActivity
)。NetBeans のプロジェクトのツリー構造で apklib を見つけることができますが、それは非クラスパス依存関係の下にファイルされています。ライブラリの生成されたソース ( など) は認識しますcom.actionbarsherlock.R
。
NetBeans がクラスが見つからないというエラーを出さないようにし、これらのクラスに対してオートコンプリートが機能するようにするには、どうすればこれを修正できますか?
考えられるいくつかの回避策 ( 1、2、3 ) を試しましたが、うまくいきませんでした。また、NetBeans バグ 220446が関連していると確信しています。
android - Maven が Dagger DI を使用して .apk をビルドし、注入されたアクティビティを見つけられなかった
Maven for Androidを使用して Android アプリケーションのビルドを自動化しようとしています。アプリには標準の Maven フォルダー形式があり、 src はsrc/main/javaの下にあり、テストはsrc/test/javaの下にあります。紛らわしいことに、コマンドを実行するとmvn install
、アプリがコンパイルされ、テストが実行され、ビルドが成功したと報告されます。
ただし、コマンドを使用してエミュレーターにアプリケーションをデプロイして実行すると、アプリケーションは起動しmvn android:deploy android:run
ますが、Dagger で DI に使用されるオブジェクト グラフを作成するとすぐにクラッシュします。例外は次のように述べています。
Maven 対 Eclipse 対 Dagger に関する以前の質問に続いて、さまざまなビルド システムがコンパイルされたクラスを配置する場所と格闘するため、 ClassNotFound型の例外が発生することを期待するようになりました。しかし、私はこれに完全に困惑しています。
それが役立つ場合、私のPOMはここにあります...
よろしくお願いします。
android - dependency=[com.google.android.gms:google-play-services:apklib:7:compile] ワークスペースに見つかりません
「android maven google mapsの依存関係が見つかりません」という質問をもう1つ追加して申し訳ありませんが、それに関するほとんどの投稿を読み、提案されたすべてのソリューションを適用しても成功しなかったと思います。
Maven を使用して参照されるのではなく、ワークスペースにインポートされた google-play-services_lib プロジェクトと eclipse ビルド パス ライブラリの依存関係を介して参照される、Google マップ V2 依存関係で正常に実行されている Maven Android プロジェクトがあります。
Robolectric を使用して Maven 自動テストを実装しているため、pom を介して google-play-services 依存関係を構成しようとしていますが、pom の最初の行にこのエラーが表示され、クイックフィックスがありません。
dependency=[com.google.android.gms:google-play-services:apklib:7:compile] ワークスペースに見つかりません
私がこれまでに試したことは、多くのグーグル検索の後、各ステップの後に結果を確認しても成功しませんでした:
最初に android-maven-sdk-helper を使用してローカルの .m2 リポジトリに Google Play Services コンポーネントをインストールし (これらの手順に従って)、ローカルにインストールされたバージョンである jar と apklib バージョン 7 への 2 つの依存関係をプロジェクトに追加します (ここのように) 。 . この後、動作するはずでしたが、依存関係エラーが発生しました。
ライブラリ google-play-services_lib への参照を Eclipse ビルド パスから削除します (プロジェクト / 設定 / Android / ライブラリ内)。とにかく、google-play-services_lib プロジェクトはまだワークスペースにあります。
apklib をローカルの m2 リポジトリからワークスペースのどこかにコピーします: google-play-services_lib/bin、google-play-services_lib/libs、MyProject/libs を試しました。名前 google-play-services-7.apklib (リポジトリ ファイルと同様) および google-play-services.apklib を使用してテスト済み。
ワークスペースに含まれる google-play-services_lib プロジェクトを "Mavenise" にし、eclipse Configure / Convert to Maven project を実行します。生成された pom を編集して、パッケージ タイプを apklib: に更新し、apklib パッケージ タイプを認識するために
<packaging>apklib</packaging>
android-maven-plugin を追加しました。<extensions>true</extensions>
プロジェクトをmaven goal compileでコンパイルして成功しましたが、生成されたapklibファイルがどこにも見つかりません。
これらの変更のたびに、Maven / Update プロジェクトを実行し、プロジェクトをクリーンアップし、Eclipse を再起動します。成功しません: 依存関係がスペース エラーで見つかりません。
他に何を試すべきかわかりません。それは図書館名の何かでしょうか?ライブラリ プロジェクト名は google.play-services_lib で、_lib サフィックスが付いています。Eclipse Android ライブラリ ビルド パスで参照される jar は _lib.jar ですが、Maven アーティファクトには _lib サフィックスがありません。また、コンポーネントとアーティファクトの名前を変更しようとしましたが、成功しませんでしたが、そこに問題がある可能性があります。誰かが mavenized google-play-services_lib プロジェクトの pom.xml の例を投稿できますか?
別の推測: mavenized ライブラリ プロジェクトを mvn コンパイルすると、生成された .apklib ファイルが見つからないのはなぜですか? mvn -X compile でトレースを確認しましたが、ヒントは見つかりませんでした。
環境とバージョン:
google-play-services_lib プロジェクトに追加した pom.xml:
android - Maven でのビルドが失敗する
サンプル プロジェクトのディレクトリで実行mvn install
すると、次のエラーが表示されます。
私はMaven 3.1.0を使用していますが、何が問題なのですか?
プロジェクトを m2eclipse 経由で Eclipse にインポートしようとすると、アーティファクトの欠落に関連するエラーが発生します。