1)一种可靠的方法来查看某个类/jar/任何东西是否被打包到我的apk中,因为在我的应用程序中达到这一点的步骤现在很长而且很复杂
从命令行构建项目(即 mvn clean install),maven 将在构建的每个阶段/目标期间输出详细日志,在 dex 目标中,您可以看到如下内容:
[INFO] --- android-maven-plugin:3.1.1:dex (default-dex) @myproject ---
[INFO] C:\Program Files\Java\jdk1.6.0_21\jre\bin\java [- Xmx1024M, -jar, C:\Progr am Files\Android\android-sdk-r16\platform-tools\lib\dx.jar, --dex, --output=C:\workspace\myproject\target\classes.dex , C:\workspace\myproject\target\classes, C:\maven\repository\cocos2d_android\cocos2d_android\1.0.0-SNAPSHOT\cocos2d_android-1.0.0-SNAPSHOT.apklib, C:\maven\repository\com\google\代码\gson\gson\1.7.1\gson-1.7.1.jar, ... ...]
Android 库项目实际上是 dex-ed 为 cocos2d_android-1.0.0-SNAPSHOT.apklib 以及其他一些常规 jar 库档案。
2) 主应用程序或库项目的清单或 pom.xml 中的某些内容似乎丢失了 - 需要向 Maven 发出信号以获取另一个项目 - 它是什么?
它是 ApkLib,它只是 Android 库项目(src/、res/、AndroidManifest.xml 等)的 zip 存档。我们通常创建/实现我们自己的 Android 库项目,将依赖的 Android 项目作为多模块 maven 项目,但是,如果您需要参考其他开发人员编写的 Android 库项目,则不需要这样做。感谢开发者,android-maven-plugin 已经支持非 Maven Android 库项目,查看Compatible with non-Maven Android Library Projects:
生成的 .apklib 文件将具有标准 Android/Eclipse 库项目的布局。这意味着无论您的 Maven 布局如何,.apklib 文件中的布局都将是源代码位于“src/”而不是“src/main/java/”中,但在 Android/Maven 应用程序中使用时仍能正确解释项目。这是为了兼容非 Maven 开发者的库项目,这对于发展 Android 开发者社区很重要。
使用其他非 Maven 开发者的库
这也意味着我们可以获取任何外部 Android 库项目 zip 文件(来自非 Maven 开发人员)并对其执行 mvn install:install-file ... 并开始使用它作为依赖项。
与非 Maven 开发人员共享您的 .apklib
要与非 Maven 开发人员共享您的 .apklib 文件,如果您将其重命名为 .zip,他们可能会感觉更舒服。然后,他们可以简单地将其解压缩到一个目录中并从那里使用它。
所以解决方法是:
将您的 Android 库项目正确打包到 zip 存档中,然后将其重命名为 something.apklib。
使用 mvn install:install-file 将 something.apklib 安装到 Maven 本地存储库中。
在任何需要库依赖的 Android 项目中,只需使用:
<dependency>
<groupId>cocos2d_android</groupId>
<artifactId>cocos2d_android</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>apklib</type>
</dependency>
查看android-maven-plugin 网站上的示例,了解如何正确使用 apklib。