我目前正在开发一个使用 Maven 作为构建工具的 Android 项目。但是我在包含依赖项时遇到问题,更具体地说:我的 pom 文件中列出的所有依赖项都没有打包在 apk 中。当我尝试在我的模拟器上运行应用程序时,这会导致 ClassDefNotFound 错误(在 Dalvik 加载器中引发底层 ClassNotFound 异常)。
我正在使用具有以下插件配置的 Springsource Tool Suite ( 2.5.2.SR1):
这是我的pom文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>android-test</groupId>
<artifactId>android-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>apk</packaging>
<name>android-test</name>
<properties>
<android-platform>10</android-platform>
<android-emulator>Android-2.3.3</android-emulator>
<android-sdk-path>C:\Program Files\Android\android-sdk</android-sdk-path>
<maven-android-plugin-version>2.8.4</maven-android-plugin-version>
<maven-compiler-plugin-version>2.3.2</maven-compiler-plugin-version>
<android-version>2.3.1</android-version>
<spring-android-version>1.0.0.M2</spring-android-version>
<jackson-version>1.7.2</jackson-version>
</properties>
<build>
<sourceDirectory>src</sourceDirectory>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>maven-android-plugin</artifactId>
<version>${maven-android-plugin-version}</version>
<configuration>
<sdk>
<platform>${android-platform}</platform>
<path>${android-sdk-path}</path>
</sdk>
<emulator>
<avd>${android-emulator}</avd>
</emulator>
<deleteConflictingFiles>false</deleteConflictingFiles>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
</configuration>
<extensions>true</extensions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>${android-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.android</groupId>
<artifactId>spring-android-rest-template</artifactId>
<version>${spring-android-version}</version>
</dependency>
<dependency>
<!-- Using Jackson for JSON marshaling -->
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson-version}</version>
</dependency>
</dependencies>
<repositories>
<!-- For testing against latest Spring snapshots -->
<repository>
<id>org.springframework.maven.snapshot</id>
<name>Spring Maven Snapshot Repository</name>
<url>http://maven.springframework.org/snapshot</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<!-- For developing against latest Spring milestones -->
<repository>
<id>org.springframework.maven.milestone</id>
<name>Spring Maven Milestone Repository</name>
<url>http://maven.springframework.org/milestone</url>
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
</project>
还有我的 android list 文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ae.test.android"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
据我所知,这应该是正确的设置。现在的问题是,当我尝试构建这个项目时,我得到:
无法在 APK 内的相同路径添加源文件夹重复文件
我找到了 this在 SO 上,虽然解决方案(将 eclipse 的默认输出文件夹更改为 bin 而不是 target)确实解决了错误,但没有解决依赖性问题。我生成的 android 文件不包含在目标文件夹中,因此该解决方案对我没有用。
有没有其他人有设置 Android 和 Maven 的经验,如果有,你能帮我吗?
非常感谢!
最佳答案
我没有使用 Android 开发工具 (0.2.5) 的 Maven 集成,因为 eclipse 自动构建过程花费了很长时间。我可以将默认输出文件夹保留为 <project>/target/classes在这种情况下。
从命令行构建我的项目工作正常。依赖项包含在 apk 文件中。
仅当我使用
将依赖项显式添加到 eclipse 项目时,才能从 eclipse 运行项目Project Properties -> Java Build Path -> Libraries -> Add External JARs...
那是我不得不吞下的苦果(我不是英语母语,希望这句话有意义)。
关于安卓和maven : problem with maven dependencies in apk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451148/
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
有没有人有在Maven中运行用Ruby编写的单元测试的经验。任何输入,如要使用的库/maven插件,将不胜感激!我们已经在使用Maven+hudson+Junit。但是我们正在引入Ruby单元测试,找不到任何同样好的组合。 最佳答案 我建议让Maven使用ExecMavenPlugin启动rake测试(exec:exec目标)并使用ci_reportergem生成单元测试结果的XML文件,Hudson、Bamboo等可以读取该文件,以与JUnit测试相同的格式显示测试结果。如果您不需要使用mvntest运行Ruby测试,您也可以只使
快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目
[ERROR]ErrorexecutingMaven.报错如下:[ERROR]中的关键提示信息:错误分析:解决:报错如下:错误代码提示:[ERROR]ErrorexecutingMaven.[ERROR]2problemswereencounteredwhilebuildingtheeffectivesettings[FATAL]Non-parseablesettingsD:\apache-maven-3.6.2&repository\apache-maven-3.6.2\conf\settings.xml:entityreferencenamecannotcontaincharacter\'
当我想重新创建一个名称但已经删除的Maven项目时,我会收到以下错误消息:无法创建Maven项目:'.../pom.xml'已经存在于VFS中看答案看清洁系统缓存页。在IntellijIdea中打开任何项目选择“文件&gt;无效缓存/重新启动...”单击“无效并重新启动”警告清理系统缓存,请记住:它导致清除当地历史。为避免丢失数据,请在使缓存无效之前检查版本控制系统的更改。导致对当前版本的IntellijIdea中运行的所有项目的完整重建。
如何配置我的pom以将文件夹用作JavaScript构建路径?我想让开发人员将项目导入到eclipse中,并在eclipse构建路径中自动拥有JavaScript根文件夹,以便自动完成和其他JavaScript支持工作。 最佳答案 这是我所做的,它似乎工作正常。我现在正在使用EclipseJunoSR2(面向Web开发人员的JavaEE)和Maven3.0.5。(我不是Eclipse或Maven方面的专家,所以我确信有一种更优雅的方法可以做到这一点。请告诉我!)根据Maven约定,我们希望拥有如下所示的项目结构:-src+--mai
我致力于开发包含javascript的网络内容,在某种程度上,它包含比动画和移动值更多的逻辑。我想为这种逻辑实现一些单元测试。我想找到一些方法用javascript编写这些测试,并在我用maven构建web项目时让它们运行。因为我要测试的代码处理方法或对象中包含的逻辑内容,所以我觉得我不应该让服务器运行。另外,我读过Rhino之类的东西,这让我觉得应该没有必要让浏览器从某处开始只是为了执行javascript。我并不是特别关心浏览器的差异——我很少发现我在该领域遇到问题,而且当我遇到问题时,总是与样式或罕见的DOM问题有关。我想测试一下我能否将1加1最后得到2。我在谷歌上搜索了一些,发
将javascript/html/css代码放入maven存储库的最佳方式是什么,以便java项目可以轻松使用。有没有办法让包含的项目可以很容易地通过包含项目“网络可见”?例如,假设我编写了一个非常有用的tricks.js文件并将其放入mvn存储库中。是否可以创建一个将tricks.js添加为依赖项然后执行的Web项目导致提供tricks.js文件? 最佳答案 外部资源应该打包成工件并发布到存储库(为简单起见,使用jar工件,但您可以指定一个assembly来打包一个zip,而不是明确工件的用途)。maven-dependency-
#maven1.maven基础 Maven是apache提供的一个项目管理工具,它的作用就是管理项目2.maven作用 1).依赖管理[方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题] 1.依赖denpendency依赖(坐标):一个jar包groupId公司域名倒写artifactId项目名version 版本号坐标:Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。 使用坐标来定义项目或引入项目中需要的依赖。2.仓库种类 本地仓库:自己计算机上的一个目录 远程仓库(私服):一般由公司团队搭建的私有仓库 中央仓库:由Maven团队维护的全球唯一的3.ja
我看到许多用于JavaScript的较新Maven插件需要在进行构建的机器(本地和CI服务器)上安装NodeJS。例如:yeoman-maven-plugin、npm-maven-plugin等问题是:检查NodeJS是否存在并在缺少时通过Maven作为依赖安装它是否有意义?奖励问题:如果您认为这是个好主意,您将如何完成这项任务? 最佳答案 你可以试试frontend-maven-plugin(通过https://stackoverflow.com/a/19600777/1024571)。根据文档:Thisplugindownloa