#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 SDKapp
проект зависит от 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, но пока это работает.