Maybe I am missing something here, but I am not able to use the new Maps only dependency in Play Services 6.5
I get the following exception:
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)
Manifest:
<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 file:
compile 'com.google.android.gms:play-services-maps:6.5.+'
compile 'com.android.support:support-v4:21.0.2'
Layout:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Is this broken or am I doing something wrong?
The full bundle pushes me over the dex limit and I would prefer not to use multidex
I found a "hacky" fix to make it work with your app until Google decides to fix this :
Add this to your
app
gradle script:Interim solution
replace the xml map fragment with a FrameLayout container
Create the fragment in code and replace the container
Please note that the above was done in 'onCreate' in an activity without any other fragments, so make sure you adapt the transaction to your lifecycle and logic.
I think you have layout in both library and module with same name or inflating multiple xml layout with duplicate resource id.
Find map_attrs in play-services-lib and replace with this code:
Finally I found out the cause. If you are on a habit of kidnapping the aar files for your own Eclipse benefit (I'm not gonna teach here how because it's not the Android Studio way), you need to move the maps_attrs.xml file on the play-services-base res/values folder. This will align the attributes and the generated R.class file on the class path the maps library is expecting.
Updating your Google Repository to version
15
via the SDK Manager should resolve the issues and eliminate the needs for the workarounds. A project clean is required.This is also mentioned in issue 7432.