2013-02-27 79 views
3

我是新来的Android编程,我试图执行一个应用程序,发送图像到服务器,它会给出结果。出于这个原因,我正在关注App Engine Connected Android上的谷歌教程2。 运行应用程序的电话端时出现问题,因为仿真程序无法启动,如果我尝试使用真实设备,则说“端点注册失败”,结果的屏幕截图位于链接中1App Engine已连接Android项目:终端服务器失败

我已经将LOCAL_ANDROID_RUN设置为true,并且还插入了相应的项目编号和api_keys。 我不知道什么是错,控制台和logcat的输出如下:

RUN -AppEngine 控制台:

feb. 27, 2013 11:36:51 AM com.google.apphosting.utils.config.EarHelper logNotAnEar 
INFO: Directory '/Users/JL/Documents/workspace/p27_2-AppEngine/war' is not an EAR directory. File /Users/JL/Documents/workspace/p27_2-AppEngine/war/appengine-application.xmlappengine-application.xml not detected. 
feb. 27, 2013 11:36:51 AM com.google.apphosting.utils.config.EarHelper logNotAnEar 
INFO: Directory '/Users/JL/Documents/workspace/p27_2-AppEngine/war' is not an EAR directory. File /Users/JL/Documents/workspace/p27_2-AppEngine/war/appengine-application.xmlappengine-application.xml not detected. 
feb. 27, 2013 11:36:51 AM com.google.apphosting.utils.config.EarHelper logNotAnEar 
INFO: Directory '/Users/JL/Documents/workspace/p27_2-AppEngine/war' is not an EAR directory. File /Users/JL/Documents/workspace/p27_2-AppEngine/war/appengine-application.xmlappengine-application.xml not detected. 
feb. 27, 2013 11:36:51 AM com.google.apphosting.utils.config.EarHelper logNotAnEar 
INFO: Directory '/Users/JL/Documents/workspace/p27_2-AppEngine/war' is not an EAR directory. File /Users/JL/Documents/workspace/p27_2-AppEngine/war/appengine-application.xmlappengine-application.xml not detected. 
feb. 27, 2013 11:36:51 AM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml 
INFO: Successfully processed /Users/JL/Documents/workspace/p27_2-AppEngine/war/WEB-INF/appengine-web.xml 
feb. 27, 2013 11:36:51 AM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml 
INFO: Successfully processed /Users/JL/Documents/workspace/p27_2-AppEngine/war/WEB-INF/web.xml 
feb. 27, 2013 11:36:51 AM com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties 
INFO: Overwriting system property key 'java.util.logging.config.file', value '/Applications/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.7.5/appengine-java-sdk-1.7.5/config/sdk/logging.properties' with value 'WEB-INF/logging.properties' from '/Users/JL/Documents/workspace/p27_2-AppEngine/war/WEB-INF/appengine-web.xml' 
java.net.BindException: Address already in use 
    at sun.nio.ch.Net.bind0(Native Method) 
    at sun.nio.ch.Net.bind(Net.java:344) 
    at sun.nio.ch.Net.bind(Net.java:336) 
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:199) 
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) 
    at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216) 
    at com.google.appengine.tools.development.JettyContainerService.connectContainer(JettyContainerService.java:189) 
    at com.google.appengine.tools.development.AbstractContainerService.createConnection(AbstractContainerService.java:243) 
    at com.google.appengine.tools.development.AbstractServer.createConnection(AbstractServer.java:71) 
    at com.google.appengine.tools.development.DevAppServerImpl$Servers.createConnections(DevAppServerImpl.java:445) 
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:181) 
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:333) 
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48) 
    at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:269) 
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:245) 

RUN手机端,真实设备 控制台:

[2013-02-27 11:31:53 - p27_2] ------------------------------ 
[2013-02-27 11:31:53 - p27_2] Android Launch! 
[2013-02-27 11:31:53 - p27_2] adb is running normally. 
[2013-02-27 11:31:53 - p27_2] Performing com.p27_2.MainActivity activity launch 
[2013-02-27 11:31:56 - p27_2] Application already deployed. No need to reinstall. 
[2013-02-27 11:31:56 - p27_2] Starting activity com.p27_2.MainActivity on device 31315808870300EC 
[2013-02-27 11:31:56 - p27_2] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.p27_2/.MainActivity } 
[2013-02-27 11:31:56 - p27_2] ActivityManager: Warning: Activity not started, its current task has been brought to the front 
[2013-02-27 11:35:21 - p27_2] ------------------------------ 
[2013-02-27 11:35:21 - p27_2] Android Launch! 
[2013-02-27 11:35:21 - p27_2] adb is running normally. 
[2013-02-27 11:35:21 - p27_2] Performing com.p27_2.MainActivity activity launch 
[2013-02-27 11:35:24 - p27_2] Application already deployed. No need to reinstall. 
[2013-02-27 11:35:24 - p27_2] Starting activity com.p27_2.MainActivity on device 31315808870300EC 
[2013-02-27 11:35:24 - p27_2] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.p27_2/.MainActivity } 
[2013-02-27 11:35:24 - p27_2] ActivityManager: Warning: Activity not started, its current task has been brought to the front 
[2013-02-27 11:37:06 - p27_2] ------------------------------ 
[2013-02-27 11:37:06 - p27_2] Android Launch! 
[2013-02-27 11:37:06 - p27_2] adb is running normally. 
[2013-02-27 11:37:06 - p27_2] Performing com.p27_2.MainActivity activity launch 
[2013-02-27 11:37:09 - p27_2] Application already deployed. No need to reinstall. 
[2013-02-27 11:37:09 - p27_2] Starting activity com.p27_2.MainActivity on device 31315808870300EC 
[2013-02-27 11:37:10 - p27_2] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.p27_2/.MainActivity } 
[2013-02-27 11:37:10 - p27_2] ActivityManager: Warning: Activity not started, its current task has been brought to the front 

