Android: able to install app for unsupported Android version
<p>We're dropping support for Android 2.3 (API level 9) devices because most of our users have a newer Android version on their phones. I've updated the minimum SDK version to api level 14. </p>

<pre><code>android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
    }
}
</code></pre>

<p>However I'm still able to install the app on Android 2.3 devices manually (not by store). Is this expected behavior or am I doing something wrong? I couldn't find the answer somewhere else.</p>

<p>Another strange issue is that Lint doesn't detect the correct api level.</p>

<pre><code>listView.setFastScrollAlwaysVisible(true);
</code></pre>

<p>This results in the warning: Call requires api level 11 (current min is 9).
However my current minimum is now 14. So this indicates to me that i did something wrong. I tried cleaning and rebuilding the project, restarting Android Studio. It all didn't work.</p>

<p>Can anyone help me out?</p>

<p><strong>Edit</strong></p>

<p>Based on Sufians comment I started fiddling around with my gradle files and I came to the following solution. However some questions still remain.
My project structure looks like this:</p>

<blockquote>
  <ul>
  <li>android.gradle (top-level build file which contains SDK versions)</li>
  <li>main module (contains base code for other modules)
  
  <ul>
  <li>build.gradle (apply from: '../android.gradle') </li>
  </ul></li>
  <li>sub module A (module specific changes)
  
  <ul>
  <li>build.gradle (has dependency on main module) </li>
  </ul></li>
  <li>sub module B (module specific changes)
  
  <ul>
  <li>build.gradle (has dependency on main module) </li>
  </ul></li>
  </ul>
</blockquote>

<p>I have a top-level build file <code>android.gradle</code> which contains the SDK versions. My modules then include the build file by <code>apply from: '../android.gradle'</code>. If I put the minSdkVersion directly in de main module the warnings disappear. Is that the way it should be? or do I need to set an minSdkVersion for every submodule? Or is there another way so that the SDK versions can stay within the <code>android.gradle</code> file?</p>