title: using SystemProperties to get Serial (Brand, Device.. etc) on Android
body: <p>I develop Android app to show some basic info.</p>
  
  <p>Looking at sources, I discovered that <code>android.os.Build</code> has most of needed values</p>
  
  <pre><code>/** The name of the overall product. */
  public static final String PRODUCT = getString("ro.product.name");
  </code></pre>
  
  <p>to take a look at those values on locally connected to PC device I can <code>adb shell getprop</code></p>
  
  <blockquote>
    <p>[ro.product.name]: [A828t]</p>
  </blockquote>
  
  <p>That is good. And I can see a lot a values</p>
  
  <p>Then when trying to read from Java using similar <code>getString</code> like in <code>android.os.Build</code></p>
  
  <pre><code>private static String getString(String property) {
      return SystemProperties.get(property, UNKNOWN);
  }
  </code></pre>
  
  <p>I found that sources for Android 4.4.2 (and in 4.3, 2.3.3 as well) <code>android.jar</code> does not have <code>SystemProperties</code> inside <code>android.os</code> package. In the same time i can find it online using <a href="http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/android/os/SystemProperties.java" rel="nofollow">grepcode.com</a>, where it is present from 2.3.3 to 5.L</p>
  
  <p><strong>What the problem here? Is this <code>android.jar</code> not good? Was the <code>SystemProperties</code> class made hidden?</strong></p>