title: Android library: Class file not found when "implementation project" is used for module dependency of a library
body: <p>I'm working in a project that has 3 modules as shown below:</p>
  
  <pre><code>Project
  |
  |-- Common 
  |
  |-- SDK
  |
  |-- App
  </code></pre>
  
  <p><code>Common</code> is an Android library module that all the other modules depend on but I do not have to publish it anywhere because it contains only common code for the other modules. On the other hand <code>SDK</code> is another Android library project which has to be published on our internal artifactory. </p>
  
  <p><code>App</code> is a sample project of the SDK. I'm able to publish the <code>SDK</code> artifact with no problems but when I import it in a client application the compilation fails because none of the classes from the <code>Common</code> module are found.</p>
  
  <p>For the third party dependencies that the SDK module depends on I use <code>implementation</code> (e.g. <code>implementation 'com.squareup.okhttp3:okhttp:3.11.0'</code> and all those dependencies are successfully added to the <code>SDK</code> POM file) and for the dependency on the <code>Common</code> module I use <code>implementation project(path: ':Common')</code>.</p>
  
  <p>In the client application that imports the <code>SDK</code> library the compiler shows  the following error</p>
  
  <pre><code>Error: cannot access Foo
  class file for com.acme.Foo not found
  </code></pre>
  
  <p>(Foo is a class in the Common module)</p>
  
  <p>Why when I import the <code>SDK</code> none of the classes from the <code>Common</code> module are found? What I expect is the compiler to merge the two modules into a single one. Has anyone an idea about how I can solve this problem? </p>
  
  <p>(I know a solution is to publish <code>Common</code> on the artifactory but I don't want to do that since this is only internal common code).</p>