Google Cloud Endpoints需要Android SDK等级11或更高版本

时间:2014-10-06 20:35:16

标签: java android google-app-engine google-cloud-endpoints

似乎GCP的端点与Honeycomb以下的任何东西不兼容,有没有办法让它们向后兼容?

关于我在logcat中收到的错误:

10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ java.lang.IllegalArgumentException: running on Android SDK level 10 but requires minimum 11
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:119)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:69)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at com.google.api.client.extensions.android.AndroidUtils.checkMinimumSdkLevel(AndroidUtils.java:48)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at com.google.api.client.extensions.android.json.AndroidJsonFactory.<init>(AndroidJsonFactory.java:75)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at {package}.fragment.StartFragment$RegistrationLoader.loadInBackground(StartFragment.java:144)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at {package}.fragment.StartFragment$RegistrationLoader.loadInBackground(StartFragment.java:120)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at android.support.v4.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:242)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:51)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:40)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at android.support.v4.content.ModernAsyncTask$2.call(ModernAsyncTask.java:123)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
10-06 15:21:33.950    2330-2358/{package} W/System.err﹕ at java.lang.Thread.run(Thread.java:1019)

2 个答案:

答案 0 :(得分:5)

我在我的Android应用程序上得到完全相同的错误。所以我看了AndroidJsonFactory类,这里是:

@TargetApi(11)
@Beta
public class AndroidJsonFactory extends JsonFactory {

public AndroidJsonFactory() {
    AndroidUtils.checkMinimumSdkLevel(11);
}

这来自:

compile('com.google.http-client:google-http-client-android:1.18.0-rc') {
        exclude(group: 'com.google.android', module: 'android')
}

在你的gradle构建文件中。

这似乎对我有用。

添加

compile 'com.google.http-client:google-http-client-gson:1.19.0' exclude module: 'httpclient'

到您的gradle构建文件以及以下代码:

/**
 * Class instance of the JSON factory.
 */
public static final JsonFactory getJsonFactory() {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        // only for honeycomb and newer versions
        return new AndroidJsonFactory();
    } else {
        return new GsonFactory();
    }
}

然后在构建后端服务处理程序的任何地方使用getJsonFactory()方法。我会做一些测试,但我认为这应该有用。

答案 1 :(得分:0)

根据GCP Java tutorial,您可以使用API​​ 9:Android 2.3(Gingerbread)为最低要求的SDK创建端点。这意味着它应该至少支持姜饼设备。这可能是生成客户端的问题或GCP Java文档中的不一致。我使用Maven Plugin for Eclipse生成了客户端。我将尝试使用Android Studio生成客户端,看看它是否有任何区别。