草庐IT

安卓和maven : problem with maven dependencies in apk

coder 2023-12-19 原文

我目前正在开发一个使用 Maven 作为构建工具的 Android 项目。但是我在包含依赖项时遇到问题,更具体地说:我的 pom 文件中列出的所有依赖项都没有打包在 apk 中。当我尝试在我的模拟器上运行应用程序时,这会导致 ClassDefNotFound 错误(在 Dalvik 加载器中引发底层 ClassNotFound 异常)。

我正在使用具有以下插件配置的 Springsource Tool Suite ( 2.5.2.SR1):

  • Android 开发工具 (10.0.1.v201103111512-110841)
  • Android 开发工具的 Maven 集成 (0.2.5)
  • Eclipse 的 Maven 集成 (0.12.1.20110112-1712)
  • maven (2.2.1)

这是我的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/

有关安卓和maven : problem with maven dependencies in apk的更多相关文章

  1. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  2. ruby - 在 Maven 集成中运行 Ruby 单元测试 - 2

    有没有人有在Maven中运行用Ruby编写的单元测试的经验。任何输入,如要使用的库/maven插件,将不胜感激!我们已经在使用Maven+hudson+Junit。但是我们正在引入Ruby单元测试,找不到任何同样好的组合。 最佳答案 我建议让Maven使用ExecMavenPlugin启动rake测试(exec:exec目标)并使用ci_reportergem生成单元测试结果的XML文件,Hudson、Bamboo等可以读取该文件,以与JUnit测试相同的格式显示测试结果。如果您不需要使用mvntest运行Ruby测试,您也可以只使

  3. (一)专题介绍:移动端安卓手机改造成linux服务器&linux服务器中安装软件、部署前后端分离项目实战 - 2

    快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目

  4. [ERROR] Error executing Maven. - 2

    [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\'

  5. 无法创建Maven项目:'.../pom.xml'已经存在于VFS(Intellij)中 - 2

    当我想重新创建一个名称但已经删除的Maven项目时,我会收到以下错误消息:无法创建Maven项目:'.../pom.xml'已经存在于VFS中看答案看清洁系统缓存页。在IntellijIdea中打开任何项目选择“文件&gt;无效缓存/重新启动...”单击“无效并重新启动”警告清理系统缓存,请记住:它导致清除当地历史。为避免丢失数据,请在使缓存无效之前检查版本控制系统的更改。导致对当前版本的IntellijIdea中运行的所有项目的完整重建。

  6. javascript - 如何 : Maven project to build JavaScript in Eclipse - 2

    如何配置我的pom以将文件夹用作JavaScript构建路径?我想让开发人员将项目导入到eclipse中,并在eclipse构建路径中自动拥有JavaScript根文件夹,以便自动完成和其他JavaScript支持工作。 最佳答案 这是我所做的,它似乎工作正常。我现在正在使用EclipseJunoSR2(面向Web开发人员的JavaEE)和Maven3.0.5。(我不是Eclipse或Maven方面的专家,所以我确信有一种更优雅的方法可以做到这一点。请告诉我!)根据Maven约定,我们希望拥有如下所示的项目结构:-src+--mai

  7. javascript - 如何在不需要运行浏览器或服务器的情况下在 Maven 中运行 javascript 单元测试? - 2

    我致力于开发包含javascript的网络内容,在某种程度上,它包含比动画和移动值更多的逻辑。我想为这种逻辑实现一些单元测试。我想找到一些方法用javascript编写这些测试,并在我用maven构建web项目时让它们运行。因为我要测试的代码处理方法或对象中包含的逻辑内容,所以我觉得我不应该让服务器运行。另外,我读过Rhino之类的东西,这让我觉得应该没有必要让浏览器从某处开始只是为了执行javascript。我并不是特别关心浏览器的差异——我很少发现我在该领域遇到问题,而且当我遇到问题时,总是与样式或罕见的DOM问题有关。我想测试一下我能否将1加1最后得到2。我在谷歌上搜索了一些,发

  8. java - 最佳实践 : how to host server-side code in the maven repository - 2

    将javascript/html/css代码放入maven存储库的最佳方式是什么,以便java项目可以轻松使用。有没有办法让包含的项目可以很容易地通过包含项目“网络可见”?例如,假设我编写了一个非常有用的tricks.js文件并将其放入mvn存储库中。是否可以创建一个将tricks.js添加为依赖项然后执行的Web项目导致提供tricks.js文件? 最佳答案 外部资源应该打包成工件并发布到存储库(为简单起见,使用jar工件,但您可以指定一个assembly来打包一个zip,而不是明确工件的用途)。maven-dependency-

  9. maven - 2

    #maven1.maven基础 Maven是apache提供的一个项目管理工具,它的作用就是管理项目2.maven作用 1).依赖管理[方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题] 1.依赖denpendency依赖(坐标):一个jar包groupId公司域名倒写artifactId项目名version 版本号坐标:Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。 使用坐标来定义项目或引入项目中需要的依赖。2.仓库种类 本地仓库:自己计算机上的一个目录 远程仓库(私服):一般由公司团队搭建的私有仓库 中央仓库:由Maven团队维护的全球唯一的3.ja

  10. javascript - 通过 Maven 安装 NodeJS - 2

    我看到许多用于JavaScript的较新Maven插件需要在进行构建的机器(本地和CI服务器)上安装NodeJS。例如:yeoman-maven-plugin、npm-maven-plugin等问题是:检查NodeJS是否存在并在缺少时通过Maven作为依赖安装它是否有意义?奖励问题:如果您认为这是个好主意,您将如何完成这项任务? 最佳答案 你可以试试frontend-maven-plugin(通过https://stackoverflow.com/a/19600777/1024571)。根据文档:Thisplugindownloa

随机推荐