summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/html/about/dashboards/index.jd52
-rw-r--r--docs/html/design/media/wear/ContextualExample.006.pngbin185830 -> 156910 bytes
-rw-r--r--docs/html/design/media/wear/ContextualExample.006_2x.pngbin657190 -> 544968 bytes
-rw-r--r--docs/html/design/wear/context.jd2
-rw-r--r--docs/html/training/articles/perf-jni.jd26
5 files changed, 45 insertions, 35 deletions
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index 448dcda0d477..063084df7477 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -57,7 +57,7 @@ Platform Versions</a>.</p>
</div>
-<p style="clear:both"><em>Data collected during a 7-day period ending on November 3, 2014.
+<p style="clear:both"><em>Data collected during a 7-day period ending on December 1, 2014.
<br/>Any versions with less than 0.1% distribution are not shown.</em>
</p>
@@ -88,7 +88,7 @@ Screens</a>.</p>
</div>
-<p style="clear:both"><em>Data collected during a 7-day period ending on November 3, 2014.
+<p style="clear:both"><em>Data collected during a 7-day period ending on December 1, 2014.
<br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p>
@@ -108,7 +108,8 @@ support for any lower version (for example, support for version 2.0 also implies
<img alt="" style="float:right"
-src="//chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0&chd=t%3A74.7%2C25.3&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250" />
+src="//chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0&chf=bg%2Cs%2C00000000&chd=t%3A72.2%2C27.8&chco=c4df9b%2C6fad0c&cht=p&chs=400x250" />
+
<p>To declare which version of OpenGL ES your application requires, you should use the {@code
android:glEsVersion} attribute of the <a
@@ -126,17 +127,17 @@ uses.</p>
</tr>
<tr>
<td>2.0</td>
-<td>74.7%</td>
+<td>72.2%</td>
</tr>
<tr>
<td>3.0</td>
-<td>25.3%</td>
+<td>27.8%</td>
</tr>
</table>
-<p style="clear:both"><em>Data collected during a 7-day period ending on November 3, 2014</em></p>
+<p style="clear:both"><em>Data collected during a 7-day period ending on December 1, 2014</em></p>
@@ -154,42 +155,42 @@ uses.</p>
var VERSION_DATA =
[
{
- "chart": "//chart.googleapis.com/chart?chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat&chd=t%3A0.6%2C9.8%2C8.5%2C50.9%2C30.2&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=500x250",
+ "chart": "//chart.googleapis.com/chart?chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat&chf=bg%2Cs%2C00000000&chd=t%3A0.5%2C9.1%2C7.8%2C48.7%2C33.9&chco=c4df9b%2C6fad0c&cht=p&chs=500x250",
"data": [
{
"api": 8,
"name": "Froyo",
- "perc": "0.6"
+ "perc": "0.5"
},
{
"api": 10,
"name": "Gingerbread",
- "perc": "9.8"
+ "perc": "9.1"
},
{
"api": 15,
"name": "Ice Cream Sandwich",
- "perc": "8.5"
+ "perc": "7.8"
},
{
"api": 16,
"name": "Jelly Bean",
- "perc": "22.8"
+ "perc": "21.3"
},
{
"api": 17,
"name": "Jelly Bean",
- "perc": "20.8"
+ "perc": "20.4"
},
{
"api": 18,
"name": "Jelly Bean",
- "perc": "7.3"
+ "perc": "7.0"
},
{
"api": 19,
"name": "KitKat",
- "perc": "30.2"
+ "perc": "33.9"
}
]
}
@@ -203,27 +204,28 @@ var SCREEN_DATA =
"Large": {
"hdpi": "0.6",
"ldpi": "0.5",
- "mdpi": "4.5",
- "tvdpi": "1.9",
+ "mdpi": "4.6",
+ "tvdpi": "2.0",
"xhdpi": "0.6"
},
"Normal": {
- "hdpi": "36.6",
- "mdpi": "9.9",
- "xhdpi": "18.9",
- "xxhdpi": "16.0"
+ "hdpi": "36.9",
+ "mdpi": "9.4",
+ "tvdpi": "0.2",
+ "xhdpi": "18.8",
+ "xxhdpi": "16.3"
},
"Small": {
- "ldpi": "5.8"
+ "ldpi": "5.4"
},
"Xlarge": {
"hdpi": "0.3",
- "mdpi": "3.9",
- "xhdpi": "0.5"
+ "mdpi": "3.8",
+ "xhdpi": "0.6"
}
},
- "densitychart": "//chart.googleapis.com/chart?chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chd=t%3A6.3%2C18.3%2C1.9%2C37.5%2C20.0%2C16.0&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250",
- "layoutchart": "//chart.googleapis.com/chart?chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.7%2C8.1%2C81.4%2C5.8&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250"
+ "densitychart": "//chart.googleapis.com/chart?chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chf=bg%2Cs%2C00000000&chd=t%3A5.9%2C17.8%2C2.2%2C37.8%2C20.0%2C16.3&chco=c4df9b%2C6fad0c&cht=p&chs=400x250",
+ "layoutchart": "//chart.googleapis.com/chart?chl=Xlarge%7CLarge%7CNormal%7CSmall&chf=bg%2Cs%2C00000000&chd=t%3A4.7%2C8.3%2C81.6%2C5.4&chco=c4df9b%2C6fad0c&cht=p&chs=400x250"
}
];
diff --git a/docs/html/design/media/wear/ContextualExample.006.png b/docs/html/design/media/wear/ContextualExample.006.png
index 7c3da57a51ad..e680afb803f2 100644
--- a/docs/html/design/media/wear/ContextualExample.006.png
+++ b/docs/html/design/media/wear/ContextualExample.006.png
Binary files differ
diff --git a/docs/html/design/media/wear/ContextualExample.006_2x.png b/docs/html/design/media/wear/ContextualExample.006_2x.png
index 319530d7a3b7..ee4087e00992 100644
--- a/docs/html/design/media/wear/ContextualExample.006_2x.png
+++ b/docs/html/design/media/wear/ContextualExample.006_2x.png
Binary files differ
diff --git a/docs/html/design/wear/context.jd b/docs/html/design/wear/context.jd
index 2e6653267e90..688806fbd645 100644
--- a/docs/html/design/wear/context.jd
+++ b/docs/html/design/wear/context.jd
@@ -131,7 +131,7 @@ app.</p>
<div class="slide">
<h2>Zoo</h2>
-<p>Notifies visitors when the penguins are going to be fed!
+<p>Notifies visitors when the penguins are going to be fed.
</p>
<img src="{@docRoot}design/media/wear/ContextualExample.014.png" alt=""
srcset="{@docRoot}design/media/wear/ContextualExample.014.png 1x,
diff --git a/docs/html/training/articles/perf-jni.jd b/docs/html/training/articles/perf-jni.jd
index 1a40f6237679..5a9fa1e04b46 100644
--- a/docs/html/training/articles/perf-jni.jd
+++ b/docs/html/training/articles/perf-jni.jd
@@ -635,20 +635,31 @@ avoid some problems.
<a name="faq_FindClass" id="faq_FindClass"></a>
<h2>FAQ: Why didn't <code>FindClass</code> find my class?</h2>
+<p>(Most of this advice applies equally well to failures to find methods
+with <code>GetMethodID</code> or <code>GetStaticMethodID</code>, or fields
+with <code>GetFieldID</code> or <code>GetStaticFieldID</code>.)</p>
+
<p>Make sure that the class name string has the correct format. JNI class
names start with the package name and are separated with slashes,
such as <code>java/lang/String</code>. If you're looking up an array class,
you need to start with the appropriate number of square brackets and
must also wrap the class with 'L' and ';', so a one-dimensional array of
-<code>String</code> would be <code>[Ljava/lang/String;</code>.</p>
+<code>String</code> would be <code>[Ljava/lang/String;</code>.
+If you're looking up an inner class, use '$' rather than '.'. In general,
+using <code>javap</code> on the .class file is a good way to find out the
+internal name of your class.</p>
+
+<p>If you're using ProGuard, make sure that
+<a href="{@docRoot}tools/help/proguard.html#configuring">ProGuard didn't
+strip out your class</a>. This can happen if your class/method/field is only
+used from JNI.
<p>If the class name looks right, you could be running into a class loader
issue. <code>FindClass</code> wants to start the class search in the
class loader associated with your code. It examines the call stack,
which will look something like:
<pre> Foo.myfunc(Native Method)
- Foo.main(Foo.java:10)
- dalvik.system.NativeStart.main(Native Method)</pre>
+ Foo.main(Foo.java:10)</pre>
<p>The topmost method is <code>Foo.myfunc</code>. <code>FindClass</code>
finds the <code>ClassLoader</code> object associated with the <code>Foo</code>
@@ -656,12 +667,9 @@ class and uses that.</p>
<p>This usually does what you want. You can get into trouble if you
create a thread yourself (perhaps by calling <code>pthread_create</code>
-and then attaching it with <code>AttachCurrentThread</code>).
-Now the stack trace looks like this:</p>
-<pre> dalvik.system.NativeStart.run(Native Method)</pre>
-
-<p>The topmost method is <code>NativeStart.run</code>, which isn't part of
-your application. If you call <code>FindClass</code> from this thread, the
+and then attaching it with <code>AttachCurrentThread</code>). Now there
+are no stack frames from your application.
+If you call <code>FindClass</code> from this thread, the
JavaVM will start in the "system" class loader instead of the one associated
with your application, so attempts to find app-specific classes will fail.</p>