【问题标题】:Generate Google Endpoints library (JDO) with Android Studio使用 Android Studio 生成 Google Endpoints 库 (JDO)
【发布时间】:2014-10-06 14:36:28
【问题描述】:

我正在尝试从 Android Studio 生成一个基于 JDO 的端点,但没有生成该库(并且没有显示错误)。我能看到的唯一警告是下面关于注释的警告。

这是我的 gradle 日志:

:app:preBuild
:app:preDebugBuild
:app:checkDebugManifest
:app:preReleaseBuild
:head:appengineDownloadSdk
:head:compileJava
warning: Implicitly compiled files were not subject to annotation processing.
  Use -proc:none to disable annotation processing or -implicit to specify a policy for implicit compilation.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning

:head:processResources UP-TO-DATE
:head:classes
:head:appengineEndpointsGetClientLibs
API client library written to C:\Users\Juan\AndroidStudioProjects\Komi\head\build\client-libs\registration-v1-java.zip
API client library written to C:\Users\Juan\AndroidStudioProjects\Komi\head\build\client-libs\messaging-v1-java.zip
:head:appengineEndpointsExpandClientLibs

显示的两个 API 客户端库是基于 objectify 的,但第三个(基于 JDO)丢失了,似乎被跳过了。我将不胜感激,谢谢!

这是 gradle 文件(与 docs 没有区别):

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath 'com.google.appengine:gradle-appengine-plugin:1.9.9'
    }
}

repositories {
    mavenCentral();
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'

sourceCompatibility = 1.7
targetCompatibility = 1.7

dependencies {
  appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.9'
  compile 'com.google.appengine:appengine-endpoints:1.9.9'
  compile 'com.google.appengine:appengine-endpoints-deps:1.9.9'
  compile 'javax.servlet:servlet-api:2.5'
  compile 'com.googlecode.objectify:objectify:4.0b3'
  compile 'com.ganyo:gcm-server:1.0.2'
  compile 'javax.jdo:jdo-api:3.0.1'
  compile 'org.datanucleus:datanucleus-core:3.1.4'
  compile 'org.datanucleus:datanucleus-api-jdo:3.1.3'
}

appengine {
  downloadSdk = true
  appcfg {
    oauth2 = true
  }
  endpoints {
    getClientLibsOnBuild = true
    getDiscoveryDocsOnBuild = true
  }
}

【问题讨论】:

  • 增强的错误在哪里?我没有看到。
  • 好吧,也许那里没有错误,我认为这将与增强器相关,只要我能看到的唯一信息是关于注释的警告并且正在为 JDO 跳过端点库生成一。感谢您指出这一点,我正在编辑问题以删除增强错误参考。
  • 你能看看你的 web.xml 看看你是否在里面添加了你的端点吗?这就是解析端点的地方。此外,您肯定需要增强 JDO 类。为此使用 appengine->enahncer 闭包:github.com/GoogleCloudPlatform/gradle-appengine-plugin
  • 就是这样,谢谢@loosebazooka。现在我在增强我的课程时遇到了问题。我通过添加增强器 { enhanceOnBuild=true api="jdo" version="v2"} 遵循您的另一个答案,但异常“org.datanucleous 已注册”不断提高。奇怪的是,Android Studio 标记了这个增强器定义并给了我一个“无法解析符号增强器”,所以它可能没有使用正确版本的 appengine-plugin。
  • 您可能需要提供更多有关异常发生原因的信息。尝试使用 --info 标志从命令行运行 appengineEnhance 以打印日志文件的位置。日志文件应该有更多详细信息。您可能包含了不需要的依赖项,因为增强器已经为您包含了它(或者您可能包含了错误的版本?)

标签: android google-app-engine android-studio jdo google-cloud-endpoints


【解决方案1】:

我修复了一些问题以使其正常工作(感谢@loosebazooka)

1) 首先将端点添加到 web.xml

<servlet>
        <servlet-name>SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.something.else.Userendpoint, com.something.else.AnotherEndpoint</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>

2) 我的依赖项有错误(datanucleous-core 和 datanucleous-jdo-api 的版本不同。我将依赖项更改为 3.1.3 版本增强开始正常工作,Google 端点再次变得很棒.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2013-07-20
    • 2013-08-05
    • 2014-09-14
    • 1970-01-01
    相关资源
    最近更新 更多