使Google Play服务4.0.30适用于Android Studio 0.4.2& Gradle 0.7

时间:2014-01-13 23:04:58

标签: android google-maps gradle android-studio google-play-services

似乎没有足够的解决方案可让Google Play服务使用Android Studio。我尝试了大部分。经过多次试验和大量错误后,我得出的结论是,为了使这些解决方案中的许多解决方案发挥作用,您必须拥有这些解决方案的作者的确切版本组合。这种神奇的组合似乎对任何给定解决方案的成功程度都有非常实际的影响。我相信我没有找到我正在使用的软件版本的解决方案,但是并没有排除我错过了简单/愚蠢的机会所以请温柔。

所以这是我的设置,希望有人能够看到问题: 我总是从头开始。这样我知道我没有任何遗留下来的旧版本的污泥会让我感到困惑。我正在使用Android Studio(预览版)0.4.2,gradle 0.7(每个build.gradle文件),我正在尝试使用Google Play Services 4.0.30以便我可以使用Google Maps V2。

我已打开SDK Manager并已下载每个更新并验证我已加载所有SDK工具,所有API 19都已加载(并且加载了许多较低版本,包括14,并且所有Extras已加载,包括支持存储库,支持库和Google Play服务。基本上我在过度下载方面犯了错误。

通过这种配置,我可以:

import  com.google.android.gms.*

但没有.maps或其他任何东西,所以没有GoogleMap等。

我将显示一些关键文件的内容。对不起长度,但可能有一些东西隐藏在我不希望的地方,我不想“不显示”问题。所以请耐心等待。 ...如果有人需要看到更多,请告诉我。 THX

我的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
    }
    buildTypes {
        release {
            runProguard true
            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
        }
    }
    productFlavors {
        defaultFlavor {
            proguardFile 'proguard-rules.txt'
        }
    }
}
dependencies {
    // Google Play Services
    compile 'com.google.android.gms:play-services:4.0.30'
    // Support Libraries
    compile 'com.android.support:support-v4:19.0.0'
    compile 'com.android.support:appcompat-v7:19.0.0'
    compile 'com.android.support:gridlayout-v7:19.0.0'
    compile 'com.android.support:support-v13:19.0.0'
}

我的proguard-rules.txt:

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

# Keep SafeParcelable value, needed for reflection. This is reqd to support backwards
# compatibility of some classes.
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

# Keep the names of classes/members we need for client functionality.
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

# Needed for Parcelable/SafeParcelable Creators to not get stripped
-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.klhsoftware.k4wmapp" >
    <permission
        android:name="com.klhsoftware.k4wmapp.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="com.klhsoftware.k4wmapp.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:hardwareAccelerated="true">
        <activity
            android:name="com.klhsoftware.k4wmapp.MapScreen"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider
            android:name="LocationsContentProvider"
            android:authorities="in.wptrafficanalyzer.locationmarkersqlite.locations"
            android:exported="false" />
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIza<myValue>-tsldkfjdOM" />
    </application>
</manifest>

2 个答案:

答案 0 :(得分:2)

我们一直看到新增图书馆的问题没有得到适当的回应;我认为这是bug https://code.google.com/p/android/issues/detail?id=64508,将在0.4.3中修复。与此同时,

  • 退出Android Studio
  • 备份项目
  • 删除所有.iml文件和.idea文件夹
  • 重新启动Android Studio并重新导入您的项目

这与Android Studio suddenly cannot resolve symbols

的答案相同

答案 1 :(得分:1)

我没有通过meta-data属性

看到您的清单中指定的GooglePlayServices版本
<meta-data android:name="com.google.android.gms.version"
       android:value="@integer/google_play_services_version" />

请参阅set-up guidelines