title: Splitting project into modules
body: <p>I've been trying to split my project into modules according to its classes/packages responsibilities. I can't seem to find any conventional architecture to guide me, though.</p>
  
  <p>Basically, I have my classes segmented as follows</p>
  
  <pre><code>app (module)
  - Application
  - Activities
  - Fragments
  - Views
  - Data
  </code></pre>
  
  <p>Where the Activities and Fragments act as controllers for the Views. What I'd like to do is to split everything into something like:</p>
  
  <pre><code>app (module)
  - Application
  - Activities
  - Fragments
  dependencies {
      - ui
      - data
  }
  
  ui (module)
  - Views
  
  data (module)
  - Data
  </code></pre>
  
  <p>The problem is that both the app module and the data module, although very different, also depend on a same third-party library for the back-end server side. Also, the Activities and Fragments depend on the data module.</p>
  
  <p>What are good practices for splitting a project into separate modules? In Android/Android Studio/Gradle, is it possible to have different modules with the same dependency? Is it possible to have two modules having each other as a dependency?</p>