问题标签 [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.

0 投票
1 回答
4098 浏览

android - 使用 Maven 构建 Android 项目时出错:平台/API 级别 16 不可用

我实际上是在使用 maven 编译一个 android 项目:mvn clean install我收到了这个错误,但不明白为什么会这样

无法在项目 helloflashlight 上执行目标 com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.6.0:generate-sources (default-generate-sources):执行目标 com 的 default-generate-sources。 jayway.maven.plugins.android.generation2:android-maven-plugin:3.6.0:generate-sources 失败:无效的 SDK:平台/API 级别 16 不可用。

我应该怎么办?

0 投票
1 回答
1596 浏览

android - 将资源编译为库项目的类?

我必须开发一个需要打包并分发给 Android 开发人员的 Android 库。它同时具有Java类和资源(图标等)。

我想知道分发这样一个库的最佳方式。众所周知,许多知名库以不同的格式分布:

  • ActionBAr Sherlock - ZIP 或 APKLIB
  • 乱舞 - JAR

我的先决条件:

  1. 我不能分发源 - 只允许编译的 java 类和资源
  2. 我的目标是尽可能简单地与客户端项目指令集成——例如,Maven/Gradle 中的一行作为依赖项,几行代码如何在应用程序中使用它。
  3. 我必须尊重每一个构建系统:使用 NBS 的、使用 android-maven-plugin 的以及使用旧版 ANT 的。

我的第一个想法是将这个库作为 APKLIB (Maven) 和 AAR (NBS) 分发,但后来我意识到不支持 ANT。

问题:

  1. APKLIB 和 AAR 可以只编译类和资源而不是纯 Java 源吗?
  2. 如何为 ANT 分发已编译的 android 库项目?作为邮编?
  3. 为库生成 R 怎么样?

感谢您的任何建议!

0 投票
1 回答
717 浏览

android - Robolectric、Dagger 和编译时 $ModuleAdapter 创建

继我的 Android TDD 系列中的其他 问题之后,我已经设法使用RobolectricMockitoMavenABS对我的 Android 开发进行单元测试。显然,我似乎在突破自己的知识界限,但 Android CI 的梦想实在是太诱人了。如果您能帮助解决我的下一个问题,我将不胜感激,就在这里;

我想编写一个集成测试用例,它将我的应用程序数据库从 v1 带到 head。我正在使用Dagger进行 DI 并促进这个非标准的 JUnit 测试,我将执行升级所需的类注入到我的测试中,因此;

需要注意的重点;

  • 该测试位于它自己的测试项目下,与被测项目分开(有关结构,请参阅我的链接问题)
  • 创建实际应用程序的模块图时出现故障(下面的堆栈跟踪)。
  • 注入器规则(如下所述)链接到测试项目模块,其中包括在实际运行我的应用程序时使用的模块。

规则下发生了DaggerInjector什么?

我尝试注入测试所需的任何依赖项。

你的测试模块是什么样的?

为测试和(未来)测试模拟替换添加入口点(这是dagger-0.9.1,不是最新的 where injectreplaces )。entryPoints

如果我注释掉负责创建我的真实应用程序对象图的代码行,我的测试就会运行绿色。这是堆栈跟踪;

错误1:从我的测试角度被抓到并吞下

dagger.internal.RuntimeAggregatingPlugin#getModuleAdapter

错误 2:被Robolectric转储到控制台

调查至今

我一直专注于为什么会发生“错误 1”。从阅读“编译时代码生成”方面到用户指南,我可以看到 RuntimeAggregatingPlugin 正在寻找的适配器 ( OceanLifeModule$ModuleAdapter) 是在编译时生成的。从那以后,我一直在检查我的 Maven 配置,如果社区认为有必要解决这个问题,我很乐意提供。“错误 2”的低级性质使我认为它比根本原因更具衍生性。

0 投票
0 回答
193 浏览

android - 如何在 android-app-2 中从 android-app-1 引用接口

我使用 android-maven-plugin。我想创建以下项目结构:

main android application我有一个ItemRepository接口,我想在data access android application.

当我尝试安装data access android application时,其类实现ItemRepository了“主android应用程序”等接口,通常会导致:

java.lang.IllegalArgumentException:已添加:Lcom/api/R;

java.lang.IllegalArgumentException:已添加:Lcom/api/HelloAndroidActivity;

和类似的错误。

data access android application's pom.xml这是我添加到引用接口的依赖项。我尝试将范围更改为provided但找不到接口。

如何解决?

0 投票
1 回答
259 浏览

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 不会抱怨找不到类,并且自动完成功能适用于这些类?

我尝试了几种可能的解决方法(123),但它们对我不起作用。我也很确定NetBeans 错误 220446是相关的

0 投票
1 回答
383 浏览

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 就在这里...

提前谢谢你,任何想法都亲切地接受了。

0 投票
2 回答
1421 浏览

android - 在 IntelliJ 中构建时未解决的 maven android 依赖项

我在我的 Android 项目中使用 Maven,以及 android-maven-plugin。在我的项目 pom.xml 文件中,我像这样声明依赖项:

ViewPagerIndicator 依赖于 Android 4.1.1.4,它位于此处的 Maven Central 上。但是,我不是使用 Android 4.1.1.4 构建的,而是基于 4.2.2 r2 构建的,它的声明如下:

这个工件不在 Maven Central 上,我正在使用maven-android-sdk-deployer将 Android 工件推送到我的仓库中。

如果我打开终端并使用 maven 构建,则没有问题。问题是当我将项目导入 IntelliJ 并尝试构建时。模块设置(正确)抱怨 ViewPagerIndicator apklib 模块中 Android 4.1.1.4 依赖项的路径已损坏。

我检查了我的 .m2/repository 文件夹中的 Android 4.1.1.4 jar,甚至没有文件夹,这意味着 Maven 从未下载过它。我猜这与使用 Maven 构建时 maven-android-plugin 的工作方式与 IntelliJ 的构建方式有关。

我知道我可以自己抓取 jar 并自行部署,但我正在寻找更好的解决方案,因此我团队中的新成员只需要抓取源代码而无需执行其他任何操作来构建项目。我已经为团队设置了 Nexus,因此我们不必继续手动部署第三方 jar,并在每个人的机器上运行 sdk 部署程序。我希望能够将源代码交给新的开发人员,他们就可以使用它运行。

0 投票
2 回答
4977 浏览

android - 在工作区中找不到依赖项=[com.google.android.gms:google-play-services:apklib:7:compile]

很抱歉添加了另一个“找不到 android maven google maps 依赖项”问题,但我认为我已经阅读了大部分关于它的帖子并应用了所有建议的解决方案但没有成功。

我有一个使用 Google Maps V2 依赖项运行良好的 maven Android 项目,该项目没有使用 maven 引用,而是通过在工作区中导入的 google-play-services_lib 项目和 eclipse 构建路径库依赖项进行引用。

现在我正在尝试通过 pom 配置 google-play-services 依赖项,因为我正在使用 Robolectric 实现 maven 自动化测试,但是我遇到了这个错误显示在 pom 的第一行,没有快速修复:

在工作区中找不到依赖项=[com.google.android.gms:google-play-services:apklib:7:compile]

到目前为止,我已经尝试过,经过大量的谷歌搜索,并在每一步之后检查结果都没有成功:

  • 最初使用 android-maven-sdk-helper 将 google play services 组件安装到我的本地 .m2 存储库(按照这些说明),并将两个依赖项添加到项目 pom 到 jar 和 apklib 版本 7,这是我本地安装的版本(如这里) . 在此之后它应该可以工作,但出现了依赖错误。

  • 从 Eclipse 构建路径中删除对库 google-play-services_lib 的引用(在项目/首选项/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 进行了测试。

  • 通过运行 eclipse 配置/转换为 Maven 项目,“Mavenise”包含在工作区中的 google-play-services_lib 项目。我编辑了生成的 pom 以将打包类型更新为 apklib: <packaging>apklib</packaging>,并添加了 android-maven-plugin<extensions>true</extensions>以识别 apklib 包类型。我用maven target compile编译了项目,成功了,但是我在任何地方都找不到生成的apklib文件。

在这些更改中的每一个之后,我都会执行 Maven / 更新项目、清理项目,甚至重新启动 Eclipse。没有成功:在空间错误中找不到依赖项仍然存在。

我不知道还能尝试什么。可能是图书馆名称的东西吗?库项目名称为google.play-services_lib,后缀为_lib,eclipse android库构建路径中引用的jar为_lib.jar,但maven工件没有_lib后缀。我也尝试在组件和工件中进行一些重命名,但没有成功,但我想问题可能就在那里。有人可以为 mavenised google-play-services_lib 项目发布示例 pom.xml 吗?

另一种猜测:我mvn编译mavenised库项目的时候,为什么找不到生成的.apklib文件,在哪里?我用 mvn -X compile 检查了跟踪,没有发现任何提示。

环境和版本:

我添加到 google-play-services_lib 项目的 pom.xml:

0 投票
3 回答
731 浏览

android - 使用 maven 构建失败

我是 Robospice 的新手,mvn install在示例项目的目录中运行会出现以下错误:

我正在使用 Maven 3.1.0 知道有什么问题吗?

尝试通过 m2eclipse 将项目导入 eclipse 结果与工件丢失相关的错误。

0 投票
0 回答
766 浏览

android - 在 Maven Android 构建中使用指定的 debug.keystore

我知道如何在 Android Maven 构建中指定发布密钥库,但在调试构建中没有做同样的事情。

可以在此处找到发布构建方法 - https://code.google.com/p/maven-android-plugin/wiki/SigningAPKWithMavenJarsigner

在进行调试构建时,android-maven-plugin 的sign->debug 配置必须为true,release 配置必须为false,但是当debug 设置为true 时,maven-jarsigner-plugin 的配置似乎被忽略了。

使用(android-maven-plugin)时:

并指定一个密钥(maven-jarsigner-plugin):

构建将默认使用我.android目录中的 debug.keystore。如果我在那里删除/重命名 debug.keystore,它只会创建新的。

我想指定 debug.keystore 的原因是我在一个由几个人组成的团队中工作,并且我们使用的是 Google Maps v2。我们希望在 Maps v2 API 中拥有一个访问令牌,而不是每个团队成员一个。

谢谢

编辑:

我目前的解决方法是用我的 repo 打包一个脚本来替换他们的 debug.keystore: