Как разделить класс запроса / ответа между Android и AWS Lambda

#java #android #aws-lambda

#java #Android #aws-lambda

Вопрос:

В приложении для Android, использующем AWS Lambda, классы запросов / ответов отображаются с обеих сторон в разных модулях одного и того же проекта. Если не использовать общий доступ, два класса будут отображаться в 2 местах:

 .
├── app
│   └── src
│       ├── main
│       │   └── java
│       │       └── com
│       │           └── myapp
│       │              ├── Request.java
│       │              └── Response.java
│       └── test
├── lambda
│   └── src
│       └── main
│           └── java
│               └── com
│                   └── myapp
│                      ├── Request.java
│                      └── Response.java
  

Первая идея совместного использования этих классов — добавить lambda модуль в качестве зависимости к app модулю, добавив следующее в app/build.gradle :

 dependencies {
    implementation project(":lambda")
  

Но это не сработает, поскольку

  • lambda проект зависит от AWK SDK
  • app проект зависит от AWS Mobile SDK

и они несовместимы друг с другом (оба предоставляют одни и те же классы в одном пакете).

Второй метод заключается в использовании символических ссылок, связывающих классы запросов / ответов, чтобы они отображались в обоих модулях (конечно, в одном пакете), что работает. Это правильный способ сделать это?

Ответ №1:

Я бы создал третью область, специально для «общего» кода. Что-то вроде:

 ├── app
│   └── src
│       ├── main
│       │   └── java
│       │       └── com
│       │           └── myapp
│       └── test
│
├── lambda
│   └── src
│       └── main
│           └── java
│               └── com
│                   └── myapp
├── common
│    └── src
│       └── main
│           └── java
│               └── com
│                   └── myapp
│                      ├── Request.java
│                      └── Response.java
  

а затем пусть общая библиотека будет зависимостью как для Android, так и для лямбда-кода.

Комментарии:

1. Спасибо, и на данный момент я использую то, что вы предложили. Я надеялся, что есть способ сделать это, не разбивая com.myapp пакет на слишком много модулей, а не создавая новый build.gradle и поддерживая его. Может быть, что-то вроде DependencyInject, но пока это работает.