【问题标题】:Android App Engine Module cannot find AppCompat LibraryAndroid App Engine 模块找不到 AppCompat 库
【发布时间】:2016-12-12 14:20:54
【问题描述】:

我最近在学习本教程时向我的应用添加了一个 App Engine 模块:

https://cloud.google.com/appengine/docs/java/endpoints/helloendpoints-android-studio

我的 EndpointsAsyncTask(在 App Engine 模块内)如下所示:

import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.extensions.android.json.AndroidJsonFactory;
import     com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
import com.google.api.client.googleapis.services.GoogleClientRequestInitializer;
import com.google.appengine.repackaged.com.google.common.base.Pair;

import java.io.IOException;

import javax.naming.Context;


class EndpointsAsyncTask extends AsyncTask<Pair<Context, String>, Void,  String> {
    private static MyApi myApiService = null;
    private Context context;

    @Override
    protected String doInBackground(Pair<Context, String>... params) {
        if(myApiService == null) {  // Only do this once
            MyApi.Builder builder = new     MyApi.Builder(AndroidHttp.newCompatibleTransport(),
                new AndroidJsonFactory(), null)
                // options for running against local devappserver
                // - 10.0.2.2 is localhost's IP address in Android emulator
                // - turn off compression when running against local devappserver
                .setRootUrl("http://10.0.2.2:8080/_ah/api/")
                .setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
                    @Override
                    public void initialize(AbstractGoogleClientRequest<?> abstractGoogleClientRequest) throws IOException {
                        abstractGoogleClientRequest.setDisableGZipContent(true);
                    }
                });
        // end options for devappserver

        myApiService = builder.build();
    }

    context = params[0].first;
    String name = params[0].second;

    try {
        return myApiService.sayHi(name).execute().getData();
    } catch (IOException e) {
        return e.getMessage();
    }
}

@Override
protected void onPostExecute(String result) {
    Toast.makeText(context, result, Toast.LENGTH_LONG).show();
}

}

我收到 AsyncTask、.build()、.sayHi() 和 Toast 的“无法解析符号/方法”错误,仅举几例。

我开始试图找出问题所在,并意识到这些 pats 的导入不存在。所以,我并列添加:

import android.os.Bundle;

然后从那里继续。但不幸的是,这些也给了我错误。

所以,我查看了我的 build.gradle 文件,发现 AppCompat 依赖项不存在。

应用引擎模块的 build.gradle 如下所示:

// If you would like more information on the gradle-appengine-plugin please refer to the github page
// https://github.com/GoogleCloudPlatform/gradle-appengine-plugin

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.google.appengine:gradle-appengine-plugin:1.9.34'
    }
}

repositories {
    jcenter()
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'

sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.0.1'
    compile 'com.google.appengine:appengine-endpoints:1.9.34'
    compile 'com.google.appengine:appengine-endpoints-deps:1.9.34'
    compile 'javax.servlet:servlet-api:2.5'
    compile 'com.google.http-client:google-http-client-android:1.20.0'
    compile 'com.google.api-client:google-api-client:1.20.0'
    appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.34'

    }

appengine {
    downloadSdk = true
    appcfg {
        oauth2 = true
    }
    endpoints {
        getClientLibsOnBuild = true
        getDiscoveryDocsOnBuild = true
    }
}

现在,在构建我的项目时,它给出了错误:

Error:(25, 13) Failed to resolve: com.android.support:appcompat-v7:25.0.1

我是否在应用引擎模块的工作方式方面遗漏了什么,或者我的问题不是 AppCompat?在消息窗口中,它为我提供了“安装存储库并同步项目”的选项,但是当我单击它时,什么也没有发生。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 你的编译SDK版本是多少?
  • compileSdkVersion 25,buildToolsVersion "25.0.1",类路径 'com.android.tools.build:gradle:2.2.3'(项目 gradle 文件)。

标签: android google-app-engine android-studio android-studio-2.2


【解决方案1】:

好的,我想我已经找出问题所在了。我的 EndpointsAsyncTask 应该在 App 模块中,而不是在 AppEngine 模块中。如果有人可以验证这一点,我将不胜感激!

我希望这对可能对本教程感到困惑的其他人有所帮助。

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多