【发布时间】:2014-12-09 11:28:11
【问题描述】:
也许我在这里遗漏了一些东西,但我无法在 Play Services 6.5 中使用新的 Maps only 依赖项
我得到以下异常:
java.lang.NoSuchFieldError: No static field MapAttrs of type
[I in class Lcom/google/android/gms/R$styleable; or its superclasses
(declaration of 'com.google.android.gms.R$styleable' appears in
/data/app/com.kaching.merchant.dev1-1/base.apk)
at com.google.android.gms.maps.GoogleMapOptions
.createFromAttributes(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment
.onInflate(Unknown Source)
清单:
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="my-awesome-key"/>
<uses-permission
android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Gradle 文件:
compile 'com.google.android.gms:play-services-maps:6.5.+'
compile 'com.android.support:support-v4:21.0.2'
布局:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
这是坏了还是我做错了什么?
完整的捆绑包让我超过了 dex 限制,我不想使用 multidex
【问题讨论】:
-
问题是
com.google.android.gms.R$styleable.MapAttrs,但生成的地图R文件有不同的包com.google.android.gms.maps.R$styleable.MapAttrs似乎与那些版本的“granualr取决于”错误,现在Selectively compiling APIs不可用...... -
我确实设法让它工作(apk 大小:maps+base 1,9 MB 整个 gms:2,5MB)... 步骤:1. 将地图和基本 aar 文件复制到 libs 文件夹项目 2. 在 gradle 中添加对 em 的依赖而不是原来的 3. 在 maps.aar 中修改 AndroidManifest.xml 中的包(删除:“.maps”) 4. 禁用enforceUniquePackageName(将其设置为false)......换句话说:不值得花时间......我们必须等到谷歌修复它
-
好的,所以这实际上是坏的。我很困惑,谷歌显然没有人在发布之前考虑过对其进行测试。
-
好的,我做了一个错误报告:code.google.com/p/android/issues/…
-
对于未来的读者来说,似乎只是从 xml 膨胀地图片段(或我的情况下的地图视图)会导致这个问题。如果您在代码中实例化片段(或视图),一切都很好。
标签: android google-play-services google-maps-android-api-2 android-gradle-plugin