maven中的Android编译失败

maven中的Android编译失败,maven,compiler-errors,android,Maven,Compiler Errors,Android,我正在制作一个Android应用程序,并创建了一个自定义视图来制作一些动画。 我创建了一个自定义视图,扩展了ImageView并实现了ValueAnimator.AnimatorUpdateListener 当我试着用maven编译它时,它失败了,因为“包android.animation不存在” 然而,在Intellij Idea中构建时,它构建得很好。在Idea中构建之后,甚至可以成功运行mvn安装。 成功的构建在模拟器中运行良好,但在我的物理设备上运行不正常。 尝试在设备上启动时,我得到:

我正在制作一个Android应用程序,并创建了一个自定义视图来制作一些动画。 我创建了一个自定义视图,扩展了ImageView并实现了ValueAnimator.AnimatorUpdateListener

当我试着用maven编译它时,它失败了,因为“包android.animation不存在” 然而,在Intellij Idea中构建时,它构建得很好。在Idea中构建之后,甚至可以成功运行mvn安装。 成功的构建在模拟器中运行良好,但在我的物理设备上运行不正常。 尝试在设备上启动时,我得到:

Failed resolving Lno/derp/myapp/view/MyAnimatedView; interface 7 'Landroid/animation/ValueAnimator$AnimatorUpdateListener;'
Link of class 'Lno/derp/myapp//view/MyAnimatedView;' failed
Could not find class 'no/derp/myapp/view/MyAnimatedView', referenced from method no/derp/myapp.MainActivity.onCreate
然后

java.lang.ClassNotFoundException: no/derp/myapp.MyAnimatedView in loader dalvik.system.PathClassLoader[/data/app/no/derp/myapp-2.apk]
pom.xml:

 <packaging>apk</packaging>
 <name>My App</name>

 <dependencies>
   <dependency>
     <groupId>com.google.android</groupId>
     <artifactId>android</artifactId>
     <version>2.3.3</version>
     <scope>provided</scope>
   </dependency>
 </dependencies>

<build>
  <plugins>
    <plugin>
      <groupId>com.jayway.maven.plugins.android.generation2</groupId>
      <artifactId>android-maven-plugin</artifactId>
      <version>3.0.0</version> 
      <configuration>
        <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
        <assetsDirectory>${project.basedir}/assets</assetsDirectory>
        <resourceDirectory>${project.basedir}/resources</resourceDirectory>
      <undeployBeforeDeploy>true</undeployBeforeDeploy>
    </configuration>
    <extensions>true</extensions>
  </plugin>

  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <target>1.6</target>
        <source>1.6</source>
    </configuration>
  </plugin>
</plugins>
apk
我的应用程序
com.google.android
安卓
2.3.3
假如
com.jayway.maven.plugins.android.generation2
安卓maven插件
3.0.0 
${project.basedir}/AndroidManifest.xml
${project.basedir}/assets
${project.basedir}/resources
真的
真的
maven编译器插件
2.3.2
1.6
1.6

我使用的是SDK的最新版本。导入上述包的类不会编译,它不仅仅是视图。android maven插件的2.8.3版(或者称为maven android插件)也是如此

有什么想法吗?

从API级别11开始,您需要在pom.xml中设置依赖项,以使用3.0+在命令行中编译代码

它在Intellij中工作的原因是IDE通常使用default.properties来解析用于编译源代码的SDK,我认为您在default.properties中使用了正确的API级别


希望有帮助。

您似乎缺少平台/api级别的插件配置。例如,检查官方样品

在您的情况下,您必须添加

                <sdk>
                    <!-- platform or api level (api level 4 = platform 1.6)-->
                    <platform>4</platform>
                </sdk>

4.
使用api级别9或10或任何您需要的。看


为了使编译插件具有正确的API,您必须具有正确的android依赖项。您可能需要使用my将依赖关系推送到本地存储库中

Maven Android SDK Deployer自我获得

  <dependency>
      <groupId>android</groupId>
      <artifactId>android</artifactId>
      <version>4.0_r2</version>
      <scope>provided</scope>
  </dependency>

安卓
安卓
4.0_r2
假如
但应用程序仍然在我的手机上崩溃,和以前一样,“链接…失败”。这很自然,因为我的手机上可能有Android 2.X。
Idea编译的原因是它手动设置了Android SDK,我认为它没有使用maven插件。

。。没有任何效果。我只安装了api级别14,所以除非我将平台14放在那里,否则它会抱怨我没有安装正确的SDK。将其设置为14没有效果。但是运行Maven Android SDK Deployer确实有效果,将Android:Android:4.0_r2安装到我的存储库中。当然,如果您的手机上没有运行API 11或更高版本,则除非您使用反射,否则无法使用手机上的API。这与构建无关。