【问题标题】:Google Cloud Endpoints require Android SDK level 11 or moreGoogle Cloud Endpoints 要求 Android SDK 级别 11 或更高
【发布时间】:2014-10-06 20:35:16
【问题描述】:

GCP 的 Endpoints 似乎与 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)

【问题讨论】:

  • 您有解决方法吗?我也面临同样的错误。请回复。谢谢。
  • 我没有找到解决办法。我尝试了 stsandro 的回答,但我无法解决一些依赖关系,并且我的项目中的其他问题也出现了问题。我最终中断了对那些 Android 版本的支持。

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


【解决方案1】:

我在我的 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() - 方法。我会做更多的测试,但我认为这应该可行。

【讨论】:

  • 我也面临着类似的问题,但在我的项目中我没有 AndroidJsonFactory.java 文件,但我可以在 com.google.api.client.extensions.android 中找到 AndroidJsonFactory.class 文件。 json 包。我在 Registration.Builder builder = new Registration.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), null) .setRootUrl("https://project_id/_ah/api/");你能知道它为什么会来吗?同样的解决方案是什么?谢谢
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2019-06-17
    • 2018-12-18
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多