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