I have an app-engine connected android app. The server is in java. I am testing the Login web service of the backend. Where the code calls the endpoint to send the login information, I get an exception. I am including the entire stack trace. But the root cause seems to be LoginActivity.java:262
:
我有一个应用程序引擎连接Android应用程序。服务器在java中。我正在测试后端的登录Web服务。代码调用端点发送登录信息的地方,我得到一个例外。我包括整个堆栈跟踪。但根本原因似乎是LoginActivity.java:262:
service.registerUser(request).execute();//service is endpoint
There is nothing particular about this login. It's just a POST with data. I don't know how to interpret the error line
这个登录没什么特别的。这只是一个带数据的POST。我不知道如何解释错误行
Caused by: java.lang.VerifyError: com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler
I think it's what I need to understand.
我认为这是我需要理解的。
Anyway, here is the entire trace:
无论如何,这是整个跟踪:
04-03 11:48:50.028: E/AndroidRuntime(9385): FATAL EXCEPTION: AsyncTask #1
04-03 11:48:50.028: E/AndroidRuntime(9385): java.lang.RuntimeException: An error occured while executing doInBackground()
04-03 11:48:50.028: E/AndroidRuntime(9385): at android.os.AsyncTask$3.done(AsyncTask.java:200)
04-03 11:48:50.028: E/AndroidRuntime(9385): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
04-03 11:48:50.028: E/AndroidRuntime(9385): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
04-03 11:48:50.028: E/AndroidRuntime(9385): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
04-03 11:48:50.028: E/AndroidRuntime(9385): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-03 11:48:50.028: E/AndroidRuntime(9385): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
04-03 11:48:50.028: E/AndroidRuntime(9385): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
04-03 11:48:50.028: E/AndroidRuntime(9385): at java.lang.Thread.run(Thread.java:1096)
04-03 11:48:50.028: E/AndroidRuntime(9385): Caused by: java.lang.VerifyError: com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler
04-03 11:48:50.028: E/AndroidRuntime(9385): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.initialize(GoogleAccountCredential.java:124)
04-03 11:48:50.028: E/AndroidRuntime(9385): at com.google.api.client.http.HttpRequestFactory.buildRequest(HttpRequestFactory.java:93)
04-03 11:48:50.028: E/AndroidRuntime(9385): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.buildHttpRequest(AbstractGoogleClientRequest.java:292)
04-03 11:48:50.028: E/AndroidRuntime(9385): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:412)
04-03 11:48:50.028: E/AndroidRuntime(9385): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:345)
04-03 11:48:50.028: E/AndroidRuntime(9385): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:463)
04-03 11:48:50.028: E/AndroidRuntime(9385): at com.example.learning.LoginActivity$UserLoginTask.doInBackground(LoginActivity.java:262)
04-03 11:48:50.028: E/AndroidRuntime(9385): at com.example.learning.LoginActivity$UserLoginTask.doInBackground(LoginActivity.java:1)
04-03 11:48:50.028: E/AndroidRuntime(9385): at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-03 11:48:50.028: E/AndroidRuntime(9385): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-03 11:48:50.028: E/AndroidRuntime(9385): ... 4 more
04-03 11:48:50.160: W/IInputConnectionWrapper(9385): showStatusIcon on inactive InputConnection
EDIT:
编辑:
To set up the credentials, I just follow the template:
要设置凭据,我只需按照模板操作:
public static GameApp getService(Context context) {
GoogleAccountCredential credential = GoogleAccountCredential.usingAudience(context, StateValues.AUDIENCE);
GameApp.Builder builder = new GameApp.Builder(
AndroidHttp.newCompatibleTransport(),
new GsonFactory(),
credential);
GameApp service = builder.build();
return service;
}
1 个解决方案
#1
2
It looks like the problem was the google-play-service.jar
. I had been adding it through the build path. Now I added it manually into the libs folder, and that problem went away. Thanks everyone for commenting. Upvote to all.
看起来问题是google-play-service.jar。我一直在通过构建路径添加它。现在我手动将其添加到libs文件夹中,这个问题就消失了。谢谢大家的评论。向所有人投票。
#1
2
It looks like the problem was the google-play-service.jar
. I had been adding it through the build path. Now I added it manually into the libs folder, and that problem went away. Thanks everyone for commenting. Upvote to all.
看起来问题是google-play-service.jar。我一直在通过构建路径添加它。现在我手动将其添加到libs文件夹中,这个问题就消失了。谢谢大家的评论。向所有人投票。