无法在Android项目中导入Google云端点客户端库类

我很难让Google Cloud Endpoints正常工作。 我有一个在GAE上运行的Python端点项目,它可以完美的使用API​​浏览器。 不过,我正在努力正确生成客户端库,并在我的Android应用程序中使用它。 我尝试了一些示例项目,每次都遇到相同的问题。 我无法从客户端库导入和使用模型类。

这就是我正在做的(对于这个例子,我将使用https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-python中的helloworld api python示例)

  1. 解压缩示例代码
  2. 通过导航到文件夹并运行生成客户端库

    <gae-sdk>\endpointscfg.py get_client_lib java helloworld_api.HelloWorldApi 
  3. 将生成的文件夹解压缩并复制到eclipse中的项目的根目录下

  4. 在Eclipse中添加“your_app_id_appspot_com-helloworld-v1-20140310110152-java-1.17.0-rc-sources.jar”来构buildpath(右键单击JAR> Build Path> Add to Build Path)

在这个阶段,我可以导入com.appspot.your_app_id.helloworld.model.*但是我不能导入com.appspot.your_app_id.helloworld.model.Greeting

任何人都可以在这里发生什么事情吗? 我尝试了许多不同的方法来使这个工作,但每次都有同样的问题。

非常感谢,

汤姆

Solutions Collecting From Web of "无法在Android项目中导入Google云端点客户端库类"

问题是,默认情况下,生成的zip文件只包含一个源代码jar文件,而不是您的Android应用程序可以使用的实际编译的库jar文件。

这是解决scheme:

  1. 在您的后端api文件夹(来自您的app.yaml所在的同一地点)中,生成客户端库作为gradle库,如下所示:
    <gae-sdk-path>\endpointscfg.py get_client_lib java -bs gradle helloworld_api.HelloWorldApi

  2. 你现在有一个helloworld-v1.zip。 解压缩(在这里或者在〜/ temp这样的方便的地方)

  3. 这将创build一个名为helloworld的文件夹,该文件夹中应该有一个build.gradle和一个src文件夹。

  4. 在这个文件夹中使用“gradle install”构build您的客户端库。

  5. build/libs/helloworld-v1-1.XX-SNAPSHOT.jar复制到你的Android应用程序的libs文件夹中。

  6. 将其作为Android Studio中的库添加,方法是右键单击/ add-as-library。

  7. 你的课程现在应该正确解决。

第4步应该将刚build立的客户端库安装到您的本地Maven仓库。 您可以按照helloworld /文件夹中的readme.html中的说明直接与Android应用程序的gradle构build系统集成,而不是复制手动构build的jar。

这篇文章说, 在尝试configurationGoogle Apps Endpoint客户端库时,如果点击“添加为库” ,Android Studio的添加为库存在一个错误: Android Studio:IncorrectOperationException

不知道它是否适用于Eclipse。

我能解决这个问题,并提供了下面的解决scheme。

我从Eclipse切换到Android Studio Preview 0.4.6,帮助摆脱了一些Google的库导入问题(通过我猜测build.gradleconfiguration)。 我觉得这不是我以前使用的Eclipse的问题。

我能够解决import问题。 官方Google文档中教程片段上的代码需要同步。

解决scheme是大致做下列改变:

MainActivity.java中 ,replace:

 HelloGreeting with HelloworldApiGreeting 

MainActivity.java中 ,在顶部添加以下内容:

 import android.widget.Toast; import android.os.AsyncTask; import android.util.Log import com.appspot.androidbackend1.helloworld.model.HelloworldApiGreeting; import com.appspot.androidbackend1.helloworld.model.HelloworldApiGreetingCollection; 

MainActivity.java中 ,在顶部注释如下:

 import com.appspot.androidbackend1.helloworld.Helloworld.Greetings.Multiply; import com.appspot.androidbackend1.helloworld.model.HelloGreeting; 

Application.java中 ,在顶部添加以下内容:

 import com.appspot.androidbackend1.helloworld.model.HelloworldApiGreeting; 

Application.java中 ,replace:

 HelloGreeting with HelloworldApiGreeting 

希望这为他人节省了时间