似乎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)
答案 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生成客户端,看看它是否有任何区别。