的logcat:

02-27 11:36:58.968: D/GCMRegistrar(1684): resetting backoff for com.p27_2 
02-27 11:36:58.968: V/GCMRegistrar(1684): Registering app com.p27_2 of senders 658829472559 
02-27 11:36:59.296: V/GCMBroadcastReceiver(1684): onReceive: com.google.android.c2dm.intent.REGISTRATION 
02-27 11:36:59.296: V/GCMBroadcastReceiver(1684): GCM IntentService class: com.p27_2.GCMIntentService 
02-27 11:36:59.296: V/GCMBaseIntentService(1684): Acquiring wakelock 
02-27 11:36:59.316: W/AbstractGoogleClient(1684): Application name is not set. Call Builder#setApplicationName. 
02-27 11:36:59.328: D/GCMBaseIntentService(1684): handleRegistration: registrationId = APA91bEN9AXnKP8jsVmt3fNj1ziAegl04m4laECFqkzFxbuk2dfdvK3ePCVH_3JOjKehC0EpPgkkIp8t-OJtxTe_E12lw9atzEcHVpsyr_Qdi4UYxQgsW2w3uZQRnbj8Aho_IUjAWKub, error = null, unregistered = null 
02-27 11:36:59.328: D/GCMRegistrar(1684): resetting backoff for com.p27_2 
02-27 11:36:59.335: V/GCMRegistrar(1684): Saving regId on app version 1 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684): Exception received when attempting to register with server at http://10.0.2.2:8888/_ah/api/ 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684): java.net.SocketTimeoutException: failed to connect to /10.0.2.2 (port 8888) after 20000ms 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.io.IoBridge.connectErrno(IoBridge.java:159) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.io.IoBridge.connect(IoBridge.java:112) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at java.net.Socket.connect(Socket.java:842) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpEngine.connect(HttpEngine.java:310) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:80) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1009) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:407) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:340) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:458) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at com.p27_2.GCMIntentService.onRegistered(GCMIntentService.java:169) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at com.google.android.gcm.GCMBaseIntentService.handleRegistration(GCMBaseIntentService.java:251) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:153) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at android.os.Looper.loop(Looper.java:137) 
02-27 11:37:39.511: E/com.p27_2.GCMIntentService(1684):  at android.os.HandlerThread.run(HandlerThread.java:60) 
02-27 11:37:39.523: V/GCMBaseIntentService(1684): Releasing wakelock 
02-27 11:37:39.562: D/dalvikvm(1684): GC_CONCURRENT freed 134K, 7% free 8586K/9159K, paused 18ms+7ms, total 70ms 

非常感谢你。

+0

部署到CloudEndPints.java变量后显示的网址似乎你的服务器运行的不是....重新启动服务器 – Ajit 2013-02-27 11:53:31

+0

@Ajit喜后试试,非常感谢你回答。 我重新启动了eclipse并运行了多次服务器代码,但结果是一样的。 现在我发现了这个[post] [1],但是答案提供的链接不适用于我(当然,从Google API控制台更改项目号的'YOUR-APP-ID') 。 [1]:http://stackoverflow.com/questions/15047744/gae-cloud-endpoints-api-not-updating-after-deploy – 2013-02-27 16:39:16

回答

0

您的错误java.net.BindException: Address already in use表示本地AppEngine实例未正确启动。通常,当我尝试启动本地GAE实例时,如果另一个GAE实例已将其自己绑定到端口(即,我启动了两次),则会看到此错误,但在这种情况下,您的Android应用程序应与第一个实例进行通信并仍然功能。

您的问题是不同的 - 由于某种原因,您的初始 GAE实例不能绑定自己到端口(我们知道这是因为Android应用程序找不到任何本地GAE实例)。我想尝试以下,顺序,直到它的工作原理:

  1. 确保您的GAE运行配置设置绑定到8888端口(如果该端口设置在1024或以下时,OS可能会拒绝尝试绑定)。
  2. 假设您使用Eclipse,请将GAE运行配置更改为“自动选择未使用的端口”并查看它是否启动正常。如果确实如此,请将此端口用于您的GAE运行配置和Android应用中。如果这能解决这个问题,并且你很好奇,那么你可能想知道什么已经绑定到了8888端口。
  3. 找到一个绝对不绑定任何东西的端口(大于1024),并在GAE运行配置中尝试。
  4. 如果你到了这一点,你将无法绑定到任何端口,这很奇怪。回写,如果涉及到这个=)
0

我有同样的问题:与eclipse的android应用引擎连接项目,注册与云端点服务器成功的仿真程序与localhost后端,并在设备上运行时失败与应用引擎部署后端。在我的设备上清除缓存3个小时并搜索答案后,我做了以下这些工作,现在在设备上注册云终端成功,我可以将GCM发送到我的设备。

  1. 在客户端项目>的android工具>添加支持 库右键
  2. 右击服务器端项目>谷歌>生成云终端客户端库
  3. 删除手机中的应用程序,并清除手机缓存(Galaxy Nexus专用果冻豆:设置>存储>自来水缓存数据)
  4. 确保服务器是不是在你的本地主机上运行目前
  5. 从您的计算机重新安装应用程序,因为你刚刚更新了支持库

希望有帮助!

3
  1. 确保恒定的LOCAL_ANDROID_RUN设置在CloudEndPointUtils类错误的,这意味着我们的服务器没有本地设置。
  2. 右键单击项目 - >谷歌 - >部署到应用程序引擎,将-AppEngine项目部署到谷歌appEngine。
  3. 添加为LOCAL_APP_ENGINE_SERVER_URL