模块与包Android Studio

我是Android Studio和Java的新手。

我正在开发一个应用程序。 这个应用程序基本上遵循分层架构,具有不同的层,例如UI,数据访问层,服务层等。

我不清楚包和模块之间的区别。

我的问题是,将所有这些不同的层放在模块或包中的哪个位置?

指向@Angel 对此问题的回应,两者之间的唯一区别是\,模块通过必须导入模块的命名空间来定义更严格的规则,由谁来访问它们。

模块是项目中源代码的容器。 单个项目可以有多个模块,但每个模块都是一组独立的代码和资源。

例如,当您使用默认设置创建新项目时,Android Studio会生成一个名为app的模块。 此模块包含应用程序的所有源代码,资源文件和应用程序级设置。

但是,如果您使用手机/平板电脑应用程序以及Android Wear应用程序创建新项目,您将看到两个模块; mobilewear 。 这些模块中的每一个都包含其各自应用程序的源代码,资源文件和应用程序级别设置。

您还可以创建另一个模块以在多个模块之间共享; 该模块将被视为库模块 。

本质上是源代码所属的目录(文件夹)。 通常,这是一个唯一标识您的应用程序的目录结构; 例如com.example.app 。 然后,您可以在应用程序包中创建用于分隔代码的包; 例如com.example.app.uicom.example.app.data


因此,为了回答您的问题,每个应用程序的包位于应用程序模块的src/main/java目录中。 您可以在应用程序pacakge中放置一个单独的包来分隔应用程序体系结构的每个“层”。

仅举一个直观的例子,这是我的一个项目的基本结构:

 project |-- build.gradle |-- settings.gradle ~ |-- common // a common library module for both mobile and wear | |-- build.gradle | |-- proguard-rules.pro | +-- src | +-- main | |-- AndroidManifest.xml | |-- assets | |-- java | | +-- com | | +-- example | | +-- library // common module library package | | |-- data | | +-- util | +-- res | |-- mobile // mobile application module | |-- build.gradle | |-- proguard-rules.pro | +-- src | +-- main | |-- AndroidManifest.xml | |-- assets | |-- java | | +-- com | | +-- example | | +-- app // mobile module application package | | |-- data | | |-- ui | | +-- util | +-- res | +-- wear // wear application module |-- build.gradle |-- proguard-rules.pro +-- src +-- main |-- AndroidManifest.xml |-- assets |-- java | +-- com | +-- example | +-- app // wear module application package | |-- data | |-- ui | +-- util +-- res