Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 添加一个Eclipse";安卓图书馆;通过Maven进行项目和建设_Android_Maven_Cocos2d Android - Fatal编程技术网

Android 添加一个Eclipse";安卓图书馆;通过Maven进行项目和建设

Android 添加一个Eclipse";安卓图书馆;通过Maven进行项目和建设,android,maven,cocos2d-android,Android,Maven,Cocos2d Android,我正在尝试将cocos2d包含到一个预先存在的应用程序中。我用Eclipse的方式做了一些事情,比如设置“isLibrary”并在Eclipse中将库项目添加到构建路径中,我的应用程序的pom.xml中有以下依赖项: <dependency> <groupId>cocos2d_android</groupId> <artifactId>cocos2d_android</artifactId> <versio

我正在尝试将cocos2d包含到一个预先存在的应用程序中。我用Eclipse的方式做了一些事情,比如设置“isLibrary”并在Eclipse中将库项目添加到构建路径中,我的应用程序的
pom.xml
中有以下依赖项:

<dependency>
    <groupId>cocos2d_android</groupId>
    <artifactId>cocos2d_android</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

cocos2d_机器人
cocos2d_机器人
1.0.0-SNAPSHOT
假如
我原以为这会解决这个问题,但当我构建时,库似乎没有包括在内。我之所以知道这一点,是因为当我开始一个活动时,
SimpleGame
,引用cocos2d源代码中的一个类,该活动将终止,我在DDMS中得到这个stacktrace:

E/AndroidRuntime(10621):致命异常:main
E/AndroidRuntime(10621):java.lang.NoClassDefFoundError:org.cocos2d.opengl.CCGLSurfaceView
E/AndroidRuntime(10621):位于com.xyz.game.SimpleGame.onCreate(SimpleGame.java:22)
...

我在寻找两件事:

1) 这是一种可靠的方法,可以查看某个类/jar/任何东西是否打包到了我的apk中,因为在我的应用程序中实现这一点的步骤现在是漫长而复杂的

2) 主应用程序或库项目的Manifest或pom.xml中似乎缺少某些内容—需要向Maven发出信号以获取另一个项目—这是什么


我正在使用插件的Maven 3.0.4和3.0.0-alpha-13,为8级及更高级别构建。

不应提供
范围。提供的方式:

提供-这非常类似于编译,但表示您希望使用JDK 或者在运行时提供它的容器。它仅在 编译和测试类路径,并且不可传递

改用
编译

额外提示:由于
compile
是默认设置,因此可以删除提供的

1)这是一种可靠的方法,可以查看某个类/jar/任何东西是否打包到我的apk中,因为在我的应用程序中实现这一点的步骤现在既长又复杂

从命令行构建项目(即mvn clean install),maven将在构建的每个阶段/目标期间输出详细日志,在dex目标中,您可以看到如下内容:

[信息]---安卓maven插件:3.1.1:dex(默认dex)@myproject---
[INFO]C:\ProgramFiles\Java\jdk1.6.0\u21\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,C:\workspace\myproject\target\classes,C:\maven\repository\cococos2d\u Android\1.0.0-SNAPSHOT\cocos2d\u Android-1.0.0-snapklib,C:\maven\repository\com\google\code\gson\gson\1.7.1.1.jar,…]

Android库项目实际上被索引为cocos2d_Android-1.0.0-SNAPSHOT.apklib以及其他一些常规jar库归档


2)主应用程序或库项目的Manifest或pom.xml中似乎缺少某些内容-需要向Maven发出信号以接收另一个项目-这是什么?

它是ApkLib,它只是Android库项目(src/、res/、AndroidManifest.xml等)的zip存档。我们通常创建/实现我们自己的Android库项目,依赖的Android项目作为多模块maven项目,但是,如果您需要其他开发人员编写的参考Android库项目,则不需要这样做。感谢开发者,android maven插件已经支持了非maven android库项目,请查看:

生成的.apklib文件将具有标准Android/Eclipse库项目的布局。这意味着,无论您的Maven布局如何,.apklib文件中的布局都是源代码位于“src/”而不是“src/main/java/”,但在Android/Maven应用程序项目中使用时仍能正确解释。这将与非Maven开发者的库项目兼容,这对于Android开发者社区的发展非常重要

使用其他非Maven开发人员的库

这也意味着我们可以获取任何外部Android库项目zip文件(来自非Maven开发者)并执行mvn安装:安装文件。。。并将其作为依赖项使用

与非Maven开发者分享你的.apklib

要与非Maven开发人员共享您的.apklib文件,如果您将其重命名为.zip,他们可能会感到更舒服。然后,他们可以简单地将其解压缩到一个目录中,并从那里使用它

因此,解决办法是:

  • 将您的Android库项目正确打包到zip存档中,然后将其重命名为something.apklib

  • 使用mvn Install:Install文件将something.apklib安装到Maven本地存储库中

  • 在任何需要库依赖关系的Android项目中,只需使用:

    <dependency>
      <groupId>cocos2d_android</groupId>
      <artifactId>cocos2d_android</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <type>apklib</type>
    </dependency>
    
    
    cocos2d_机器人
    
    在android maven插件网站上查看如何正确使用apklib。

    有趣的是,您应该提到-使用
    编译
    默认值,我在尝试构建.apk时遇到重复输入错误。显然,我在某个地方有一个额外的依赖项规范,但我不确定在哪里-我已经尝试在eclipse中从构建路径中删除该项目,不确定还要尝试什么。@BryM。这可能是由android库中已经存在的cocos2d_android中的依赖项引起的。您可能会在类路径中找到重复的类,并使用Maven dependency标记删除cocos2d_android中的冗余依赖项。谢谢yorkw!不过,Maven有没有办法让项目顺利完成?我的cocos2d副本是github的只读克隆,我希望在每次github发生更改时不重复这个过程,我不知道是否有maven插件可以从github自动拉、压缩和安装。您打算多久升级一次应用程序?从一个有生产力的人