2

そのため、Android Maven プラグインを使用して、ライブラリ プロジェクトの 1 つの apklib スナップショットを生成しています。しかし、ライブラリプロジェクトはそれ自体で実行するのに十分であるため、maven を使用して .apklib と .apk の両方を同時に生成する必要があるのではないかと考えています。

これがポンの設定です。

<groupId>com.comanyname.apps.lib</groupId>
<artifactId>MyProject-lib</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>apklib</packaging>
<name>MyProject-lib</name>

このような別のパッケージを追加してみました

<groupId>com.comanyname.apps.lib</groupId>
<artifactId>MyProject-lib</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>apklib</packaging>
<packaging>apk</packaging>
<name>MyProject-lib</name>

それが可能かどうかはわかりません。ただし、パッケージを apk/apklib に 1 つずつ切り替えることはできます。

4

3 に答える 3

3

ということで、2つのプロファイルを作成することで、apkとapklibを作成することができました。

<profiles>
        <profile>
            <id>local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <projectVersion>1.0.0-SNAPSHOT</projectVersion>
                <packagingType>apk</packagingType>
            </properties>
        </profile>
        <profile>
            <id>build</id>
            <properties>
                <projectVersion>1.0.0-SNAPSHOT</projectVersion>
                <packagingType>apklib</packagingType>
            </properties>
        </profile>
</profiles>
于 2012-09-19T15:23:08.363 に答える
2

推奨されるアプローチは、2 つのプロジェクトを作成することです。

  1. プロジェクト A はライブラリ プロジェクト (packagingType の apklib) です。すべてのコード、リソース、アセットが含まれています。
  2. プロジェクト B は、プロジェクト A に依存する標準の Android プロジェクト (packagingType の apklib) です。コード、リソース、またはアセットは含まれていません (ただし、必要に応じて追加できます)。
  3. 必要に応じて、プロジェクト A と B をモジュールとして持つ親プロジェクトを作成できます。その後、親プロジェクトをビルドするたびに、apk と apklib の両方がビルドされます。

私は自分のプロジェクトでこのアプローチを使用していますが、非常にうまく機能します。また、apklib に依存する 3 番目のモジュールとして、テスト プロジェクトを追加します。

https://gist.github.com/4224133にプロジェクト構造の簡易サンプルを追加しました。

于 2012-12-06T12:33:33.203 に答える
1

「しかし、Library プロジェクトは、単独で実行するのにも十分です。」

これは不可能です。少なくとも公式の Android SDK ではサポートされていません。開発ガイドをチェックして、Android ライブラリ プロジェクトとは何かを確認してください。

ただし、ライブラリ プロジェクトは、独自の .apk に直接コンパイルして Android デバイスで実行できないという点で、標準の Android アプリケーション プロジェクトとは異なります。同様に、真のライブラリの場合とは異なり、ライブラリ プロジェクトを自己完結型の JAR ファイルにエクスポートすることはできません。代わりに、依存アプリケーションでライブラリを参照してそのアプリケーションをビルドすることにより、ライブラリを間接的にコンパイルする必要があります。

「でも、一度に 1 つずつパッケージを apk/apklib に切り替えることはできます。」

Androidライブラリプロジェクトは、開発ガイドに記載されている標準のAndroidアプリケーションプロジェクトと同様のプロジェクト構造を持っているため、これはおそらくandroid-maven-pluginで実行できます。

構造的には、ライブラリ プロジェクトは標準の Android アプリケーション プロジェクトに似ています。たとえば、プロジェクト ルートにあるマニフェスト ファイルと、src/、res/ などのディレクトリが含まれます。プロジェクトには、標準の Android プロジェクトと同じ種類のソース コードとリソースを同じ方法で格納できます。たとえば、ライブラリ プロジェクトのソース コードは、その R クラスを介して独自のリソースにアクセスできます。

私はそれを自分でテストしていません。それが本当なら、これはandroid-maven-pluginのバグであると考えます。これは、 project.propertiesファイルandroid.library=trueの設定を尊重しないからです。ライブラリ プロジェクトの場合、android-maven-pluginを使用してビルドしようとすると、エラーまたは少なくとも警告が表示されます。<packaging>apk</packaging>

于 2012-09-14T23:02:14.193 に答える