Android错误:SDK23 v SDK19 - java.lang.NoClassDefFoundError:com.google.android.gms.R $ string

时间:2016-03-26 23:44:26

标签: java android google-play-services

我的Android应用使用Google地图,可以很好地编译SDK23和SDK19设备。它在SDK23(LG G4)上运行良好,但生成此错误SDK19设备(Samsung Galaxy 4)=> java.lang.NoClassDefFoundError:com.google.android.gms.R $串

这些是我的依赖项: Android Studio Dependencies

我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.volkerpetersen.sailingrace">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission  android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"></uses-feature>

<application
    android:name=".GlobalParameters"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".start_timerActivity"
        android:label="@string/title_activity_start_timer"
        android:parentActivityName=".MainActivity"
        android:windowSoftInputMode="stateHidden"
        android:screenOrientation="portrait">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
              android:value="com.example.volkerpetersen.sailingrace.MainActivity" />
    </activity>
    <activity
        android:name=".start_raceActivity"
        android:label="@string/title_activity_start_race"
        android:parentActivityName=".MainActivity"
        android:theme="@android:style/Theme.Holo.NoActionBar" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.volkerpetersen.sailingrace.MainActivity" />
    </activity>
    <activity
        android:name=".start_mapActivity"
        android:label="@string/title_activity_start_map"
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.volkerpetersen.sailingrace.MainActivity" />
    </activity>
    <activity
        android:name=".SailingRacePreferences"
        android:screenOrientation="portrait"
        android:label="@string/title_activity_setting"
        android:noHistory="true"
        android:parentActivityName=".MainActivity"
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.volkerpetersen.sailingrace.MainActivity" />
    </activity>

    <receiver android:name=".SailTimerAPI"></receiver>

    <!--
         The API key for Google Maps-based APIs is defined as a string resource using the <meta-data> tag
         (See the file "res/values/google_maps_api.xml").
         Note that the API key is linked to the encryption key used to sign the APK.
         You need a different API key for each encryption key, including the release key that is used to
         sign the APK for publishing.
         You can define the keys for the debug and release targets in src/debug/ and src/release/. 
    -->
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AIzaSyDzCAa-hibdRJ-NdOnIRK-IG5uN2U3kv9c" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

    <!-- original code replaced with above
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    -->

</application>

当我搜索此错误时,我无法找到解决方案/回答为什么我的应用程序在SDK23下编译/运行正常,但在SDK19下生成此运行时错误。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

请尝试清理您的项目,然后从App Gradle中删除最后两个依赖项:play-services gcm an identityities

答案 1 :(得分:0)

终于解决了这个问题。

我需要降级清单 编译'com.google.android.gms:play-services:8.4.0' 到旧版本 编译'com.google.android.gms:play-services:8.3.0'以确保与两台设备上的设备软件兼容。

该应用程序现在可在SDK19和SDK23手机上运行。感谢Mounir指出我正确的方向。非常感谢!