使用App Engine Endpoint后端向Android应用添加“共享”模块

时间:2014-12-13 00:19:03

标签: android google-app-engine android-studio

我正在深入研究Android开发并试图避免重复代码而陷入困境。

我正在使用Android Studio,并且项目包含两个模块 - 应用程序本身和GAE端点后端。

我希望能够在两个模块之间发送对象,因此我采用的方法是创建一个“共享”模块,并在应用程序和后端模块中添加一个依赖项。在这个模块中,我放置了我的共享类,当我需要来回发送它时,我正在使用GSON。

在尝试调试应用程序之前,我没有收到任何错误,后端构建失败的地方是: “错误:包[shared lib namespace]不存在”。

有人能描述或指出如何在应用和后端之间共享代码的示例吗?

由于

2 个答案:

答案 0 :(得分:0)

我假设您想要在服务器后端和客户端之间共享代码,而这正是我想要做的。这是我的解决方案。 (我假设您使用的是带有Gradle支持的Android工作室)

  1. 创建一个新模块(文件 - >新模块),选择类型Java模块并将项目命名为您喜欢的任何内容。就我而言,我将其命名为utils

  2. 将此模块添加到客户端和后端项目的依赖项

  3. 用于客户项目

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile project(path: ':backend', configuration: 'android-endpoints')
        compile 'com.android.support:appcompat-v7:21.0.3'
        compile 'com.google.android.gms:play-services:6.5.87'
        compile 'com.android.support:support-v4:21.0.3'
        compile project(':utils')
    }
    

    用于后端项目

    dependencies {
        appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.14'
        compile 'com.google.appengine:appengine-endpoints:1.9.14'
        compile 'com.google.appengine:appengine-endpoints-deps:1.9.14'
        compile 'javax.servlet:servlet-api:2.5'
        compile 'com.googlecode.objectify:objectify:5.1.3'
        compile project(':utils')
    }
    

答案 1 :(得分:0)

我认为最简单的方法是共享源代码。这是因为我通常共享自然属于现有项目之一的代码。

要共享源代码,请在build.gradle中添加以下内容。

sourceSets {
    main.java.srcDirs += '../module2/shared'
}

注意:对于Android模块,上面应该在android {}方法中。