我无法使Google Cloud Endpoints正常运行。我有一个在GAE上运行的Python端点项目,它使用api explorer完美运行。但是我正在努力正确生成客户端库并在我的Android应用程序中使用它。我尝试了很多样本项目,每次都遇到同样的问题;我无法从客户端库中导入和使用模型类。
这就是我正在做的事情(对于这个例子,我将在https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-python使用helloworld api python示例)
通过导航到文件夹并运行
来生成客户端库<gae-sdk>\endpointscfg.py get_client_lib java helloworld_api.HelloWorldApi
解压缩生成的文件夹并将其复制到eclipse中的项目根目录
在Eclipse中添加“your_app_id_appspot_com-helloworld-v1-20140310110152-java-1.17.0-rc-sources.jar”来构建路径(右键单击JAR&gt;构建路径&gt;添加到构建路径)
在此阶段,我可以导入com.appspot.your_app_id.helloworld.model.*
但我无法导入com.appspot.your_app_id.helloworld.model.Greeting
任何人都可以了解这里发生的事情吗?我已尝试了许多不同的方法来使其工作,但每次都有同样的问题。
非常感谢,
汤姆
答案 0 :(得分:4)
问题在于,默认情况下,生成的zip文件只包含一个源jar,而不是Android应用可以使用的实际编译库jar。
以下是解决方案:
在您的后端api文件夹中(来自app.yaml所在的同一位置),将客户端库生成为gradle库,如下所示:
<gae-sdk-path>\endpointscfg.py get_client_lib java -bs gradle helloworld_api.HelloWorldApi
您现在将拥有helloworld-v1.zip。解压缩(在这里或在某个方便的地方,如〜/ temp)
这将创建一个名为helloworld的文件夹,其中应该在其中包含一个build.gradle以及一个src文件夹。
使用此文件夹中的“gradle install”构建客户端库。
将build/libs/helloworld-v1-1.X.X-SNAPSHOT.jar
复制到Android应用的libs文件夹中。
右键单击/ add-as-library,将其添加为Android Studio中的库。
您的课程现在应该正确解析。
步骤4应该将刚构建的客户端库安装到本地maven存储库中。您可以按照解压缩后的helloworld /文件夹中的readme.html中的说明直接与Android应用程序的gradle构建系统集成,而不是手动复制您构建的jar。
答案 1 :(得分:0)
这篇帖子说Android Studio的添加为库存在错误:Android Studio: IncorrectOperationException when 'Add as Library' is clicked whilst trying to configure Google Apps Endpoints client libraries
不确定它是否适用于Eclipse。
答案 2 :(得分:0)
我能够解决这个问题并提供了以下解决方案。
我从Eclipse切换到Android Studio Preview 0.4.6,这有助于摆脱一些Googles库导入问题(通过我猜build.gradle config)。我觉得这不是我之前使用过的Eclipse问题。
我能够解决导入问题。需要将官方Google文档上的教程段上的代码同步。
解决方案是大致进行以下更改:
在 MainActivity.java 中,替换:
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 中,替换:
HelloGreeting with HelloworldApiGreeting
希望这为其他人节省时间