我正在尝试将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>我以为这已经解决了这个问题,但是当我构建的时候,这个库似乎没有被包括在内。我之所以知道这一点,是因为当我启动一个活动SimpleGame,它引用了cocos2d源代码中的一个类时,该活动终止了,并且我在DDMS中得到了这个堆栈跟踪:
E/AndroidRuntime(10621): FATAL EXCEPTION: main E/AndroidRuntime(10621): java.lang.NoClassDefFoundError: org.cocos2d.opengl.CCGLSurfaceView E/AndroidRuntime(10621): at com.xyz.game.SimpleGame.onCreate(SimpleGame.java:22) ...
我在找两样东西:
1)一种可靠的方法来查看某个类/jar/任何东西是否打包到了我的apk中,因为在我的应用程序中达到这一点的步骤现在既长又复杂
2)主应用程序或库项目的清单或pom.xml中似乎缺少一些东西-需要向Maven发出信号以选择另一个项目的东西-是什么?
我使用的是Maven 3.0.4和3.0.0-alpha-13的插件,是为8级以上构建的。
发布于 2012-03-30 05:37:42
1)查看某个类/jar/任何东西是否打包到我的apk中的可靠方法,因为在我的应用程序中达到这一点的步骤现在很长很复杂
从命令行构建项目(即mvn全新安装),maven将在构建的每个单独阶段/目标中输出详细的日志,在dex目标中,您可以看到类似以下内容:
插件信息-android-maven-
:3.1.1:dex (default-dex) @ myproject
C:\maven\repository\cocos2d_android\cocos2d_android\1.0.0-SNAPSHOT\cocos2d_android-1.0.0-SNAPSHOT.apklib,C:\ Files\Android\android-sdk-r16\platform-tools\lib\dx.jar,\myproject\-Xmx1024M\ -jar,INFO:\Program Files\Java\jdk1.6.0_21\jre\bin\java -Xmx1024M,-jar,C:\Program am workspace --dex,INFO C:\Program Files\Java\jdk1.6.0_21\jre\bin\java-Xmx1024M,-jar,INFO:\Program workspace\myproject\target\classesC:\maven\repository\com\google\code\gson\gson\1.7.1\gson-1.7.1.jar,...
Android库项目实际上被索引为cocos2d_android-1.0.0-SNAPSHOT.apklib和其他一些常规的jar库归档。
2)主应用程序或库项目的清单或pom.xml中似乎缺少一些东西-需要向Maven发出信号以选择另一个项目-它是什么?
它就是ApkLib,它是Android Library Project (src/,res/,AndroidManifest.xml等)的压缩文件。我们通常创建/实现我们自己的Android库项目,依赖的Android项目是多模块的maven项目,但如果您需要参考其他开发人员编写的Android库项目,则不需要这样做。感谢开发人员,android-maven-plugin已经支持了非Maven Android库项目,请查看Compatible with non-Maven Android Library Projects
生成的.apklib文件将具有标准Android/Eclipse库项目的布局。这意味着无论您的Maven布局如何,.apklib文件中的布局将是源代码在"src/“而不是"src/main/java/”中,但在Android/Maven应用程序项目中使用时仍然可以正确解释。这是为了与非Maven开发人员的库项目兼容,这对于扩大Android开发人员社区非常重要。
使用其他非Maven开发人员的库
这也意味着我们可以获取任何外部Android库项目的zip文件(来自非Maven开发人员)并执行mvn install:install-file ...并简单地将其用作依赖项。
与非Maven开发人员共享您的.apklib
要与非Maven开发人员共享您的.apklib文件,如果将其重命名为.zip,他们可能会觉得更舒服。然后,他们可以简单地将其解压到一个目录中,并从那里使用它。
因此,解决方法是:
正确地将您的Android库项目打包到压缩包中,然后将其重命名为
使用mvn install:install-file.将
cocos2d_android cocos2d_android 1.0.0-快照apklib
在android-maven-plugin网站上查看Samples,看看如何正确使用apklib。
发布于 2012-03-30 03:44:15
作用域不应为provided。提供的方法:
提供了
--这与编译非常相似,但它表明您希望JDK或容器在运行时提供它。它只在编译和测试类路径上可用,并且是不可传递的。
请改用compile。
额外提示:由于compile是缺省值,因此可以删除<scope>provided</scope>行。
https://stackoverflow.com/questions/9931039
复制相似问题