2014-12-13 59 views
2

我正在潜入Android开发中,并尝试避免重复代码时有点挂断。使用App Engine Endpoint后端将“共享”模块添加到Android应用程序

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

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

我没有收到任何错误,直到我尝试调试后端生成失败的应用程序时: “错误:软件包[共享库名称空间]不存在”。

任何人都可以描述或指向我一个如何在应用程序和后端之间共享代码的例子吗?

感谢

+0

好问题 - 我也想在这里有一些指导。你是怎么做到的? – 2015-01-10 10:46:05

回答

0

我假设你要共享的后端服务器和客户机之间的代码,这也正是我在想的事情。这是我的解决方案。 (我假设你使用的是带有摇篮支持Android的工作室)

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

  2. 这个模块添加到客户端和后端项目

的依赖于客户端项目

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') 
} 
+0

我试了几次,在我试图编译之前,一切看起来都很棒 - 在这一点上,其中一个项目会抱怨说它找不到位于'utils'中的代码。从那时起,我已经改变了设计,因为我意识到我的方向存在一些架构缺陷。不过,我相信我将来必须再次解决这个问题,所以我会记住这个答案。 – user3777740 2015-01-11 19:59:45

+0

另外我应该注意,由于我尝试过并且遇到了问题,Android Studio已经进行了重大更新。 – user3777740 2015-01-11 20:00:27

+0

如果编译器抱怨找不到模块,最好的办法是检查项目中的settings.gradle,确保模块配置了正确的路径,特别是当你从项目目录之外的某处导入模块时。 – zhaocong 2015-01-12 05:34:47

0

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

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

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

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

相关问题