我应该使用Maven的Android应用程序?

我主要使用Java编写代码,并将Maven用于我的所有项目。 我非常喜欢使用Maven,因为它很容易下载源代码和文档,更重要的是,我不需要将外部库的副本保存在我的项目源代码文件夹下。

我已经开始开发一个Android应用程序,我发现Eclipse的Android插件非常好。 但是,所有提供的示例都不是maven项目,所以我不知道如果使用maven,我还是会获得Android插件的所有function,或者使用Maven是否有任何缺点。

所以问题是:

  1. Android插件的Eclipse的所有function仍然工作?
  2. 是否会比使用正常的构build更困难(我相信这是ant,但不是确定的)
  3. 任何其他的缺点,例如最终应用程序的文件大小(Maven往往把许多东西捆绑在一起),或者在Maven仓库(这可能与Android不同)上获取最新的库的困难。

请不要指向这个Android项目的Maven支持?

我想从开发人员的经验回答。 我已经知道可以使用maven的Android应用程序。 我需要知道的是我是否应该使用它。

我的团队目前的任务是开发一个Android应用程序。 由于它是一个小应用程序,也是某种原型,我们决定评估Maven和Android Eclipse插件。

简而言之:在两个开发者花了三天的时间之后,我们无法获得Maven项目中的Android Eclipse插件function。

  • R级没有根据我们的资源更新
  • 我们无法直接从Eclipse中的仿真器和/或附加设备上启动应用程序

由于这些问题真的阻碍了我们的发展,我们决定在没有Maven的情况下开发应用程序。 但是,如果你们中的任何一个知道如何解决这些问题,我很乐意听到一个解决scheme!

如果你想快速运行testing,你几乎被迫使用maven。 由于robolectric是要走的路。 他们说Roboletric可能更容易通过Eclipse下的maven来设置(他们使用的是IDEA)。

这就是说,你读过这个post还是那个 ? 你得到了什么错误信息?

我做错的典型事情是:

  1. 使用maven> = 3.0.3! 并避免在eclipse中embedded的东西。 (如果我没有记错的话,这仅仅是robolectric所必需的)
  2. 按照robolectric页面上描述的〜/ .m2 / settings.xml来设置androidpath
  3. 在local.properties和Preferences – > Android – > SDK位置下指定你的android sdk
  4. 进一步阅读这个 ,或者只是尝试这个为我工作的mavenized robolectric示例本身。 将其导入为现有的Maven项目。
  5. 通过maven-android-sdk-deployer和安装必要的sdk(在我的例子中是2.2_r3)

     export ANDROID_HOME=/path/to/android/sdk mvn install -P 2.2 
  6. 我有没有提到这个奇怪的工具: m2e-android-不知道为什么用Eclipse需要这么多的东西…在这里,你可以通过软件更新来安装它http://rgladwell.github.com/m2e-android/updates/master / M2E-的Android /

希望我能正确记住所有的步骤。 祝你好运!

更新:

切换回正常的Android的东西没有在Eclipse下的Maven作为IDE做出奇怪的东西: http : //groups.google.com/group/robolectric/browse_thread/thread/ac814076c40d9df1

但是,这个Maven冒险的好处是,我现在可以通过NetBeans轻松地testing和debugging我的项目了。

众所周知,Android Devolopment从Eclipse迁移到Android Studio

Android Studio构build系统由Gradle的Android插件组成。 Gradle是一个高级构build工具包,用于pipe理依赖关系,并允许您定义自定义构build逻辑。

构build系统是独立于Android Studio的,因此您可以从Android Studio或从命令行调用它。

Android Studio构build系统支持远程Maven依赖关系。 如您所知,Maven是一个stream行的软件项目pipe理工具,可帮助使用存储库组织项目依赖关系。

您可以通过Android Studio的命令行在您的机器上构build您的Android应用程序 ,从而避免Eclipse中插件的混乱。

查看使用Maven构buildAndroid应用程序的教程。

请参阅这里了解更多关于Gradle构build

我build议避免Maven在Android上进行专业开发。 原因如下:

  1. Google正在投入时间来保持Android Studio与Gradle的整合。 所以maven是额外的工作。
  2. 如果您必须使用Maven(例如pipe理相关的库),那么Gradle可以使用Maven插件。 请参阅https://docs.gradle.org/current/userguide/maven_plugin.html
  3. 通过使你的主要构build工具maven你会下载大量的依赖,你不需要,你不知道他们来自哪里。 这与您的Android应用程序,您理想只需要您的代码和Android平台的概念相反。 换句话说,你涉及到很多不需要的库/代码。

简而言之,使用maven作为您的Android构build工具将会增加更多的工作,并创buildpipe理噩梦(IMO)。

试试这个来说明:

  1. 在炉子上加热锅。
  2. 拿起一个生鸡蛋。 说“这是你的Android应用程序”。
  3. 把鸡蛋打入锅里。
  4. 说:“这是你的android应用程序在maven-with-rats-nest-dependency-tree-and-unknown-code-downloads-that-you-don't-need-无论如何。
  5. 等待鸡蛋烧到一个脆。
  6. 说,“这是你的Android应用程序时,Maven构build与您的Android应用程序打包一个无用的或不良的库。”

我已经能够使用Android开发工具的Eclipse(开普勒)和Android的Maven Eclipse 1.0.1(m2e-android)的Android应用程序开发使用maven。 按照这些说明http://rgladwell.github.io/m2e-android/ 。 在你用android quickstart archetype创build你的新项目后,修改你的pom.xml。 添加android平台版本。 Eclipse(m2e)将在android-maven-plugin声明中的pom.xml上报告一个错误,以解决这个问题, 在maven pom xml文件中错误地跟随alexander的响应:构buildAndroid项目 。 然后使用eclipse更新maven项目,应该是这样的。

来自我在Intellij的经验。 我使用Maven作为我的android开发过程的构build自动化工具。 我从Packtpub的“Android应用程序开发与Maven”开始学习。