2

所以我正在使用 Android Maven 插件为我的一个库项目生成 apklib 快照。但是库项目也可以自行运行,所以我认为我们应该使用 maven 同时生成 .apklib 和 .apk 。

这是 pom 配置。

<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 一个。

4

3 回答 3

3

所以我能够通过创建两个配置文件来创建 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

推荐的方法是创建两个项目:

  1. Project A 是一个库项目(packagingType of apklib)。它包含所有代码、资源和资产。
  2. 项目 B 是一个标准的 Android 项目(apklib 的打包类型),它依赖于项目 A。它不包含代码、资源或资产(尽管您可以根据需要添加一些)。
  3. 或者,您可以将项目 A 和 B 作为模块的父项目。然后,每当您构建父项目时,都会构建 apk 和 apklib。

我在自己的项目中使用这种方法,效果很好。我还添加了一个测试项目作为第三个模块,它依赖于 apklib。

我在https://gist.github.com/4224133上添加了项目结构的简化示例。

于 2012-12-06T12:33:33.203 回答
1

“但图书馆项目也可以自给自足地独立运行。”

这是不可能的,至少官方 Android SDK 不支持,查看开发指南以了解什么是 Android 库项目:

但是,库项目与标准 Android 应用程序项目的不同之处在于,您不能将其直接编译为自己的 .apk 并在 Android 设备上运行。同样,您不能将库项目导出到自包含的 JAR 文件,就像对真正的库所做的那样。相反,您必须通过在依赖应用程序中引用库并构建该应用程序来间接编译库。

“不过,我可以一次将包装切换到 apk/apklib 一个。”

这可能由 android-maven-plugin 实现,因为 Android 库项目具有与标准 Android 应用程序项目相似的项目结构,在开发指南中说明:

在结构上,库项目类似于标准的 Android 应用程序项目。例如,它在项目根目录下包含一个清单文件,以及 src/、res/ 和类似目录。该项目可以包含与标准 Android 项目相同类型的源代码和资源,以相同的方式存储。例如,库项目中的源代码可以通过其 R 类访问自己的资源。

我自己没有测试过,如果是真的,我会认为这是android-maven-plugin中的一个错误,因为它不尊重project.properties文件中android.library=true的设置。如果它是一个库项目,您尝试使用.<packaging>apk</packaging>

于 2012-09-14T23:02:14.193 回答