物理设备测试和google-app-engine后端

时间:2014-09-16 19:29:10

标签: java android google-app-engine

我跟随this tutorial尝试使用Google app-engine上的后端制作一个andorid应用。 我想测试我的应用与GAE Api 本地之间的连接,所以我尝试在 Nexus 5 手机上执行以下代码(没有效仿。)

MainActivity.java

public class MainActivity extends FragmentActivity {

    private final String DEBUG_TAG = "MainActivity";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    /**
     * AsyncTask for calling Mobile Assistant API for checking into a place (e.g., a store)
     */
    private class CheckInTask extends AsyncTask<Void, Void, Void> {
        /**
         * Calls appropriate CloudEndpoint to indicate that user checked into a place.
         *
         * @param params the place where the user is checking in.
         */
        @Override
        protected Void doInBackground(Void... params) {
            CheckIn checkin = new CheckIn();
            // Set the ID of the store where the user is.
            // This would be replaced by the actual ID in the final version of the code.
            checkin.setPlaceId("StoreNo123");
            Checkinendpoint.Builder builder = new Checkinendpoint.Builder(
                    AndroidHttp.newCompatibleTransport(), new JacksonFactory(),
                    null);
            builder = CloudEndpointUtils.updateBuilder(builder);
            Checkinendpoint endpoint = builder.build();
            try {
                endpoint.insertCheckIn(checkin).execute();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
    }
}

我明白了

And I get this

我应该在哪里

Where I shouldget this

日志显示: java.net.SocketTimeoutException:20000ms后无法连接到/10.0.2.2(端口8888)

&#34;实体种类没有CheckIn可用&#34;列表

  • 我已经在当地推出了引擎:INFOS: Dev App Server is now running
  • 我将CloudEndPointUtils.java设置为:LOCAL_ANDROID_RUN = true; LOCAL_APP_ENGINE_SERVER_URL = "http://localhost:8888/";LOCAL_APP_ENGINE_SERVER_URL_FOR_ANDROID = "http://10.0.2.2:8888";

我觉得这样,因为我使用物理设备进行调试......

您如何看待以及如何使其发挥作用?

(我无法弄清楚如何在我的计算机上运行android的模拟器,以便有另一种解决方案可能会很棒)

编辑:我已尝试部署应用,但我遇到了同样的日志错误问题。

1 个答案:

答案 0 :(得分:0)

这是因为10.0.2.2是使用模拟器时localhost的地址。如果要在设备上尝试并且所有计算机和设备都连接到本地网络,请尝试将服务器地址更改为http:// local-network-ip 端口< / STRONG> / _啊/ API。启动appengine应用程序时,将主机地址设置为0.0.0.0,以使其可供网络上的其他计算机访问。