从Python项目生成Google Cloud Endpoints Android客户端类

时间:2014-03-25 19:33:15

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

我已为我正在构建的Android应用编写并测试了一个Python端点服务器端。

编码服务器端在API Explorer上完美运行。我也能够生成包含类jar文件的zip,但是当我在Eclipse或Android Studio上导入它时,我无法在我的Android项目中使用它的类。

在Eclipse上,在Android私有库下,我可以看到模型模块,但没有看到它的类。主API类也缺失。

在Android Studio上,当我展开包含的jar文件时,我可以看到所有类,但是我无法在我的项目中使用任何类,因为它们无法解析,即使在手动导入之后也是如此。 AS似乎正在将JAR作为lib正确导入,因为在任何项目类上键入导入行时,自动完成工作,但它缺少所有类。

以下是我用来生成JAR文件的命令:

endpointscfg.py get_client_lib java --hostname localhost:8080 main.MyApi

我的服务类开头如下:

@endpoints.api(name='myapi', version='v1')
class MyApi(remote.Service):

我做错了什么?

另外,从java类zip文件中,我应该将libs目录中包含的所有jar文件导入到我的Android项目中吗?

提前致谢。


更多信息:

生成的jar包含一个主类,如下所示:

public class MyApi extends  com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient {

}

这个主类有以下内部类:

public class Blob {

    public Request request(java.lang.String type) throws java.io.IOException {
      Request result = new Request(type);
      initialize(result);
      return result;
    }

内部类Blob在它的请求结果对象上有以下错误:

initialize (com.google.api.client.googleapis.services.AbstractGoogleClientRequest<?>)  in MyApi cannot be applied to  (com.appspot.trim_bot.myapi.MyApi.Blob.Request)

于4月16日添加:

似乎编译的EndPoints类无法解析它们的依赖关系。

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我在做下面的工作。请注意,这可能不是最有效的方法。

  • 我的app引擎项目设置为使用ant运行,所以我使用
    生成库    $ / appengine-java-sdk / bin / endpoints.sh get-client-lib name.MessageEndpoint
       $ mkdir tmp
       $ mv name-v1-java.zip tmp /
       $ cd tmp;解压缩name-v1-java.zip; jar -xvf name_appspot_com-foo-v1.jar
       $ mv com {android工作室项目的根/ src / main / java}

  • 在android studio中编辑src / build.gradle,添加构建端点客户端库时添加的jar列表。

    编译(组:&#39; com.google.api-client&#39;,名称:&#39; google-api-client-appengine&#39;,           版本:&#39; 1.18.0-rc&#39;)
    编译(组:&#39; com.google.api-client&#39;,名称:&#39; google-api-client-gson&#39;,           版本:&#39; 1.18.0-rc&#39;)
         ....
    重建,看起来它正在运作。

  • 答案 1 :(得分:0)

    这里有一个更好的方法: How to create a library project in Android Studio and an application project that uses the library project

    我使用了第3个答案。这里的方法是在Andriod Studio中打开压缩的端点库(让它称之为library1)并构建它。构建完成后,您可以修改正在处理的项目的gradle.settings,如下所示:

    git remote add origin user@example.com:/path/to/git-repo
    

    我要添加的唯一内容是,一旦正确完成(即,您可以将library1视为您正在处理的项目的项目文件夹结构中的第二个项目),您需要转到文件&gt;项目结构,然后单击您正在处理的模块的名称。然后转到依赖项选项卡&gt;点击&#39; +&#39;然后&#39;模块依赖&#39;在下拉菜单中。然后,您应该能够将library1模块添加到当前项目中。

    希望能帮助别人!