2016-11-11 64 views
4

我对Android Studio和Java非常陌生。模块与包Android Studio

我正在开发一个应用程序。这个程序将基本上遵循一个分层的架构,不同的层,例如,用户界面,数据访问层,业务层等

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

我的问题是,一个地方会把所有这些不同的层,在模块或包?

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

+0

更多信息https://developer.android.com/studio/projects/add-app-module.html – Suhaib

回答

10

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

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

但是,如果你创建一个新的项目与手机/平板电脑的应用程序,也是一个Android Wear的应用程序,你会看到两个模块; mobilewear。每个模块都包含各自应用程序的源代码,资源文件和应用程序级设置。

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

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


因此,要回答你的问题,包装为每个应用程序所在的目录src/main/java应用模块的范围内。您可以在应用程序包中放置一个单独的包来分隔应用程序架构的每个“层”。

只是一个视觉的例子,这是我的一个项目的基本结构:

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