依赖=工作空间中找不到[com.google.android.gms:google-play-services:apklib:7:compile]

很抱歉只添加了另一个“
android maven google maps dependency not found”问题,但我认为我已经阅读了大部分关于它的帖子并应用了所有提议的解决方案但没有成功.

我有一个maven Android项目运行正常与谷歌地图V2依赖,没有使用maven引用,但通过在工作区和eclipse构建路径库依赖项中导入的google-play-services_lib项目.

现在我正在尝试通过pom配置google-play-services依赖,因为我正在使用Robolectric实现maven自动化测试,但我坚持在第一行pom中显示此错误,没有快速修复:

dependency=[com.google.android.gms:google-play-services:apklib:7:compile] not found in workspace

到目前为止,经过大量的谷歌搜索,我已经尝试过,并在每一步之后检查结果但没有成功:

>最初使用android-maven-sdk-helper(在these instructions之后)将google play服务组件安装到我的本地.m2存储库,并将项目pom两个依赖项添加到jar和apklib版本7,这是我本地安装的版本(如here) .在此之后,它应该工作,但依赖性错误出现.
>从eclipse构建路径中删除对库google-play-services_lib的引用(在project / preferences / Android / Libraries中).无论如何,google-play-services_lib项目仍然在工作区中.
>将apklib从我当地的m2存储库复制到工作区中的某个位置:我尝试了google-play-services_lib / bin,google-play-services_lib / libs,MyProject / libs.使用名称google-play-services-7.apklib(如在存储库文件中)和google-play-services.apklib进行测试.
>“Mavenise”工作区中包含的google-play-services_lib项目,通过运行eclipse配置/转换为Maven项目.我编辑了生成的pom以将包装类型更新为apklib:< packaging> apklib< / packaging>,并添加了android-maven-plugin< extensions> true< / extensions>为了识别apklib包类型.我用maven目标编译编译了项目,但成功,但我无法在任何地方找到生成的apklib文件.

在每次更改之后,我都会执行Maven / Update项目,清理项目,甚至重启Eclipse.没有成功:在空间错误中找不到依赖关系仍然存在.

我不知道还有什么可以尝试的.它可能是图书馆名称的东西吗?库项目名称是google.play-services_lib,带有_lib后缀,eclipse android库构建路径中引用的jar是_lib.jar,但maven工件没有_lib后缀.我也试过在组件和工件中重命名但没有成功,但我想问题可能存在.有人可以为mavenised google-play-services_lib项目发布一个示例pom.xml吗?

另一个猜测:当我mvn编译mavenised库项目时,为什么我找不到生成的.apklib文件,它在哪里?我用mvn -X编译检查了跟踪,但没有找到任何提示.

环境和版本:

Eclipse Indigo
External maven 3.0.5 (embedded Maven 3.0.3 not used)
android-maven-plugin 3.6.0
maven-eclipse-plugin 2.8
m2e-android plugin (m2eclipse android integration) 0.4.2
Android API level 13

我添加到google-play-services_lib项目的pom.xml:

<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>google-play-services_lib</groupId>
<artifactId>google-play-services_lib</artifactId>
<version>7</version>
<packaging>apklib</packaging>

<properties>
    <android-platform>13</android-platform>
    <android-emulator>13</android-emulator>
    <android-maven-plugin-version>3.6.0</android-maven-plugin-version>
    <maven-compiler-plugin-version>3.0</maven-compiler-plugin-version>
    <java-version>1.6</java-version>
    <local-sdk-path>C:\NoProgramFiles\Android\android-sdk</local-sdk-path>
</properties>

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>com.jayway.maven.plugins.android.generation2</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <version>${android-maven-plugin-version}</version>
            <configuration>
                <sdk>
                    <path>${local-sdk-path}</path>
                    <platform>${android-platform}</platform>
                </sdk>
                <emulator>
                    <avd>${android-emulator}</avd>
                </emulator>
                <deleteConflictingFiles>true</deleteConflictingFiles>
                <undeployBeforeDeploy>true</undeployBeforeDeploy>
            </configuration>
            <extensions>true</extensions>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven-compiler-plugin-version}</version>
            <configuration>
                <source>${java-version}</source>
                <target>${java-version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

最佳答案 最后问题是关于工件命名和apklib没有在apk库项目中生成.这是错的:

>库pom中的groupId和artifactId是错误的:它们必须符合错误消息中指定的名称(我应该更仔细地阅读它).

正确的价值观:

<groupId>com.google.android.gms</groupId>
<artifactId>google-play-services</artifactId>

而不是在将项目转换为maven时由eclipse生成的,这些是基于项目名称的:

<groupId>google-play-services_lib</groupId>
<artifactId>google-play-services_lib</artifactId>

>使用mvn编译不生成apklib,正确的指令是mvn包.这样,apklib文件就会在项目库的目标文件夹中生成.

所以m2e-android 0.4.2支持apklib依赖与mavenised google-play-services apklib,虽然库项目仍然必须包含在工作区中.

最后注意:在真实设备中运行maps活动时出现运行时错误:

07-08 09:42:45.170: W/dalvikvm(27953): VFY: unable to resolve virtual method 4296: Lcom/google/android/gms/maps/GoogleMap;.setMapType (I)V
07-08 09:42:45.180: E/dalvikvm(27953): Could not find class 'com.google.android.gms.maps.SupportMapFragment', referenced from method mypackage.MyMapActivity.setUpMapIfNeeded
07-08 09:42:45.180: W/dalvikvm(27953): VFY: unable to resolve check-cast 801 (Lcom/google/android/gms/maps/SupportMapFragment;) in Lmyapp/MyMapActivity;
07-08 09:42:45.180: E/dalvikvm(27953): Could not find class 'com.google.android.gms.maps.SupportMapFragment', referenced from method mypackage.MyMapActivity.onCreate
07-08 09:42:45.200: E/AndroidRuntime(27953): java.lang.RuntimeException: Unable to start activity ComponentInfo{mypackage/mypackage.MyMapActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment

似乎地图库没有包含在应用apk中.我的修复:在google-play_services_lib项目eclipse属性/ Java构建路径/订单和导出选项卡中我选中了Android私有库复选框,因此原始的谷歌地图jar安装在正在运行的设备中.

点赞