diff options
77 files changed, 539 insertions, 294 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index f239cc5997c2..199e5b1d6d37 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1487,6 +1487,9 @@ <!-- default window inset isRound property --> <bool name="config_windowIsRound">false</bool> + <!-- default device has recents property --> + <bool name="config_hasRecents">true</bool> + <!-- Defines the default set of global actions. Actions may still be disabled or hidden based on the current state of the device. Each item must be one of the following strings: @@ -1505,4 +1508,6 @@ <item>users</item> </string-array> + <bool name="config_networkSamplingWakesDevice">true</bool> + </resources> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index c5b8a5a82054..79dcde999983 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -258,6 +258,7 @@ <java-symbol type="bool" name="config_enable_emergency_call_while_sim_locked" /> <java-symbol type="bool" name="config_enable_puk_unlock_screen" /> <java-symbol type="bool" name="config_mms_content_disposition_support" /> + <java-symbol type="bool" name="config_networkSamplingWakesDevice" /> <java-symbol type="bool" name="config_showMenuShortcutsWhenKeyboardPresent" /> <java-symbol type="bool" name="config_sip_wifi_only" /> <java-symbol type="bool" name="config_sms_capable" /> @@ -290,6 +291,7 @@ <java-symbol type="bool" name="config_forceDefaultOrientation" /> <java-symbol type="bool" name="config_wifi_batched_scan_supported" /> <java-symbol type="bool" name="config_windowIsRound" /> + <java-symbol type="bool" name="config_hasRecents" /> <java-symbol type="integer" name="config_cursorWindowSize" /> <java-symbol type="integer" name="config_extraFreeKbytesAdjust" /> diff --git a/core/tests/bluetoothtests/src/android/bluetooth/BluetoothInstrumentation.java b/core/tests/bluetoothtests/src/android/bluetooth/BluetoothInstrumentation.java index 22dce393f67d..411a3f894965 100644 --- a/core/tests/bluetoothtests/src/android/bluetooth/BluetoothInstrumentation.java +++ b/core/tests/bluetoothtests/src/android/bluetooth/BluetoothInstrumentation.java @@ -20,6 +20,8 @@ import android.app.Instrumentation; import android.content.Context; import android.os.Bundle; +import junit.framework.Assert; + import java.util.Set; public class BluetoothInstrumentation extends Instrumentation { @@ -70,6 +72,8 @@ public class BluetoothInstrumentation extends Instrumentation { getAddress(); } else if ("getBondedDevices".equals(command)) { getBondedDevices(); + } else if ("enableBtSnoop".equals(command)) { + enableBtSnoop(); } else { finish(null); } @@ -112,6 +116,12 @@ public class BluetoothInstrumentation extends Instrumentation { finish(mSuccessResult); } + public void enableBtSnoop() { + Assert.assertTrue("failed to enable snoop log", + getBluetoothAdapter().configHciSnoopLog(true)); + finish(mSuccessResult); + } + public void finish(Bundle result) { if (result == null) { result = new Bundle(); diff --git a/docs/html/google/play-services/ads.jd b/docs/html/google/play-services/ads.jd index 18579c7f116d..c1a59b8264cb 100644 --- a/docs/html/google/play-services/ads.jd +++ b/docs/html/google/play-services/ads.jd @@ -59,6 +59,11 @@ header.hide=1 <h4>Flexible and powerful tools </h4> <p>Filters and controls help you manage your ads. If you want to use multiple ad networks, you can do that too, with free ad network mediation.</p> + + <h4>Ad Policy Compliant</h4> + <p>The Google Mobile Ads SDK available in Google Play services is compliant with + Google Play Ad Poilcy regarding the usage of + <a href="{@docRoot}google/play-services/id.html">advertising ID</a>.</p> </div> <div class="col-6 normal-links"> diff --git a/docs/html/google/play-services/id.jd b/docs/html/google/play-services/id.jd index 466dfef99573..d5acf76f6e48 100644 --- a/docs/html/google/play-services/id.jd +++ b/docs/html/google/play-services/id.jd @@ -55,6 +55,19 @@ href="{@docRoot}reference/com/google/android/gms/ads/identifier/package-summary. </div> </div> +<p class="caution" style= +"background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;"> + As a reminder, please note that starting <strong>1 August 2014</strong>, new + apps and app updates distributed through Google Play must use the advertising + ID in lieu of any other persistent identifiers for any advertising purposes, + on devices that support the advertising ID.<br> + <br> + To learn how to check your app's compliance through the Developer Console, or + for details on the associated developer policy changes, please see the + <a href= + "https://support.google.com/googleplay/android-developer/answer/6048248">Advertising + ID topic</a> in the Google Play developer help center. +</p> <h2 id="get_started">Using the Advertising ID</h2> diff --git a/docs/html/guide/topics/manifest/activity-element.jd b/docs/html/guide/topics/manifest/activity-element.jd index a8d7615fda1f..3c623f6cc2e2 100644 --- a/docs/html/guide/topics/manifest/activity-element.jd +++ b/docs/html/guide/topics/manifest/activity-element.jd @@ -453,7 +453,7 @@ Similarly, a new instance of a "{@code singleTop}" activity may also be created to handle a new intent. However, if the target task already has an existing instance of the activity at the top of its stack, that instance will receive the new intent (in an -<code>{@link android.app.Activity#onNewIntent onNewIntent()}</code> call); +{@link android.app.Activity#onNewIntent onNewIntent()} call); a new instance is not created. In other circumstances — for example, if an existing instance of the "{@code singleTop}" activity is in the target task, but not at the top of @@ -461,6 +461,22 @@ the stack, or if it's at the top of a stack, but not in the target task — a new instance would be created and pushed on the stack. </p> +<p>Similarly, if you +<a href="{@docRoot}training/implementing-navigation/ancestral.html">navigate +up</a> to an activity on the current stack, the behavior is determined by the +parent activity's launch mode. If the parent activity has launch mode {@code +singleTop} (or the <code>up</code> intent contains {@link +android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}), the parent is brought to the +top of the stack, and its state is preserved. The navigation intent is received +by the parent activity's {@link android.app.Activity#onNewIntent onNewIntent()} +method. If the parent activity has launch mode {@code standard} (and the +<code>up</code> intent does not contain {@link +android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}), the current activity and its +parent are both popped off the stack, and a new instance of the parent activity +is created to receive the navigation intent. +</p> + + <p> The "{@code singleTask}" and "{@code singleInstance}" modes also differ from each other in only one respect: A "{@code singleTask}" activity allows other diff --git a/docs/html/images/ui/sample-linearlayout.png b/docs/html/images/ui/sample-linearlayout.png Binary files differindex c4beb93a6d07..04c9259ddf23 100644 --- a/docs/html/images/ui/sample-linearlayout.png +++ b/docs/html/images/ui/sample-linearlayout.png diff --git a/docs/html/tools/publishing/preparing.jd b/docs/html/tools/publishing/preparing.jd index 7192aa83df8a..5265fce93d91 100644 --- a/docs/html/tools/publishing/preparing.jd +++ b/docs/html/tools/publishing/preparing.jd @@ -191,6 +191,13 @@ were created in your project.</p> added to your code, such as {@link android.os.Debug#startMethodTracing()} and {@link android.os.Debug#stopMethodTracing()} method calls.</p> +<p class="caution"><strong>Important:</strong> Ensure that you disable debugging for +your app if using {@link android.webkit.WebView} to display paid for content or if using JavaScript +interfaces, since debugging allows users to inject scripts and extract content using Chrome +DevTools. To disable debugging, use the +{@link android.webkit.WebView#setWebContentsDebuggingEnabled(boolean) WebView.setWebContentsDebuggingEnabled()} +method.</p> + <h4>Clean up your project directories</h4> <p>Clean up your project and make sure it conforms to the directory structure described in <a diff --git a/docs/html/training/implementing-navigation/ancestral.jd b/docs/html/training/implementing-navigation/ancestral.jd index 12d500589866..f4d7c1a4093f 100644 --- a/docs/html/training/implementing-navigation/ancestral.jd +++ b/docs/html/training/implementing-navigation/ancestral.jd @@ -133,7 +133,25 @@ android.support.v4.app.NavUtils} class's static method, navigateUpFromSameTask()}. When you call this method, it finishes the current activity and starts (or resumes) the appropriate parent activity. If the target parent activity is in the task's back stack, it is brought -forward as defined by {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}.</p> +forward. The way it is brought forward depends on whether the parent activity +is able to handle an {@link +android.app.Activity#onNewIntent onNewIntent()} call:</p> + +<ul> + <li>If the parent activity has launch mode <a + href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code + <singleTop>}</a>, or the <code>up</code> intent contains {@link + android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}, the parent activity is + brought to the top of the stack, and receives the intent through its + {@link android.app.Activity#onNewIntent onNewIntent()} method.</li> + + <li>If the parent activity has launch mode <a + href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code + <standard>}</a>, and the <code>up</code> intent does not contain + {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}, the parent activity + is popped off the stack, and a new instance of that activity is created on + top of the stack to receive the intent.</li> +</ul> <p>For example:</p> @@ -157,7 +175,6 @@ activity was started in a task that belongs to a different app, then navigating <em>Up</em> should create a new task that belongs to your app, which requires that you create a new back stack.</p> - <h3 id="BuildBackStack">Navigate up with a new back stack</h3> <p>If your activity provides any <a diff --git a/packages/Shell/res/values-af/strings.xml b/packages/Shell/res/values-af/strings.xml index 3dc6a0fe380d..8c4f75f4c212 100644 --- a/packages/Shell/res/values-af/strings.xml +++ b/packages/Shell/res/values-af/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Tuisskerm"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Foutverslag vasgevang"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Raak om jou foutverslag te deel"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Swiep na links om jou foutverslag te deel"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Raak om jou foutverslag te deel"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Foutverslae bevat data van die stelsel se verskillende loglĂȘers af, insluitend persoonlike en private inligting. Deel foutverslae net met programme en mense wat jy vertrou."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Wys hierdie boodskap volgende keer"</string> </resources> diff --git a/packages/Shell/res/values-am/strings.xml b/packages/Shell/res/values-am/strings.xml index c90a5f519908..af84a09f4489 100644 --- a/packages/Shell/res/values-am/strings.xml +++ b/packages/Shell/res/values-am/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"áá"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ášáłáá« áȘááá” á°ááá"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ášáłáá« áȘááá”áá áááá«á” áááá©"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ášáłáá« áȘááá”áá áááá«á” áá° áá« á«áážá«á”á±"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ášáłáá« áȘááá”áá áááá«á” áááá©"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ášáłáá« áȘááá¶áœ ášáá áášáá ášááź ášá áá«áł ášá”ááá± áááá„ áá”áłáá»áᜠášáᣠááá„á ááááą ášáłáá« áȘááá¶áœ ááá«ááážá áá°áá áȘá«ááœá á„á á°ááœá á„á» á«áá©áą"</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"áá
á ááááá” á ááá„áá áá á áłá"</string> </resources> diff --git a/packages/Shell/res/values-ar/strings.xml b/packages/Shell/res/values-ar/strings.xml index 6a595d5e2ed6..69d7d3f1215c 100644 --- a/packages/Shell/res/values-ar/strings.xml +++ b/packages/Shell/res/values-ar/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ŰȘÙ
ۧÙŰŰ”ÙÙ ŰčÙÙ ŰȘÙ۱Ù۱ ۧÙۣ۟۷ۧۥ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ۧÙÙ
Űł ÙÙ
ێۧ۱ÙŰ© ŰȘÙ۱Ù۱ ۧÙۣ۟۷ۧۥ"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Ù
۱۱ ۚ۳۱ŰčŰ© ÙÙÙÙ
ÙÙ ÙÙ
ێۧ۱ÙŰ© ŰȘÙ۱Ù۱ ۧÙ۟۷ۣ"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ۧÙÙ
Űł ÙÙ
ێۧ۱ÙŰ© ŰȘÙ۱Ù۱ ۧÙۣ۟۷ۧۥ"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ŰȘŰŰȘÙÙ ŰȘÙۧ۱Ù۱ ۧÙۣ۟۷ۧۥ ŰčÙÙ ŰšÙۧÙۧŰȘ Ù
Ù Ù
ÙÙۧŰȘ ۳ۏÙۧŰȘ ۧÙÙ۞ۧÙ
ۧÙÙ
ŰȘÙÙŰčŰ©Ű ŰšÙ
ۧ ÙÙ Ű°ÙÙ Ù
ŰčÙÙÙ
ۧŰȘ ێ۟۔ÙŰ© Ù۟ۧ۔۩. Ùۧ ŰȘŰŽŰ§Ű±Ù ŰȘÙۧ۱Ù۱ ۧÙۣ۟۷ۧۥ Ű„Ùۧ Ù
Űč ۧÙŰȘŰ·ŰšÙÙۧŰȘ ÙۧÙۣێ۟ۧ۔ ۧÙÙ
ÙŰ«ÙÙ ŰšÙÙ
."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ۄ۞Ùۧ۱ ÙŰ°Ù Ű§Ù۱۳ۧÙŰ© ÙÙ Ű§ÙÙ
۱۩ ۧÙÙۧۯÙ
Ű©"</string> </resources> diff --git a/packages/Shell/res/values-bg/strings.xml b/packages/Shell/res/values-bg/strings.xml index 2fae95310712..f7ae49c193c9 100644 --- a/packages/Shell/res/values-bg/strings.xml +++ b/packages/Shell/res/values-bg/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ĐĐŸĐŒĐ°ĐœĐŽĐ”Đœ ŃДЎ"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ĐŃŃĐ”ŃŃŃ Đ·Đ° ĐżŃĐŸĐłŃĐ°ĐŒĐœĐž ĐłŃĐ”ŃĐșĐž Đ” запОŃĐ°Đœ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ĐĐŸĐșĐŸŃĐœĐ”ŃĐ”, за Ўа ŃĐżĐŸĐŽĐ”Đ»ĐžŃĐ” ĐŸŃŃĐ”Ńа ŃĐž за ĐżŃĐŸĐłŃĐ°ĐŒĐœĐž ĐłŃĐ”ŃĐșĐž"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ĐŃĐ”ĐșаŃаĐčŃĐ” ĐżŃŃŃŃ ĐœĐ°Đ»ŃĐČĐŸ, за Ўа ŃĐżĐŸĐŽĐ”Đ»ĐžŃĐ” ŃĐžĐłĐœĐ°Đ»Đ° ŃĐž за ĐżŃĐŸĐłŃĐ°ĐŒĐœĐ° ĐłŃĐ”ŃĐșа"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ĐĐŸĐșĐŸŃĐœĐ”ŃĐ”, за Ўа ŃĐżĐŸĐŽĐ”Đ»ĐžŃĐ” ĐŸŃŃĐ”Ńа ŃĐž за ĐżŃĐŸĐłŃĐ°ĐŒĐœĐž ĐłŃĐ”ŃĐșĐž"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ĐŃŃĐ”ŃĐžŃĐ” за ĐżŃĐŸĐłŃĐ°ĐŒĐœĐž ĐłŃĐ”ŃĐșĐž ŃŃĐŽŃŃĐ¶Đ°Ń ĐŽĐ°ĐœĐœĐž ĐŸŃ ŃазлОŃĐœĐž ŃДгОŃŃŃаŃĐžĐŸĐœĐœĐž ŃаĐčĐ»ĐŸĐČĐ” ĐœĐ° ŃĐžŃŃĐ”ĐŒĐ°Ńа, ĐČĐșĐ»ŃŃĐžŃĐ”Đ»ĐœĐŸ лОŃĐœĐ° Đž ĐżĐŸĐČĐ”ŃĐžŃĐ”Đ»ĐœĐ° ĐžĐœŃĐŸŃĐŒĐ°ŃĐžŃ. ĐĄĐżĐŸĐŽĐ”Đ»ŃĐčŃĐ” гО ŃĐ°ĐŒĐŸ Ń ĐżŃĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃ Đž Ń
ĐŸŃа, ĐœĐ° ĐșĐŸĐžŃĐŸ ĐžĐŒĐ°ŃĐ” ĐŽĐŸĐČĐ”ŃОД."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ĐąĐŸĐČа ŃŃĐŸĐ±ŃĐ”ĐœĐžĐ” Ўа ŃĐ” ĐżĐŸĐșазĐČа ŃлДЎĐČаŃĐžŃ ĐżŃŃ"</string> </resources> diff --git a/packages/Shell/res/values-ca/strings.xml b/packages/Shell/res/values-ca/strings.xml index 8bf368a051ae..fa4d1f3b8bc8 100644 --- a/packages/Shell/res/values-ca/strings.xml +++ b/packages/Shell/res/values-ca/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ProtecciĂł"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"S\'ha registrat l\'informe d\'error"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Toca aquĂ per compartir el teu informe d\'error."</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Fes lliscar el dit cap a l\'esquerra per compartir l\'informe d\'errors."</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toca aquĂ per compartir el teu informe d\'error."</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Els informes d\'error contenen dades dels diferents fitxers de registre del sistema, inclosa informaciĂł privada i personal. Comparteix els informes d\'error nomĂ©s amb les aplicacions i amb les persones en qui confies."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostra aquest missatge la propera vegada"</string> </resources> diff --git a/packages/Shell/res/values-cs/strings.xml b/packages/Shell/res/values-cs/strings.xml index 3f1c9219da72..10ef1a6c18c7 100644 --- a/packages/Shell/res/values-cs/strings.xml +++ b/packages/Shell/res/values-cs/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ProstĆedĂ"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Bylo vytvoĆeno chybovĂ© hlĂĄĆĄenĂ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ChybovĂ© hlĂĄĆĄenĂ mĆŻĆŸete sdĂlet klepnutĂm."</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Chcete-li hlĂĄĆĄenĂ chyby sdĂlet, pĆejeÄte doleva."</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ChybovĂ© hlĂĄĆĄenĂ mĆŻĆŸete sdĂlet klepnutĂm."</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ChybovĂĄ hlĂĄĆĄenĂ obsahujĂ data z rĆŻznĂœch souborĆŻ protokolĆŻ systĂ©mu vÄetnÄ osobnĂch a soukromĂœch informacĂ. ChybovĂĄ hlĂĄĆĄenĂ sdĂlejte pouze s aplikacemi a uĆŸivateli, kterĂœm dĆŻvÄĆujete."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Zobrazit tuto zprĂĄvu pĆĂĆĄtÄ"</string> </resources> diff --git a/packages/Shell/res/values-da/strings.xml b/packages/Shell/res/values-da/strings.xml index fa30c965a1f4..3e58bc273aea 100644 --- a/packages/Shell/res/values-da/strings.xml +++ b/packages/Shell/res/values-da/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Fejlrapporten er registreret"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Tryk for at dele din fejlrapport"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Stryg til venstre for at dele din fejlrapport"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Tryk for at dele din fejlrapport"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Fejlrapporter indeholder data fra systemets forskellige logfiler, f.eks. personlige og private oplysninger. Del kun fejlrapporter med apps og personer, du har tillid til."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Vis denne underretning nĂŠste gang"</string> </resources> diff --git a/packages/Shell/res/values-de/strings.xml b/packages/Shell/res/values-de/strings.xml index 34481ba6ad31..f7387ffc1d72 100644 --- a/packages/Shell/res/values-de/strings.xml +++ b/packages/Shell/res/values-de/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Fehlerbericht erfasst"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Tippen, um Fehlerbericht zu teilen"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Wischen Sie nach links, um Ihren Fehlerbericht zu teilen."</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Tippen, um Fehlerbericht zu teilen"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Fehlerberichte enthalten Daten aus verschiedenen Protokolldateien des Systems, darunter auch personenbezogene und private Daten. Teilen Sie Fehlerberichte nur mit Apps und Personen, denen Sie vertrauen."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Diese Nachricht nĂ€chstes Mal zeigen"</string> </resources> diff --git a/packages/Shell/res/values-el/strings.xml b/packages/Shell/res/values-el/strings.xml index 9b1eb7b77b2d..529b420c9c73 100644 --- a/packages/Shell/res/values-el/strings.xml +++ b/packages/Shell/res/values-el/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ÎÎλÏ
ÏÎżÏ"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ΠλΟÏη ÏÎ·Ï Î±ÎœÎ±ÏÎżÏÎŹÏ ÎźÏαΜ ΔÏÎčÏÏ
ÏÎźÏ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ÎÎłÎłÎŻÎŸÏΔ ÎłÎčα Μα ÎŒÎżÎčÏαÏÏΔίÏΔ Ïη αΜαÏÎżÏÎŹ ÏÏÎ±Î»ÎŒÎŹÏÏΜ"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ÎŁÏÏΔÏΔ ÏÏÎżÏ Ïα αÏÎčÏÏΔÏÎŹ ÎłÎčα ÎșÎżÎčÎœÎź ÏÏÎźÏη ÏÎ·Ï Î±ÎœÎ±ÏÎżÏÎŹÏ ÏÏÎ±Î»ÎŒÎŹÏÏΜ"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ÎÎłÎłÎŻÎŸÏΔ ÎłÎčα Μα ÎŒÎżÎčÏαÏÏΔίÏΔ Ïη αΜαÏÎżÏÎŹ ÏÏÎ±Î»ÎŒÎŹÏÏΜ"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ÎÎč αΜαÏÎżÏÎÏ ÏÏÎ±Î»ÎŒÎŹÏÏΜ ÏΔÏÎčÎÏÎżÏ
Μ ÎŽÎ”ÎŽÎżÎŒÎΜα αÏÏ Ïα ÎŽÎčÎŹÏÎżÏα αÏÏΔία ÎșαÏαγÏαÏÎźÏ ÏÎżÏ
ÏÏ
ÏÏÎźÎŒÎ±ÏÎżÏ, ÏÏ
ÎŒÏΔÏÎčλαΌÎČÎ±ÎœÎżÎŒÎΜÏΜ ÏÏÎżÏÏÏÎčÎșÏΜ ÎșαÎč ÎčÎŽÎčÏÏÎčÎșÏΜ ÏληÏÎżÏÎżÏÎčÏΜ. Îα ÎŒÎżÎčÏΏζΔÏÏΔ αΜαÏÎżÏÎÏ ÏÏÎ±Î»ÎŒÎŹÏÏΜ ÎŒÏÎœÎż ΌΔ ΔÏαÏÎŒÎżÎłÎÏ ÎșαÎč ÎŹÏÎżÎŒÎ± ÏÎżÏ
ΔΌÏÎčÏÏΔÏΔÏÏΔ."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ÎÎŒÏÎŹÎœÎčÏη αÏ
ÏÎżÏ ÏÎżÏ
ΌηΜÏΌαÏÎżÏ ÏηΜ ΔÏÏΌΔΜη ÏÎżÏÎŹ"</string> </resources> diff --git a/packages/Shell/res/values-en-rGB/strings.xml b/packages/Shell/res/values-en-rGB/strings.xml index 68708e0c576f..fab4223c37cf 100644 --- a/packages/Shell/res/values-en-rGB/strings.xml +++ b/packages/Shell/res/values-en-rGB/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Bug report captured"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Touch to share your bug report"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Swipe left to share your bug report"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Touch to share your bug report"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Bug reports contain data from the system\'s various log files, including personal and private information. Only share bug reports with apps and people that you trust."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Show this message next time"</string> </resources> diff --git a/packages/Shell/res/values-en-rIN/strings.xml b/packages/Shell/res/values-en-rIN/strings.xml index 68708e0c576f..fab4223c37cf 100644 --- a/packages/Shell/res/values-en-rIN/strings.xml +++ b/packages/Shell/res/values-en-rIN/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Bug report captured"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Touch to share your bug report"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Swipe left to share your bug report"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Touch to share your bug report"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Bug reports contain data from the system\'s various log files, including personal and private information. Only share bug reports with apps and people that you trust."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Show this message next time"</string> </resources> diff --git a/packages/Shell/res/values-es-rUS/strings.xml b/packages/Shell/res/values-es-rUS/strings.xml index f1ec75c1366e..d01561ca876a 100644 --- a/packages/Shell/res/values-es-rUS/strings.xml +++ b/packages/Shell/res/values-es-rUS/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Informe de errores capturado"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Toca para compartir tu informe de errores."</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Desliza el dedo hacia la izquierda para compartir el informe de errores."</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toca para compartir tu informe de errores."</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Los informes de errores contienen datos de los distintos archivos de registro del sistema, incluida la informaciĂłn personal y privada. Comparte los informes de errores Ășnicamente con aplicaciones y personas en las que confĂes."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostrar este mensaje la prĂłxima vez"</string> </resources> diff --git a/packages/Shell/res/values-es/strings.xml b/packages/Shell/res/values-es/strings.xml index 7990672b97ce..c9a9bfa2e821 100644 --- a/packages/Shell/res/values-es/strings.xml +++ b/packages/Shell/res/values-es/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Informe de error capturado"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Toca para compartir tu informe de error"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Desliza el dedo hacia la izquierda para compartir el informe de error"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toca para compartir tu informe de error"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Los informes de errores contienen datos de los distintos archivos de registro del sistema, incluida informaciĂłn personal y privada. Comparte los informes de errores Ășnicamente con aplicaciones y usuarios en los que confĂes."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostrar este mensaje la prĂłxima vez"</string> </resources> diff --git a/packages/Shell/res/values-et-rEE/strings.xml b/packages/Shell/res/values-et-rEE/strings.xml index 77881582cc8b..7de367d1553c 100644 --- a/packages/Shell/res/values-et-rEE/strings.xml +++ b/packages/Shell/res/values-et-rEE/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Kest"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Veaaruanne jÀÀdvustati"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Veaaruande jagamiseks puudutage"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Veaaruande jagamiseks pĂŒhkige vasakule"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Veaaruande jagamiseks puudutage"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Veaaruanded sisaldavad andmeid erinevatest sĂŒsteemi logifailidest, sh isiklikku ja privaatset teavet. Jagage veaaruandeid ainult usaldusvÀÀrsete rakenduste ja inimestega."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Kuva see sĂ”num jĂ€rgmisel korral"</string> </resources> diff --git a/packages/Shell/res/values-fa/strings.xml b/packages/Shell/res/values-fa/strings.xml index 2d2c2236cbc5..a737a778c975 100644 --- a/packages/Shell/res/values-fa/strings.xml +++ b/packages/Shell/res/values-fa/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ÚŻŰČۧ۱ێ Ű§ŰŽÚ©Ű§Ù ŰŻŰ±ÛۧÙŰȘ ŰŽŰŻ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ŰŹÙŰȘ ۧێŰȘ۱ۧکâÚŻŰ°Ű§Ű±Û ÚŻŰČۧ۱ێ Ű§ŰŽÚ©Ű§Ù ŰźÙŰŻ ÙÙ
Űł Ú©ÙÛŰŻ"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ŰšŰ±Ű§Û Ű§ŰŽŰȘ۱ۧکâÚŻŰ°Ű§Ű±Û ÚŻŰČۧ۱ێ ۧێکۧÙŰ ŰšÙ ŰȘÙŰŻÛ ŰąÙ Ű±Ű§ ŰšÙ ÚÙŸ ŰšÚ©ŰŽÛŰŻ"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ŰŹÙŰȘ ۧێŰȘ۱ۧکâÚŻŰ°Ű§Ű±Û ÚŻŰČۧ۱ێ Ű§ŰŽÚ©Ű§Ù ŰźÙŰŻ ÙÙ
Űł Ú©ÙÛŰŻ"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ÚŻŰČۧ۱ێâÙŰ§Û Ű§ŰŽÚ©Ű§Ù ŰۧÙÛ ŰŻŰ§ŰŻÙâÙۧÛÛ Ű§ŰČ ÙۧÛÙâÙŰ§Û ÚŻŰČۧ۱ێ Ù
ŰźŰȘÙÙ ŰŻŰ± ŰłÛŰłŰȘÙ
ÙŰłŰȘÙŰŻŰ ŰŽŰ§Ù
Ù Ű§Ű·ÙۧŰčۧŰȘ ŰŽŰźŰ”Û Ù ŰźŰ”ÙŰ”Û. ÚŻŰČۧ۱ێâÙŰ§Û Ű§ŰŽÚ©Ű§Ù Ű±Ű§ ÙÙŰ· ۚۧ ۧÙ۱ۧۯ Ù ŰšŰ±ÙۧÙ
ÙâÙŰ§Û Ù
Ù۱ۯ ۧŰčŰȘÙ
ۧۯ ŰźÙŰŻ ŰšÙ Ű§ŰŽŰȘ۱ۧک ۚگ۰ۧ۱ÛŰŻ."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ŰŻÙŰčÙ ŰšŰčŰŻ ۧÛÙ ÙŸÛۧÙ
ÙŰŽŰ§Ù ŰŻŰ§ŰŻÙ ŰŽÙŰŻ"</string> </resources> diff --git a/packages/Shell/res/values-fi/strings.xml b/packages/Shell/res/values-fi/strings.xml index ee57279f4a81..247cb6fc8028 100644 --- a/packages/Shell/res/values-fi/strings.xml +++ b/packages/Shell/res/values-fi/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Komentotulkki"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Virheraportti tallennettu"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Jaa virheraportti koskettamalla tĂ€tĂ€"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Jaa virheraportti pyyhkĂ€isemĂ€llĂ€ vasemmalle"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Jaa virheraportti koskettamalla tĂ€tĂ€"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Virheraportit sisĂ€ltĂ€vĂ€t jĂ€rjestelmĂ€n lokitietoja, ja niihin voi sisĂ€ltyĂ€ henkilökohtaisia ja yksityisiĂ€ tietoja. Jaa virheraportteja vain luotettaville sovelluksille ja kĂ€yttĂ€jille."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"NĂ€ytĂ€ tĂ€mĂ€ viesti seuraavalla kerralla"</string> </resources> diff --git a/packages/Shell/res/values-fr-rCA/strings.xml b/packages/Shell/res/values-fr-rCA/strings.xml index c672f23cba1b..844c20970b69 100644 --- a/packages/Shell/res/values-fr-rCA/strings.xml +++ b/packages/Shell/res/values-fr-rCA/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Rapport de bogue enregistrĂ©"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Appuyer ici pour partager votre rapport de bogue"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Faites glisser le doigt vers la gauche pour partager votre rapport d\'erreur."</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Appuyer ici pour partager votre rapport de bogue"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Les rapports de bogue contiennent des donnĂ©es des fichiers journaux du systĂšme, y compris des informations personnelles et privĂ©es. Ne partagez les rapports de bogue qu\'avec les applications et les personnes que vous estimez fiables."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Afficher ce message la prochaine fois"</string> </resources> diff --git a/packages/Shell/res/values-fr/strings.xml b/packages/Shell/res/values-fr/strings.xml index 12f5e88998bf..c52dd8d1d686 100644 --- a/packages/Shell/res/values-fr/strings.xml +++ b/packages/Shell/res/values-fr/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Rapport de bug enregistrĂ©"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Appuyez ici pour partager le rapport de bug"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Faites glisser le doigt vers la gauche pour partager votre rapport d\'erreur."</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Appuyez ici pour partager le rapport de bug"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Les rapports de bug contiennent des donnĂ©es des fichiers journaux du systĂšme, y compris des informations personnelles et privĂ©es. Ne partagez les rapports de bug qu\'avec les applications et les personnes que vous estimez fiables."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Afficher ce message la prochaine fois"</string> </resources> diff --git a/packages/Shell/res/values-hi/strings.xml b/packages/Shell/res/values-hi/strings.xml index f8893112f677..daf65537eafa 100644 --- a/packages/Shell/res/values-hi/strings.xml +++ b/packages/Shell/res/values-hi/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"à€¶à„à€Č"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"à€Źà€ à€°à€żà€Șà„à€°à„à€ à€à„à€Șà„à€à€° à€à€° à€Čà„ à€à€"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"à€
à€Șà€šà„ à€Źà€ à€°à€żà€Șà„à€°à„à€ à€žà€Ÿà€à€Ÿ à€à€°à€šà„ à€à„ à€Čà€żà€ à€žà„à€Șà€°à„à€¶ à€à€°à„à€"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"à€
à€Șà€šà„ à€Źà€ à€°à€żà€Șà„à€°à„à€ à€žà€Ÿà€à€Ÿ à€à€°à€šà„ à€à„ à€Čà€żà€ à€Źà€Ÿà€à€ à€žà„à€”à€Ÿà€à€Ș à€à€°à„à€"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"à€
à€Șà€šà„ à€Źà€ à€°à€żà€Șà„à€°à„à€ à€žà€Ÿà€à€Ÿ à€à€°à€šà„ à€à„ à€Čà€żà€ à€žà„à€Șà€°à„à€¶ à€à€°à„à€"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"à€Źà€ à€°à€żà€Șà„à€°à„à€ à€źà„à€ à€”à„à€Żà€à„à€€à€żà€à€€ à€à€° à€šà€żà€à„ à€à€Ÿà€šà€à€Ÿà€°à„ à€žà€čà€żà€€, à€žà€żà€žà„à€à€ź à€à„ à€”à€żà€à€żà€šà„à€š à€Čà„à€ à€«à€Œà€Ÿà€à€Čà„à€ à€à€Ÿ à€Ąà„à€à€Ÿ à€čà„à€€à€Ÿ à€čà„. à€Źà€ à€°à€żà€Șà„à€°à„à€ à€à„à€”à€Č à€”à€żà€¶à„à€”à€žà€šà„à€Ż à€à€Șà„à€ž à€à€° à€”à„à€Żà€à„à€€à€żà€Żà„à€ à€žà„ à€čà„ à€žà€Ÿà€à€Ÿ à€à€°à„à€."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"à€Żà€č à€žà€à€Šà„à€¶ à€
à€à€Čà„ à€Źà€Ÿà€° à€Šà€żà€à€Ÿà€à€"</string> </resources> diff --git a/packages/Shell/res/values-hr/strings.xml b/packages/Shell/res/values-hr/strings.xml index 2c4ea2317d6e..da01dd8da172 100644 --- a/packages/Shell/res/values-hr/strings.xml +++ b/packages/Shell/res/values-hr/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Ljuska"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Prijava programske pogreĆĄke snimljena je"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Dodirnite za dijeljenje prijave programske pogreĆĄke"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"PrijeÄite prstom ulijevo da biste poslali izvjeĆĄÄe o programskim pogreĆĄkama"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Dodirnite za dijeljenje prijave programske pogreĆĄke"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Prijave programskih pogreĆĄaka sadrĆŸavaju podatke iz razliÄitih datoteka zapisnika sustava, ukljuÄujuÄi osobne i privatne informacije. Prijave programskih pogreĆĄaka dijelite samo s aplikacijama i osobama koje smatrate pouzdanima."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"PrikaĆŸi tu poruku sljedeÄi put"</string> </resources> diff --git a/packages/Shell/res/values-hu/strings.xml b/packages/Shell/res/values-hu/strings.xml index 8d684da0855c..0ebdc3d1cf35 100644 --- a/packages/Shell/res/values-hu/strings.xml +++ b/packages/Shell/res/values-hu/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"HĂ©j"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Programhiba-jelentĂ©s rögzĂtve"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Ărintse meg a programhiba-jelentĂ©s megosztĂĄsĂĄhoz"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"HĂșzza ujjĂĄt balra a hibajelentĂ©s megosztĂĄsĂĄhoz"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Ărintse meg a programhiba-jelentĂ©s megosztĂĄsĂĄhoz"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"A programhiba-jelentĂ©sek a rendszer kĂŒlönfĂ©le naplĂłfĂĄjljaibĂłl szĂĄrmazĂł adatokat tartalmaznak, köztĂŒk szemĂ©lyes Ă©s magĂĄnjellegƱ informĂĄciĂłkat is. Csak olyan alkalmazĂĄsokkal Ă©s szemĂ©lyekkel osszon meg programhiba-jelentĂ©seket, amelyekben vagy akikben megbĂzik."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Ăzenet mutatĂĄsa legközelebb"</string> </resources> diff --git a/packages/Shell/res/values-hy-rAM/strings.xml b/packages/Shell/res/values-hy-rAM/strings.xml index ea7fa9f7cef0..80b1ccb9073e 100644 --- a/packages/Shell/res/values-hy-rAM/strings.xml +++ b/packages/Shell/res/values-hy-rAM/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ÔœŐ„ÖŐ«"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ŐÖŐ«ŐșŐĄŐŻŐ« ŐŠŐ„ŐŻŐžÖŐ”Ö ŐœŐżŐĄÖŐŸŐ„Ö"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ŐŐșŐ„Ö` Ő±Ő„Ö ŐŸÖŐ«ŐșŐĄŐŻŐ« ŐŽŐĄŐœŐ«Ő¶ ŐŠŐ„ŐŻŐžÖŐ”ÖŐš ŐżŐĄÖŐĄŐźŐ„ŐŹŐžÖ Ő°ŐĄŐŽŐĄÖ"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ŐŐĄŐ°Ő„ÖÖŐ„Ö Ő±ŐĄŐŐ ŐœŐŐĄŐŹŐ« Ő°ŐĄŐ·ŐŸŐ„ŐżŐŸŐžÖŐ©Ő”ŐžÖŐ¶Őš Ő°ŐĄŐŽÖ
ŐŁŐżŐĄŐŁŐžÖŐźŐ„ŐŹŐžÖ Ő°ŐĄŐŽŐĄÖ"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ŐŐșŐ„Ö` Ő±Ő„Ö ŐŸÖŐ«ŐșŐĄŐŻŐ« ŐŽŐĄŐœŐ«Ő¶ ŐŠŐ„ŐŻŐžÖŐ”ÖŐš ŐżŐĄÖŐĄŐźŐ„ŐŹŐžÖ Ő°ŐĄŐŽŐĄÖ"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ŐÖŐ«ŐșŐĄŐŻŐ« ŐŠŐ„ŐŻŐžÖŐ”ÖŐ¶Ő„ÖŐš ŐșŐĄÖŐžÖŐ¶ŐĄŐŻŐžÖŐŽ Ő„Ő¶ ŐżŐŸŐ”ŐĄŐŹŐ¶Ő„Ö Ő°ŐĄŐŽŐĄŐŻŐĄÖŐŁŐ« ŐżŐĄÖŐąŐ„Ö ŐŽŐžÖŐżÖŐ« ÖŐĄŐ”ŐŹŐ„ÖŐ«Ö, ŐĄŐ”Ő€ Ő©ŐŸŐžÖŐŽ Ő¶ŐĄÖ ŐĄŐ¶Ő°ŐĄŐżŐĄŐŻŐĄŐ¶ ââÖ ŐŁŐĄŐČŐżŐ¶Ő« ŐżŐ„ŐČŐ„ŐŻŐžÖŐ©Ő”ŐžÖŐ¶Ő¶Ő„Ö: ŐÖŐ«ŐșŐĄŐŻŐ« ŐŠŐ„ŐŻŐžÖŐ”ÖŐ¶Ő„ÖŐšÂ ŐŻŐ«ŐœŐ„Ö ŐŽŐ«ŐĄŐ”Ő¶ ŐĄŐ”Ő¶ Ő°ŐĄŐŸŐ„ŐŹŐŸŐĄŐźŐ¶Ő„ÖŐ« Ö ŐŽŐĄÖŐ€ŐŻŐĄŐ¶Ö Ő°Ő„Őż, ŐžÖŐžŐ¶Ö ŐŸŐœŐżŐĄŐ°ŐžÖŐŽ Ő„Ö:"</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Ô±Ő”Őœ Ő°ŐĄŐČŐžÖŐ€ŐĄŐŁÖŐžÖŐ©Ő”ŐžÖŐ¶Őš ÖŐžÖŐ”Ö ŐżŐĄŐŹ Ő°ŐĄŐ»ŐžÖŐ€ ŐĄŐ¶ŐŁŐĄŐŽ"</string> </resources> diff --git a/packages/Shell/res/values-in/strings.xml b/packages/Shell/res/values-in/strings.xml index 8ea2584802ea..b1c7293c7d91 100644 --- a/packages/Shell/res/values-in/strings.xml +++ b/packages/Shell/res/values-in/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Kerangka"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Laporan bug tercatat"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Sentuh untuk membagikan laporan bug Anda"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Gesek ke kiri untuk membagikan laporan bug Anda"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Sentuh untuk membagikan laporan bug Anda"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Laporan bug berisi data dari berbagai file log sistem, termasuk informasi pribadi dan rahasia. Hanya bagikan laporan bug dengan aplikasi dan orang yang Anda percaya."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Tampilkan pesan ini lain kali"</string> </resources> diff --git a/packages/Shell/res/values-it/strings.xml b/packages/Shell/res/values-it/strings.xml index 18a03fe19b47..9e86affe6aae 100644 --- a/packages/Shell/res/values-it/strings.xml +++ b/packages/Shell/res/values-it/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Segnalazione di bug acquisita"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Tocca per condividere la segnalazione di bug"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Scorri verso sinistra per condividere il rapporto sui bug"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Tocca per condividere la segnalazione di bug"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Le segnalazioni di bug contengono dati da vari file di log del sistema, incluse informazioni personali e private. Condividi le segnalazioni di bug solo con app e persone attendibili."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostra questo messaggio la prossima volta"</string> </resources> diff --git a/packages/Shell/res/values-iw/strings.xml b/packages/Shell/res/values-iw/strings.xml index ded860c14dfc..4e06d03e5d27 100644 --- a/packages/Shell/res/values-iw/strings.xml +++ b/packages/Shell/res/values-iw/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ŚŚąŚŚ€ŚȘ"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ŚŚŚ ŚŚŚŚŚŚ ŚŠŚŚŚ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ŚŚą ŚŚŚ ŚŚ©ŚȘŚŁ ŚŚȘ ŚŚŚ ŚŚŚŚŚŚ Ś©ŚŚ"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ŚŚŚŚ§ Ś©ŚŚŚŚ ŚŚŚ ŚŚ©ŚȘŚŁ ŚŚȘ ŚŚŚ ŚŚŚŚŚŚ"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ŚŚą ŚŚŚ ŚŚ©ŚȘŚŁ ŚŚȘ ŚŚŚ ŚŚŚŚŚŚ Ś©ŚŚ"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ŚŚŚŚŚȘ ŚąŚ ŚŚŚŚŚ ŚŚŚŚŚŚ Ś ŚȘŚŚ ŚŚ ŚŚ§ŚŚŚŠŚ ŚŚŚŚŚ ŚŚ©ŚŚ ŚŚ ŚŚŚąŚšŚŚȘ, ŚŚŚŚ ŚŚŚŚą ŚŚŚ©Ś ŚŚ€ŚšŚŚ. Ś©ŚȘŚŁ ŚŚŚŚŚȘ ŚŚŚŚŚ ŚšŚ§ ŚąŚ ŚŚ€ŚŚŚ§ŚŠŚŚŚȘ ŚŚŚ Ś©ŚŚ Ś©ŚŚȘŚ ŚĄŚŚŚ ŚąŚŚŚŚ."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ŚŚŠŚ ŚŚȘ ŚŚŚŚŚąŚ ŚŚŚ ŚŚ€ŚąŚ ŚŚŚŚ"</string> </resources> diff --git a/packages/Shell/res/values-ja/strings.xml b/packages/Shell/res/values-ja/strings.xml index db340419338f..1b24f31c2d98 100644 --- a/packages/Shell/res/values-ja/strings.xml +++ b/packages/Shell/res/values-ja/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ă·ă§ă«"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ăă°ăŹăăŒăăèšéČăăăŸăă"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ăă°ăŹăăŒăăć
±æăăă«ăŻăżăăăăŸă"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ăă°ăŹăăŒăăć
±æăăă«ăŻć·Šă«ăčăŻă€ă"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ăă°ăŹăăŒăăć
±æăăă«ăŻăżăăăăŸă"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ăă°ăŹăăŒăă«ăŻăćäșșăźéć
Źéæ
ć ±ăȘă©ăă·ăčăă ăźăăŸăăŸăȘăă°ăăĄă€ă«ăźăăŒăżăć«ăŸăăŸăăć
±æăăć ŽćăŻäżĄé ŒăăăąăăȘăšăŠăŒă¶ăŒăźăżăéžæăăŠăă ăăă"</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ăăźăĄăă»ăŒăžăæŹĄćăèĄšç€șăă"</string> </resources> diff --git a/packages/Shell/res/values-ka-rGE/strings.xml b/packages/Shell/res/values-ka-rGE/strings.xml index 7d9c72aa291f..977e9aa66c1e 100644 --- a/packages/Shell/res/values-ka-rGE/strings.xml +++ b/packages/Shell/res/values-ka-rGE/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ááá ááááá"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ááááá áášá áźáá ááááááᥠášááĄááźáá ášáá„áááááá"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ášáááźáá áá„áááá áźáá ááááááᥠááááá áášáᥠáááĄááááá ááááá"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ááááĄá ááááá ááá áȘáźááá áá„áááá áźáá ááááᥠášááąá§áááááááᥠáááĄááááá ááááá"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ášáááźáá áá„áááá áźáá ááááááᥠááááá áášáᥠáááĄááááá ááááá"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"áźáá ááááᥠááááá áášááá ááááȘááᥠáááááȘááááᥠáĄáźáááááĄáźáá áĄááĄáąáááŁá á ááŁá ááááᥠá€ááááááááá, ááá ášáá áᥠááá áá áá áááá€áááááȘááááŁá ááá€áá áááȘáááĄ."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ášááááááášá áá©áááá áᥠášááąá§ááááááá"</string> </resources> diff --git a/packages/Shell/res/values-km-rKH/strings.xml b/packages/Shell/res/values-km-rKH/strings.xml index efb345c8340d..04e31708140e 100644 --- a/packages/Shell/res/values-km-rKH/strings.xml +++ b/packages/Shell/res/values-km-rKH/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ááá"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"áá¶áâá
á¶ááâááâááá¶ááá¶áááâááá á»á"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"áááâ ááŸáááážâá
ááâáááááâááá¶ááá¶áááâááá á»áâááááâáąááá"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"áąáŒáâáá
âáááááââ ááŸáááážâá
ááâáááááâááá¶ááá¶áááâááá á»áâááááâáąááá"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"áááâ ááŸáááážâá
ááâáááááâááá¶ááá¶áááâááá á»áâááááâáąááá"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ááá¶ááá¶áááâááá á»áâááœááá¶áâáŻááá¶áâáááááâá ááá»âááááááâááááâáááááááá ááœááá¶áâáááááá¶áâáááá¶ááááááœá áá·áâáŻáááá á
áááááááâááá¶ááá¶áááâááá á»áâáá¶âááœáâáááááá·ááž áá·áâááá»áááâáááâáąáááâáá»áâá
á·áááá"</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"áááá á¶áâáá¶áâáááâáááâááááá"</string> </resources> diff --git a/packages/Shell/res/values-ko/strings.xml b/packages/Shell/res/values-ko/strings.xml index d22a8b09e076..fe5d855f6f8c 100644 --- a/packages/Shell/res/values-ko/strings.xml +++ b/packages/Shell/res/values-ko/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ì
ž"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ëČê·ž ì êł ì ìșĄìČëš"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ëČê·ž ì êł ì넌 êł”ì íë €ë©Ž í°ìčíìžì."</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ìŒìȘœìŒëĄ ì€ììŽííìŹ ëČê·ž ì êł ì넌 êł”ì íìžì."</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ëČê·ž ì êł ì넌 êł”ì íë €ë©Ž í°ìčíìžì."</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ëČê·ž ì êł ìë ìì€í
ì ë€ìí ëĄê·ž íìŒ ë°ìŽí°(ì: ê°ìž ë° ëčêł”ê° ì 볎)넌 íŹíší©ëë€. ì ëą°í ì ìë ì±êłŒ ìŹì©ììêČë§ ëČê·ž ì êł ì넌 êł”ì í©ëë€."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ë€ìì ìŽ ë©ìì§ íì"</string> </resources> diff --git a/packages/Shell/res/values-lo-rLA/strings.xml b/packages/Shell/res/values-lo-rLA/strings.xml index a237d482040f..b2724ade1708 100644 --- a/packages/Shell/res/values-lo-rLA/strings.xml +++ b/packages/Shell/res/values-lo-rLA/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"àș„àșČàșàșàșČàșàșàșžàșàșàș»àșàșà»àșàșàșàș·àșà»àșàș±àșàșàșłà»àș„à»àș§"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"à»àșàș°à»àșàș·à»àșàșȘàș»à»àșàșàșČàșàș„àșČàșàșàșČàșàșàș±àșàș«àșČàșàșàșàșà»àșČàș"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"âàșàș±àșâà»àșâàșà»àșČàșâà»àșàș·à»àșâàșȘàș»à»àșâàș„àșČàșâàșàșČàșâàșà»à»âàșàșŽàșâàșàșČàșâàșàșàșâàșà»àșČàș"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"à»àșàș°à»àșàș·à»àșàșȘàș»à»àșàșàșČàșàș„àșČàșàșàșČàșàșàș±àșàș«àșČàșàșàșàșà»àșČàș"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"àșàșČàșàș„àșČàșàșàșČàșàșà»à»àșàșŽàșàșàșČàșàșàș°àșàșàșàșĄàș” àșà»à»àșĄàșčàșàșàșČàșà»àșàș„à»àșàș±àșàșàș¶àșàșàșàșàș„àș°àșàș»àșàș«àșŒàșČàșà»àșàș„à», àșźàș§àșĄàșàș±àșàșà»à»àșĄàșčàșàșȘà»àș§àșà»àșàșàșł. àșà»àșČàșàșà»àșàșà»àșà»àșàșàș±àșàș„àșČàșàșàșČàșàșà»à»àșàșŽàșàșàșČàșà»àș«à»à»àșàș±àșàșŻ à»àș„àș°àșàș»àșàșàș”à»àșà»àșČàșà»àșàș·à»àșàșàș·à»àșà»à»àșàș»à»àșČàșàș±à»àș."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"àșȘàș°à»àșàșàșà»à»àșàș§àșČàșĄàșàș”à»àșàș”àșà»àșà»àșàș·à»àșàșà»à»à»àș"</string> </resources> diff --git a/packages/Shell/res/values-lt/strings.xml b/packages/Shell/res/values-lt/strings.xml index 3ac4820a34c3..914ef46a8498 100644 --- a/packages/Shell/res/values-lt/strings.xml +++ b/packages/Shell/res/values-lt/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Apvalkalas"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"TrikÄiĆł ataskaita uĆŸfiksuota"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Palieskite, kad bendrintumÄte trikÄiĆł ataskaitÄ
"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Perbraukite kairÄn, kad bendrintumÄte trikties ataskaitÄ
"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Palieskite, kad bendrintumÄte trikÄiĆł ataskaitÄ
"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"TrikÄiĆł ataskaitose pateikiami duomenys iĆĄ ÄŻvairiĆł sistemos ĆŸurnalo failĆł, ÄŻskaitant asmeninÄ ir privaÄiÄ
informacijÄ
. TrikÄiĆł ataskaitas bendrinkite tik su patikimomis programomis ir ĆŸmonÄmis."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Rodyti ĆĄÄŻ praneĆĄimÄ
kitÄ
kartÄ
"</string> </resources> diff --git a/packages/Shell/res/values-lv/strings.xml b/packages/Shell/res/values-lv/strings.xml index 3f7f7c1e0f77..430cb8d158b5 100644 --- a/packages/Shell/res/values-lv/strings.xml +++ b/packages/Shell/res/values-lv/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Aizsargs"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Izveidots kÄŒĆ«du pÄrskats"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Pieskarieties, lai kopÄ«gotu kÄŒĆ«du pÄrskatu."</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Velciet pa kreisi, lai kopÄ«gotu savu kÄŒĆ«du ziĆojumu."</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Pieskarieties, lai kopÄ«gotu kÄŒĆ«du pÄrskatu."</string> <string name="bugreport_confirm" msgid="5130698467795669780">"KÄŒĆ«du pÄrskatÄ ir iekÄŒauti dati no daĆŸÄdiem sistÄmas ĆŸurnÄlfailiem, tostarp personas dati un privÄta informÄcija. KÄŒĆ«du pÄrskatus ieteicams kopÄ«got tikai ar uzticamÄm lietotnÄm un lietotÄjiem."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"RÄdÄ«t ĆĄo ziĆojumu nÄkamajÄ reizÄ"</string> </resources> diff --git a/packages/Shell/res/values-mn-rMN/strings.xml b/packages/Shell/res/values-mn-rMN/strings.xml index f74298d56739..4637f2d914df 100644 --- a/packages/Shell/res/values-mn-rMN/strings.xml +++ b/packages/Shell/res/values-mn-rMN/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"КДл"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ĐĐ»ĐŽĐ°Đ°ĐœŃ ĐŒŃĐŽŃŃĐ»ŃĐ» Ń
ÒŻĐ»ŃŃĐœ аĐČаĐČ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"йа Đ°Đ»ĐŽĐ°Đ°ĐœŃ ĐŒŃĐŽŃгЎлОĐčĐł Ń
ŃĐČаалŃаŃ
Đ±ĐŸĐ» Ń
ÒŻŃĐœŃ ÒŻÒŻ"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ÓšÓ©ŃĐžĐčĐœ ŃĐŸĐłĐŸĐł ŃĐ”ĐżĐŸŃŃŃĐł Ń
ŃĐČаалŃаŃ
ŃĐœ ŃŃлЎ Đ·ÒŻÒŻĐœ ŃŃĐŽŃĐ°ĐœĐ° ŃŃ"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"йа Đ°Đ»ĐŽĐ°Đ°ĐœŃ ĐŒŃĐŽŃгЎлОĐčĐł Ń
ŃĐČаалŃаŃ
Đ±ĐŸĐ» Ń
ÒŻŃĐœŃ ÒŻÒŻ"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ĐĐ»ĐŽĐ°Đ°ĐœŃ ŃĐ”ĐżĐŸŃŃ ĐœŃ Ń
ŃĐČĐžĐčĐœ Đ±ĐŸĐ»ĐŸĐœ ĐœŃŃŃ ĐŒŃĐŽŃŃĐ»ŃĐ» Đ·ŃŃгОĐčĐł агŃŃĐ»ŃĐ°Đœ ŃĐžŃŃĐ”ĐŒĐžĐčĐœ ŃÓ©ŃÓ©Đ» Đ±ÒŻŃĐžĐčĐœ Đ»ĐŸĐł ŃаĐčĐ»ŃĐœ ЎаŃаг агŃŃĐ»ĐœĐ°. ĐĐ»ĐŽĐ°Đ°ĐœŃ ŃĐ”ĐżĐŸŃŃŃĐł Đ·Ó©ĐČŃ
Ó©Đœ ĐžŃĐłŃĐ»ŃŃĐč апп Đ±ĐŸĐ»ĐŸĐœ Ń
ÒŻĐŒÒŻÒŻŃŃ Ń
ŃĐČаалŃĐ°ĐœĐ° ŃŃ."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ĐĐœŃ ĐŒĐ”ŃŃДжОĐčĐł ЎаŃаагОĐčĐœ ŃЎаа Ń
аŃŃŃлаŃ
"</string> </resources> diff --git a/packages/Shell/res/values-ms-rMY/strings.xml b/packages/Shell/res/values-ms-rMY/strings.xml index 8d1e4a228c66..d7bdc78e91cd 100644 --- a/packages/Shell/res/values-ms-rMY/strings.xml +++ b/packages/Shell/res/values-ms-rMY/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Laporan pepijat telah ditangkap"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Sentuh untuk berkongsi laporan pepijat anda"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Leret ke kiri untuk berkongsi laporan pepijat anda"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Sentuh untuk berkongsi laporan pepijat anda"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Laporan pepijat mengandungi data dari pelbagai fail log sistem, termasuk maklumat peribadi dan sulit. Kongsikan laporan pepijat hanya dengan apl dan orang yang anda percayai."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Tunjukkan mesej ini pada masa akan datang"</string> </resources> diff --git a/packages/Shell/res/values-nb/strings.xml b/packages/Shell/res/values-nb/strings.xml index 96d53a633aaf..b9d969d0a5ac 100644 --- a/packages/Shell/res/values-nb/strings.xml +++ b/packages/Shell/res/values-nb/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Kommandoliste"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Feilrapporten er lagret"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Trykk for Ă„ dele feilrapporten din"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Sveip til venstre for Ă„ dele feilrapporten din"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Trykk for Ă„ dele feilrapporten din"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Feilrapporter inkluderer data fra systemets forskjellige loggfiler. Dette omfatter personlig og privat informasjon. Du bĂžr bare dele feilrapporter ned apper og folk du stoler pĂ„."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Vis denne meldingen neste gang"</string> </resources> diff --git a/packages/Shell/res/values-nl/strings.xml b/packages/Shell/res/values-nl/strings.xml index 5c32c737f607..51ae329c68d0 100644 --- a/packages/Shell/res/values-nl/strings.xml +++ b/packages/Shell/res/values-nl/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Foutenrapport vastgelegd"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Raak aan om uw foutenrapport te delen"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Veeg naar links om uw bugmelding te delen"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Raak aan om uw foutenrapport te delen"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Foutenrapporten bevatten gegevens uit de verschillende logbestanden van het systeem, waaronder persoonlijke en privĂ©gegevens. Deel foutenrapporten alleen met apps en mensen die u vertrouwt."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Dit bericht de volgende keer weergeven"</string> </resources> diff --git a/packages/Shell/res/values-pl/strings.xml b/packages/Shell/res/values-pl/strings.xml index 2e28f8dfed21..2c810d6e7893 100644 --- a/packages/Shell/res/values-pl/strings.xml +++ b/packages/Shell/res/values-pl/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"PowĆoka"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Raport o bĆÄdach zostaĆ zapisany"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Kliknij, by udostÄpniÄ raport o bĆÄdach"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"PrzesuĆ palcem w lewo, by udostÄpniÄ swoje zgĆoszenie bĆÄdu"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Kliknij, by udostÄpniÄ raport o bĆÄdach"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Raporty o bĆÄdach zawierajÄ
dane z rĂłĆŒnych plikĂłw dziennikĂłw systemu, w tym dane osobowe i prywatne. UdostÄpniaj je tylko aplikacjom i osobom, ktĂłrym ufasz."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"PokaĆŒ ten komunikat nastÄpnym razem"</string> </resources> diff --git a/packages/Shell/res/values-pt-rPT/strings.xml b/packages/Shell/res/values-pt-rPT/strings.xml index 1c465e0ba647..7a833d69cfe6 100644 --- a/packages/Shell/res/values-pt-rPT/strings.xml +++ b/packages/Shell/res/values-pt-rPT/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"RelatĂłrio de erros capturado"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Toque para partilhar o relatĂłrio de erros"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Deslizar rapidamente para a esquerda para partilhar o seu relatĂłrio de erros"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toque para partilhar o relatĂłrio de erros"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Os relatĂłrios de erros incluem dados de vĂĄrios ficheiros de registo do sistema, nomeadamente informaçÔes pessoais e privadas. Partilhe relatĂłrios de erros apenas com aplicaçÔes e pessoas fidedignas."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostrar esta mensagem da prĂłxima vez"</string> </resources> diff --git a/packages/Shell/res/values-pt/strings.xml b/packages/Shell/res/values-pt/strings.xml index 20f4cc9aadfb..3d4c51f2fb9d 100644 --- a/packages/Shell/res/values-pt/strings.xml +++ b/packages/Shell/res/values-pt/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"RelatĂłrio de bugs capturado"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Toque para compartilhar seu relatĂłrio de bugs"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Deslize para a esquerda para compartilhar seu relatĂłrio de bugs"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Toque para compartilhar seu relatĂłrio de bugs"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Os relatĂłrios de bugs contĂȘm dados de diversos arquivos de registro do sistema, inclusive informaçÔes pessoais e particulares. Compartilhe relatĂłrios de bugs somente com aplicativos e pessoas nos quais vocĂȘ confia."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Mostrar esta mensagem da prĂłxima vez"</string> </resources> diff --git a/packages/Shell/res/values-ro/strings.xml b/packages/Shell/res/values-ro/strings.xml index 45c2b0a59acb..537ba3d79cae 100644 --- a/packages/Shell/res/values-ro/strings.xml +++ b/packages/Shell/res/values-ro/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Raportul despre erori a fost creat"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"AtingeÈi pentru a permite accesul la raportul despre erori"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"GlisaÈi la stĂąnga pentru a trimite raportul de erori"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"AtingeÈi pentru a permite accesul la raportul despre erori"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Rapoartele despre erori conÈin date din diferite fiÈiere de jurnal ale sistemului, inclusiv informaÈii private Èi personale. PermiteÈi accesul la rapoartele despre erori numai aplicaÈiilor Èi persoanelor Ăźn care aveÈi Ăźncredere."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"AfiÈaÈi acest mesaj data viitoare"</string> </resources> diff --git a/packages/Shell/res/values-ru/strings.xml b/packages/Shell/res/values-ru/strings.xml index 153e972df6bb..7c8073665059 100644 --- a/packages/Shell/res/values-ru/strings.xml +++ b/packages/Shell/res/values-ru/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ĐĐ±ĐŸĐ»ĐŸŃĐșа"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ĐŃŃĐ”Ń ĐŸĐ± ĐŸŃОбĐșаŃ
ŃĐŸŃ
ŃĐ°ĐœĐ”Đœ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ĐĐ°Đ¶ĐŒĐžŃĐ”, ŃŃĐŸĐ±Ń ĐŸŃĐżŃаĐČĐžŃŃ ĐŸŃŃĐ”Ń ĐŸĐ± ĐŸŃОбĐșаŃ
"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ĐŃĐŸĐČДЎОŃĐ” палŃŃĐ”ĐŒ ĐČлДĐČĐŸ, ŃŃĐŸĐ±Ń ĐŸŃĐżŃаĐČĐžŃŃ ĐŸŃŃĐ”Ń ĐŸĐ± ĐŸŃОбĐșĐ”"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ĐĐ°Đ¶ĐŒĐžŃĐ”, ŃŃĐŸĐ±Ń ĐŸŃĐżŃаĐČĐžŃŃ ĐŸŃŃĐ”Ń ĐŸĐ± ĐŸŃОбĐșаŃ
"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ĐŃŃĐ”ŃŃ ĐŸĐ± ĐŸŃОбĐșаŃ
ŃĐŸĐŽĐ”ŃĐ¶Đ°Ń ĐŽĐ°ĐœĐœŃĐ” ŃазлОŃĐœŃŃ
ŃĐžŃŃĐ”ĐŒĐœŃŃ
жŃŃĐœĐ°Đ»ĐŸĐČ Đž ĐŒĐŸĐłŃŃ ĐČĐșĐ»ŃŃаŃŃ Đ»ĐžŃĐœŃŃ ĐžĐœŃĐŸŃĐŒĐ°ŃĐžŃ. Đ Đ”ĐșĐŸĐŒĐ”ĐœĐŽŃĐ”ĐŒ ĐŸŃĐșŃŃĐČаŃŃ Đș ĐœĐžĐŒ ĐŽĐŸŃŃŃĐż ŃĐŸĐ»ŃĐșĐŸ лОŃĐ°ĐŒ Đž ĐżŃĐžĐ»ĐŸĐ¶Đ”ĐœĐžŃĐŒ, заŃĐ»ŃжОĐČаŃŃĐžĐŒ ĐŽĐŸĐČĐ”ŃОД."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ĐĐŸĐșазаŃŃ ŃŃĐŸ ŃĐŸĐŸĐ±ŃĐ”ĐœĐžĐ” ĐČ ŃлДЎŃŃŃĐžĐč Ńаз"</string> </resources> diff --git a/packages/Shell/res/values-sk/strings.xml b/packages/Shell/res/values-sk/strings.xml index 59c3ccf75558..0d6940d606ca 100644 --- a/packages/Shell/res/values-sk/strings.xml +++ b/packages/Shell/res/values-sk/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Prostredie"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"HlĂĄsenie o chybĂĄch bolo vytvorenĂ©"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"HlĂĄsenie o chybĂĄch mĂŽĆŸete zdielaĆ„ klepnutĂm"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Ak chcete hlĂĄsenie o chybe zdieÄŸaĆ„, prejdite prstom doÄŸava."</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"HlĂĄsenie o chybĂĄch mĂŽĆŸete zdielaĆ„ klepnutĂm"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"SprĂĄvy o chybĂĄch obsahujĂș Ășdaje z rĂŽznych sĂșborov dennĂkov systĂ©mu vrĂĄtane osobnĂœch a sĂșkromnĂœch informĂĄciĂ. ZdieÄŸajte ich iba s dĂŽveryhodnĂœmi aplikĂĄciami a ÄŸuÄmi."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ZobraziĆ„ tĂșto sprĂĄvu nabudĂșce"</string> </resources> diff --git a/packages/Shell/res/values-sl/strings.xml b/packages/Shell/res/values-sl/strings.xml index 8522d1b3ea65..b2caa07c27e0 100644 --- a/packages/Shell/res/values-sl/strings.xml +++ b/packages/Shell/res/values-sl/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Lupina"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"PoroÄilo o napaki je posneto"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Dotaknite se, Äe ĆŸelite deliti sporoÄilo o napaki z drugimi"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Povlecite v levo, Äe ĆŸelite poslati sporoÄilo o napaki"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Dotaknite se, Äe ĆŸelite deliti sporoÄilo o napaki z drugimi"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"PoroÄila o napakah vsebujejo podatke iz razliÄnih dnevniĆĄkih datotek sistema, vkljuÄno z osebnimi in zasebnimi podatki. PoroÄila o napakah delite samo z aplikacijami in ljudmi, ki jim zaupate."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"PokaĆŸi to sporoÄilo naslednjiÄ"</string> </resources> diff --git a/packages/Shell/res/values-sr/strings.xml b/packages/Shell/res/values-sr/strings.xml index bef6ff4bc9f4..9e4e595ef1ed 100644 --- a/packages/Shell/res/values-sr/strings.xml +++ b/packages/Shell/res/values-sr/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ĐĐ·ĐČĐ”ŃŃĐ°Ń ĐŸ ĐłŃĐ”ŃŃĐž ŃĐ” ŃĐœĐžĐŒŃĐ”Đœ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ĐĐŸĐŽĐžŃĐœĐžŃĐ” Ўа бОŃŃĐ” ЎДлОлО ОзĐČĐ”ŃŃĐ°Ń ĐŸ ĐłŃĐ”ŃŃĐž"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ĐŃĐ”ĐČŃŃĐžŃĐ” ŃлДĐČĐŸ Ўа бОŃŃĐ” ЎДлОлО ОзĐČĐ”ŃŃĐ°Ń ĐŸ ĐłŃĐ”ŃĐșĐ°ĐŒĐ°"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ĐĐŸĐŽĐžŃĐœĐžŃĐ” Ўа бОŃŃĐ” ЎДлОлО ОзĐČĐ”ŃŃĐ°Ń ĐŸ ĐłŃĐ”ŃŃĐž"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ĐĐ·ĐČĐ”ŃŃаŃĐž ĐŸ ĐłŃĐ”ŃĐșĐ°ĐŒĐ° ŃаЎŃжД ĐżĐŸĐŽĐ°ŃĐșĐ” Оз ŃазлОŃĐžŃĐžŃ
ŃĐžŃŃĐ”ĐŒŃĐșĐžŃ
ЎаŃĐŸŃĐ”Đșа Đ”ĐČĐžĐŽĐ”ĐœŃĐžŃĐ”, ŃĐșŃŃŃŃŃŃŃĐž лОŃĐœĐ” Đž ĐżŃĐžĐČаŃĐœĐ” ĐżĐŸĐŽĐ°ŃĐșĐ”. ĐДлОŃĐ” ОзĐČĐ”ŃŃаŃĐ” ĐŸ ĐłŃĐ”ŃĐșĐ°ĐŒĐ° ŃĐ°ĐŒĐŸ Ńа аплОĐșаŃĐžŃĐ°ĐŒĐ° Đž ŃŃĐŽĐžĐŒĐ° Ń ĐșĐŸŃĐ” ĐžĐŒĐ°ŃĐ” ĐżĐŸĐČĐ”ŃĐ”Ńа."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ĐŃĐžĐșажО ĐŸĐČŃ ĐżĐŸŃŃĐșŃ ŃлДЎДŃĐž ĐżŃŃ"</string> </resources> diff --git a/packages/Shell/res/values-sv/strings.xml b/packages/Shell/res/values-sv/strings.xml index 055dc41738f2..c26a7cecf329 100644 --- a/packages/Shell/res/values-sv/strings.xml +++ b/packages/Shell/res/values-sv/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Skal"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Felrapporten har skapats"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Tryck om du vill dela felrapporten"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Dra till vĂ€nster om du vill dela felrapporten"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Tryck om du vill dela felrapporten"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Felrapporter innehĂ„ller data frĂ„n systemets olika loggfiler, inklusive personliga och privata uppgifter. Dela bara felrapporter med personer du litar pĂ„."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Visa det hĂ€r meddelandet nĂ€sta gĂ„ng"</string> </resources> diff --git a/packages/Shell/res/values-sw/strings.xml b/packages/Shell/res/values-sw/strings.xml index b1d440774c9c..4553328cdc30 100644 --- a/packages/Shell/res/values-sw/strings.xml +++ b/packages/Shell/res/values-sw/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Ganda"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Ripoti ya hitilafu imenaswa"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Gusa ili ushiriki ripoti yako ya hitilafu"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Telezesha kidole kushoto ili ushiriki ripoti yako ya hitilafu"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Gusa ili ushiriki ripoti yako ya hitilafu"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Ripoti ya hitilafu ina data kutoka kwenye faili za kumbukumbu mbalimbali za mfumo, pamoja na maelezo ya kibinafsi na faragha. Shiriki ripoti ya hitilafu na programu na watu unaowaamini pekee."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Onyesha ujumbe huu wakati mwingine"</string> </resources> diff --git a/packages/Shell/res/values-th/strings.xml b/packages/Shell/res/values-th/strings.xml index b484a426d012..07029520dd11 100644 --- a/packages/Shell/res/values-th/strings.xml +++ b/packages/Shell/res/values-th/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"àžàž±àžàž àžČàžàžŁàžČàžąàžàžČàžàžàčàžàžàžàžàžŁàčàžàžàčàž„àčàž§"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"àčàžàž°àčàžàž·àčàžàčàžàžŁàčàžŁàžČàžąàžàžČàžàžàčàžàžàžàžàžŁàčàžàžàžàžàžàžàžžàž"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"àžàž§àžČàžàčàžàžàžČàžàžàčàžČàžąàčàžàž·àčàžàčàžàžŁàčàžŁàžČàžąàžàžČàžàžàčàžàžàžàžàžŁàčàžàž"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"àčàžàž°àčàžàž·àčàžàčàžàžŁàčàžŁàžČàžąàžàžČàžàžàčàžàžàžàžàžŁàčàžàžàžàžàžàžàžžàž"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"àžŁàžČàžąàžàžČàžàžàčàžàžàžàžàžŁàčàžàžàžĄàž”àžàčàžàžĄàžčàž„àžàžČàžàčàžàž„àčàžàž±àžàžàž¶àžàžàčàžČàžàč àžàžàžàžŁàž°àžàž àžŁàž§àžĄàžàž¶àžàžàčàžàžĄàžčàž„àžȘàčàž§àžàžàž±àž§ àčàžàžŁàčàžŁàžČàžąàžàžČàžàžàčàžàžàžàžàžŁàčàžàžàžàž±àžàčàžàžàčàž„àž°àžàžžàžàžàž„àžàž”àčàžàžžàžàčàž§àčàčàžàčàžàčàžČàžàž±àčàž"</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"àčàžȘàžàžàžàčàžàžàž§àžČàžĄàžàž”àčàčàžàžàžŁàž±àčàžàžàčàžàčàž"</string> </resources> diff --git a/packages/Shell/res/values-tl/strings.xml b/packages/Shell/res/values-tl/strings.xml index 20d1b09c32ad..8d42ecd951f2 100644 --- a/packages/Shell/res/values-tl/strings.xml +++ b/packages/Shell/res/values-tl/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Na-capture ang ulat ng bug"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Pindutin upang ibahagi ang iyong ulat ng bug"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Mag-swipe pakaliwa upang ibahagi ang iyong ulat ng bug"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Pindutin upang ibahagi ang iyong ulat ng bug"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Naglalaman ang mga ulat ng bug ng data mula sa iba\'t ibang file ng log ng system, kabilang ang personal at pribadong impormasyon. Magbahagi lang ng mga ulat ng bug sa apps at mga tao na pinagkakatiwalaan mo."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Ipakita ang mensaheng ito sa susunod"</string> </resources> diff --git a/packages/Shell/res/values-tr/strings.xml b/packages/Shell/res/values-tr/strings.xml index 56db3fc80742..2e95b4edee73 100644 --- a/packages/Shell/res/values-tr/strings.xml +++ b/packages/Shell/res/values-tr/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Kabuk"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Hata raporu kaydedildi"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Hata raporunuzu paylaĆmak için dokunun"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Hata raporunuzu paylaĆmak için hızlıca sola kaydırın"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Hata raporunuzu paylaĆmak için dokunun"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Hata raporları, kiĆisel ve özel bilgiler dahil olmak ĂŒzere sistemin çeĆitli gĂŒnlĂŒk dosyalarından veriler içerir. Hata raporlarını sadece gĂŒvendiÄiniz uygulamalar ve kiĆilerle paylaĆın."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Bir dahaki sefere bu mesajı göster"</string> </resources> diff --git a/packages/Shell/res/values-uk/strings.xml b/packages/Shell/res/values-uk/strings.xml index 68e68a8f4d76..f9f5bb340b54 100644 --- a/packages/Shell/res/values-uk/strings.xml +++ b/packages/Shell/res/values-uk/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ĐĐ±ĐŸĐ»ĐŸĐœĐșа"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ĐĐČŃŃ ĐżŃĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž ŃŃĐČĐŸŃĐ”ĐœĐŸ"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"ĐąĐŸŃĐșĐœŃŃŃŃŃ, ŃĐŸĐ± ĐœĐ°ĐŽŃŃлаŃĐž Đ·ĐČŃŃ ĐżŃĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ĐŃĐŸĐČДЎŃŃŃ ĐżĐ°Đ»ŃŃĐ”ĐŒ Đ»ŃĐČĐŸŃŃŃ, ŃĐŸĐ± ĐœĐ°ĐŽŃŃлаŃĐž Đ·ĐČŃŃ ĐżŃĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"ĐąĐŸŃĐșĐœŃŃŃŃŃ, ŃĐŸĐ± ĐœĐ°ĐŽŃŃлаŃĐž Đ·ĐČŃŃ ĐżŃĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"ĐĐČŃŃĐž ĐżŃĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž ĐŒŃŃŃŃŃŃ ĐŽĐ°ĐœŃ Đ· ŃŃĐ·ĐœĐžŃ
ŃаĐčĐ»ŃĐČ Đ¶ŃŃĐœĐ°Đ»Ń ŃĐžŃŃĐ”ĐŒĐž, Đ·ĐŸĐșŃĐ”ĐŒĐ° ĐŸŃĐŸĐ±ĐžŃŃŃ Ńа ĐșĐŸĐœŃŃĐŽĐ”ĐœŃŃĐčĐœŃ. ĐаЎŃОлаĐčŃĐ” Đ·ĐČŃŃ ĐżŃĐŸ ĐżĐŸĐŒĐžĐ»ĐșĐž лОŃĐ” ŃĐžĐŒ, ĐșĐŸĐŒŃ ĐŽĐŸĐČŃŃŃŃŃĐ”."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"ĐĐŸĐșазаŃĐž ŃĐ” ĐżĐŸĐČŃĐŽĐŸĐŒĐ»Đ”ĐœĐœŃ ĐœĐ°ŃŃŃĐżĐœĐŸĐłĐŸ ŃазŃ"</string> </resources> diff --git a/packages/Shell/res/values-vi/strings.xml b/packages/Shell/res/values-vi/strings.xml index ca4fcaa0c98b..49194112610e 100644 --- a/packages/Shell/res/values-vi/strings.xml +++ b/packages/Shell/res/values-vi/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"BĂĄo cĂĄo lá»i ÄĂŁ ÄÆ°á»Łc chỄp"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"CháșĄm Äá» chia sáș» bĂĄo cĂĄo lá»i cá»§a báșĄn"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Vuá»t sang trĂĄi Äá» chia sáș» bĂĄo cĂĄo lá»i cá»§a báșĄn"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"CháșĄm Äá» chia sáș» bĂĄo cĂĄo lá»i cá»§a báșĄn"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"CĂĄc bĂĄo cĂĄo lá»i chứa dữ liá»u từ nhiá»u tá»p nháșt kĂœ khĂĄc nhau cá»§a há» thá»ng, bao gá»m cáșŁ thĂŽng tin cĂĄ nhĂąn vĂ riĂȘng tư. Chá» chia sáș» bĂĄo cĂĄo lá»i vá»i cĂĄc ứng dỄng vĂ những ngưá»i mĂ báșĄn tin tưá»ng."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Hiá»n thá» thĂŽng bĂĄo nĂ y vĂ o láș§n tá»i"</string> </resources> diff --git a/packages/Shell/res/values-zh-rCN/strings.xml b/packages/Shell/res/values-zh-rCN/strings.xml index f1c385f3a905..409b5caffc9f 100644 --- a/packages/Shell/res/values-zh-rCN/strings.xml +++ b/packages/Shell/res/values-zh-rCN/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ć·ČæćéèŻŻæ„ć"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"è§ŠæžćłćŻćäș«æšçéèŻŻæ„ć"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ćć·Šæ»ćšćłćŻćäș«éèŻŻæ„ć"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"è§ŠæžćłćŻćäș«æšçéèŻŻæ„ć"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"éèŻŻæ„ćć
ć«çæ°æźæ„èȘäșçł»ç»çćäžȘæ„ćżæä»¶ïŒć
¶äžć
ć«äžȘäșș俥æŻćéç§äżĄæŻăèŻ·ćĄćż
ćȘäžæšäżĄä»»çćșçšćçšæ·ćäș«éèŻŻæ„ćă"</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"äžæŹĄćæŸç€șèżæĄèźŻæŻ"</string> </resources> diff --git a/packages/Shell/res/values-zh-rHK/strings.xml b/packages/Shell/res/values-zh-rHK/strings.xml index b5f19352ace7..0d56d76d1446 100644 --- a/packages/Shell/res/values-zh-rHK/strings.xml +++ b/packages/Shell/res/values-zh-rHK/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"ćœä»€ä»éą"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ć·Čæ·ćéŻèȘ€ć ±ć"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"èŒè§žćłćŻćäș«æšçéŻèȘ€ć ±ć"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ćć·Šæ»ććłćŻćäș«éŻèȘ€ć ±ć"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"èŒè§žćłćŻćäș«æšçéŻèȘ€ć ±ć"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"éŻèȘ€ć ±ćäžæäŸèȘ系由ććèšéæȘæĄçèłæïŒć
æŹćäșșćç§äșșèłæăè«ćȘèæšäżĄä»»çæçšçšćŒćçšæ¶ćäș«éŻèȘ€ć ±ćă"</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"äžæŹĄć饯ç€șéćèšæŻ"</string> </resources> diff --git a/packages/Shell/res/values-zh-rTW/strings.xml b/packages/Shell/res/values-zh-rTW/strings.xml index d3d31403ab2d..fe3bcff1cddb 100644 --- a/packages/Shell/res/values-zh-rTW/strings.xml +++ b/packages/Shell/res/values-zh-rTW/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"æźŒć±€"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"ć·Čæ·ćéŻèȘ€ć ±ć"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"èŒè§žćłćŻćäș«æšçéŻèȘ€ć ±ć"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"ćć·Šæ»ććłćŻćäș«éŻèȘ€ć ±ć"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"èŒè§žćłćŻćäș«æšçéŻèȘ€ć ±ć"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"éŻèȘ€ć ±ćçèłæäŸèȘ系由ććçŽéæȘïŒć
æŹćäșșćç§ćŻèłèšăè«ććż
ćȘèæšäżĄä»»çæçšçšćŒćäœżçšè
ćäș«éŻèȘ€ć ±ćă"</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"äžæŹĄä»éĄŻç€șéćèšæŻ"</string> </resources> diff --git a/packages/Shell/res/values-zu/strings.xml b/packages/Shell/res/values-zu/strings.xml index e524b80f18e1..38e95952a101 100644 --- a/packages/Shell/res/values-zu/strings.xml +++ b/packages/Shell/res/values-zu/strings.xml @@ -18,7 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"I-Shell"</string> <string name="bugreport_finished_title" msgid="2293711546892863898">"Umbiko wesiphazamisi uthwetshuliwe"</string> - <string name="bugreport_finished_text" msgid="3559904746859400732">"Thinta ukuze wabelane ngombiko wakho wesiphazamisi"</string> + <string name="bugreport_finished_text" product="watch" msgid="8389172248433597683">"Swayiphela kwesokunxele ukuze wabelane umbiko wesiphazamiso sakho"</string> + <string name="bugreport_finished_text" product="default" msgid="3559904746859400732">"Thinta ukuze wabelane ngombiko wakho wesiphazamisi"</string> <string name="bugreport_confirm" msgid="5130698467795669780">"Imibiko yeziphazamisi iqukethe idatha yamafayela wokungena ahlukile wesistimu, afaka ulwazi lomuntu siqu noma lobumfihlo. Yabelana kuphela ngemibiko yeziphazamisi nezinhlelo zokusebenza nabantu obathembayo."</string> <string name="bugreport_confirm_repeat" msgid="4926842460688645058">"Bonisa lo mlayezo ngesikhathi esilandelayo"</string> </resources> diff --git a/packages/Shell/res/values/strings.xml b/packages/Shell/res/values/strings.xml index e5606c78ec06..51e2c951a2a5 100644 --- a/packages/Shell/res/values/strings.xml +++ b/packages/Shell/res/values/strings.xml @@ -19,8 +19,12 @@ <!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] --> <string name="bugreport_finished_title">Bug report captured</string> + + <!-- Text of notification indicating that swipe left will share the captured bugreport. [CHAR LIMIT=100] --> + <string name="bugreport_finished_text" product="watch">Swipe left to share your bug report</string> <!-- Text of notification indicating that touching will share the captured bugreport. [CHAR LIMIT=100] --> - <string name="bugreport_finished_text">Touch to share your bug report</string> + <string name="bugreport_finished_text" product="default">Touch to share your bug report</string> + <!-- Body of dialog informing user about contents of a bugreport. [CHAR LIMIT=NONE] --> <string name="bugreport_confirm">Bug reports contain data from the system\'s various log files, including personal and private information. Only share bug reports with apps and people you trust.</string> diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index 610f6cfc126e..fe3021b009c0 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -69,6 +69,7 @@ import android.util.SparseArray; import android.util.TypedValue; import android.view.ActionMode; import android.view.ContextThemeWrapper; +import android.view.Display; import android.view.Gravity; import android.view.IRotationWatcher; import android.view.IWindowManager; @@ -88,6 +89,7 @@ import android.view.ViewParent; import android.view.ViewRootImpl; import android.view.ViewStub; import android.view.Window; +import android.view.WindowInsets; import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; @@ -2094,6 +2096,22 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } @Override + public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) { + if (mOutsetBottom != null) { + final DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); + int bottom = (int) mOutsetBottom.getDimension(metrics); + WindowInsets newInsets = insets.replaceSystemWindowInsets( + insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(), + insets.getSystemWindowInsetRight(), + insets.getSystemWindowInsetBottom() + bottom); + return super.dispatchApplyWindowInsets(newInsets); + } else { + return super.dispatchApplyWindowInsets(insets); + } + } + + + @Override public boolean onTouchEvent(MotionEvent event) { return onInterceptTouchEvent(event); } @@ -2924,9 +2942,17 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { a.getValue(com.android.internal.R.styleable.Window_windowFixedHeightMinor, mFixedHeightMinor); } - if (a.hasValue(com.android.internal.R.styleable.Window_windowOutsetBottom)) { - if (mOutsetBottom == null) mOutsetBottom = new TypedValue(); - a.getValue(com.android.internal.R.styleable.Window_windowOutsetBottom, mOutsetBottom); + + final WindowManager windowService = (WindowManager) getContext().getSystemService( + Context.WINDOW_SERVICE); + if (windowService != null) { + final Display display = windowService.getDefaultDisplay(); + if (display.getDisplayId() == Display.DEFAULT_DISPLAY && + a.hasValue(com.android.internal.R.styleable.Window_windowOutsetBottom)) { + if (mOutsetBottom == null) mOutsetBottom = new TypedValue(); + a.getValue(com.android.internal.R.styleable.Window_windowOutsetBottom, + mOutsetBottom); + } } final Context context = getContext(); diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 8e085839795b..aa14da136b31 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -5038,8 +5038,18 @@ public class ConnectivityService extends IConnectivityManager.Stub { setAlarm(samplingIntervalInSeconds * 1000, mSampleIntervalElapsedIntent); } + /** + * Sets a network sampling alarm. + */ void setAlarm(int timeoutInMilliseconds, PendingIntent intent) { long wakeupTime = SystemClock.elapsedRealtime() + timeoutInMilliseconds; - mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, wakeupTime, intent); + int alarmType; + if (Resources.getSystem().getBoolean( + R.bool.config_networkSamplingWakesDevice)) { + alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP; + } else { + alarmType = AlarmManager.ELAPSED_REALTIME; + } + mAlarmManager.set(alarmType, wakeupTime, intent); } } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index d09ee967fa1e..a6deed54eab3 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -340,28 +340,6 @@ public final class ActivityManagerService extends ActivityManagerNative // devices. private boolean mShowDialogs = true; - /** - * Description of a request to start a new activity, which has been held - * due to app switches being disabled. - */ - static class PendingActivityLaunch { - final ActivityRecord r; - final ActivityRecord sourceRecord; - final int startFlags; - final ActivityStack stack; - - PendingActivityLaunch(ActivityRecord _r, ActivityRecord _sourceRecord, - int _startFlags, ActivityStack _stack) { - r = _r; - sourceRecord = _sourceRecord; - startFlags = _startFlags; - stack = _stack; - } - } - - final ArrayList<PendingActivityLaunch> mPendingActivityLaunches - = new ArrayList<PendingActivityLaunch>(); - BroadcastQueue mFgBroadcastQueue; BroadcastQueue mBgBroadcastQueue; // Convenient for easy iteration over the queues. Foreground is first @@ -1074,6 +1052,9 @@ public final class ActivityManagerService extends ActivityManagerNative */ private boolean mUserIsMonkey; + /** Flag whether the device has a recents UI */ + final boolean mHasRecents; + final ServiceThread mHandlerThread; final MainHandler mHandler; @@ -1320,7 +1301,7 @@ public final class ActivityManagerService extends ActivityManagerNative } break; case DO_PENDING_ACTIVITY_LAUNCHES_MSG: { synchronized (ActivityManagerService.this) { - doPendingActivityLaunchesLocked(true); + mStackSupervisor.doPendingActivityLaunchesLocked(true); } } break; case KILL_APPLICATION_MSG: { @@ -1941,6 +1922,9 @@ public final class ActivityManagerService extends ActivityManagerNative mConfigurationSeq = mConfiguration.seq = 1; mProcessCpuTracker.init(); + mHasRecents = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_hasRecents); + mCompatModePackages = new CompatModePackages(this, systemDir, mHandler); mIntentFirewall = new IntentFirewall(new IntentFirewallInterface(), mHandler); mStackSupervisor = new ActivityStackSupervisor(this); @@ -3028,19 +3012,6 @@ public final class ActivityManagerService extends ActivityManagerNative mProcessObservers.finishBroadcast(); } - final void doPendingActivityLaunchesLocked(boolean doResume) { - final int N = mPendingActivityLaunches.size(); - if (N <= 0) { - return; - } - for (int i=0; i<N; i++) { - PendingActivityLaunch pal = mPendingActivityLaunches.get(i); - mStackSupervisor.startActivityUncheckedLocked(pal.r, pal.sourceRecord, pal.startFlags, - doResume && i == (N-1), null); - } - mPendingActivityLaunches.clear(); - } - @Override public final int startActivity(IApplicationThread caller, String callingPackage, Intent intent, String resolvedType, IBinder resultTo, @@ -8274,6 +8245,7 @@ public final class ActivityManagerService extends ActivityManagerNative } } + @Override public void stopAppSwitches() { if (checkCallingPermission(android.Manifest.permission.STOP_APP_SWITCHES) != PackageManager.PERMISSION_GRANTED) { diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index d894e4eb2f10..224946ce89c0 100755 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -754,7 +754,7 @@ final class ActivityStack { prev.task.touchActiveTime(); clearLaunchTime(prev); final ActivityRecord next = mStackSupervisor.topRunningActivityLocked(); - if (next == null || next.task != prev.task) { + if (mService.mHasRecents && (next == null || next.task != prev.task)) { prev.updateThumbnail(screenshotActivities(prev), null); } stopFullyDrawnTraceIfNeeded(); @@ -2558,18 +2558,23 @@ final class ActivityStack { return r; } - void finishAllActivitiesLocked() { + void finishAllActivitiesLocked(boolean immediately) { + boolean noActivitiesInStack = true; for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { final ArrayList<ActivityRecord> activities = mTaskHistory.get(taskNdx).mActivities; for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { final ActivityRecord r = activities.get(activityNdx); - if (r.finishing) { + noActivitiesInStack = false; + if (r.finishing && !immediately) { continue; } - Slog.d(TAG, "finishAllActivitiesLocked: finishing " + r); + Slog.d(TAG, "finishAllActivitiesLocked: finishing " + r + " immediately"); finishCurrentActivityLocked(r, FINISH_IMMEDIATELY, false); } } + if (noActivitiesInStack) { + mActivityContainer.onTaskListEmptyLocked(); + } } final boolean navigateUpToLocked(IBinder token, Intent destIntent, int resultCode, @@ -2683,6 +2688,7 @@ final class ActivityStack { // down to the max limit while they are still waiting to finish. mStackSupervisor.mFinishingActivities.remove(r); mStackSupervisor.mWaitingVisibleActivities.remove(r); + mStackSupervisor.removePendingActivityLaunchesLocked(r); // Remove any pending results. if (r.finishing && r.pendingResults != null) { diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index bca215dde51a..611b28fe3974 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -88,7 +88,6 @@ import android.view.Surface; import com.android.internal.app.HeavyWeightSwitcherActivity; import com.android.internal.os.TransferPipe; import com.android.server.LocalServices; -import com.android.server.am.ActivityManagerService.PendingActivityLaunch; import com.android.server.am.ActivityStack.ActivityState; import com.android.server.wm.WindowManagerService; @@ -234,6 +233,28 @@ public final class ActivityStackSupervisor implements DisplayListener { InputManagerInternal mInputManagerInternal; + final ArrayList<PendingActivityLaunch> mPendingActivityLaunches + = new ArrayList<PendingActivityLaunch>(); + + /** + * Description of a request to start a new activity, which has been held + * due to app switches being disabled. + */ + static class PendingActivityLaunch { + final ActivityRecord r; + final ActivityRecord sourceRecord; + final int startFlags; + final ActivityStack stack; + + PendingActivityLaunch(ActivityRecord _r, ActivityRecord _sourceRecord, + int _startFlags, ActivityStack _stack) { + r = _r; + sourceRecord = _sourceRecord; + startFlags = _startFlags; + stack = _stack; + } + } + public ActivityStackSupervisor(ActivityManagerService service) { mService = service; PowerManager pm = (PowerManager)mService.mContext.getSystemService(Context.POWER_SERVICE); @@ -1304,7 +1325,7 @@ public final class ActivityStackSupervisor implements DisplayListener { if (!mService.checkAppSwitchAllowedLocked(callingPid, callingUid, "Activity start")) { PendingActivityLaunch pal = new PendingActivityLaunch(r, sourceRecord, startFlags, stack); - mService.mPendingActivityLaunches.add(pal); + mPendingActivityLaunches.add(pal); setDismissKeyguard(false); ActivityOptions.abort(options); return ActivityManager.START_SWITCHES_CANCELED; @@ -1322,7 +1343,7 @@ public final class ActivityStackSupervisor implements DisplayListener { mService.mDidAppSwitch = true; } - mService.doPendingActivityLaunchesLocked(false); + doPendingActivityLaunchesLocked(false); err = startActivityUncheckedLocked(r, sourceRecord, startFlags, true, options); @@ -1830,6 +1851,23 @@ public final class ActivityStackSupervisor implements DisplayListener { return ActivityManager.START_SUCCESS; } + final void doPendingActivityLaunchesLocked(boolean doResume) { + while (!mPendingActivityLaunches.isEmpty()) { + PendingActivityLaunch pal = mPendingActivityLaunches.remove(0); + startActivityUncheckedLocked(pal.r, pal.sourceRecord, pal.startFlags, + doResume && mPendingActivityLaunches.isEmpty(), null); + } + } + + void removePendingActivityLaunchesLocked(ActivityRecord r) { + for (int palNdx = mPendingActivityLaunches.size() - 1; palNdx >= 0; --palNdx) { + PendingActivityLaunch pal = mPendingActivityLaunches.get(palNdx); + if (pal.r == r) { + mPendingActivityLaunches.remove(palNdx); + } + } + } + void acquireLaunchWakelock() { if (VALIDATE_WAKE_LOCK_CALLER && Binder.getCallingUid() != Process.myUid()) { throw new IllegalStateException("Calling must be system uid"); @@ -1924,10 +1962,8 @@ public final class ActivityStackSupervisor implements DisplayListener { thumbnails = null; } - if (isFrontStack(mHomeStack)) { - booting = mService.mBooting; - mService.mBooting = false; - } + booting = mService.mBooting; + mService.mBooting = false; if (mStartingUsers.size() > 0) { startingUsers = new ArrayList<UserStartedState>(mStartingUsers); @@ -2960,7 +2996,9 @@ public final class ActivityStackSupervisor implements DisplayListener { synchronized (mService) { Slog.w(TAG, "Timeout waiting for all activities in task to finish. " + msg.obj); - ((ActivityContainer) msg.obj).onTaskListEmptyLocked(); + final ActivityContainer container = (ActivityContainer) msg.obj; + container.mStack.finishAllActivitiesLocked(true); + container.onTaskListEmptyLocked(); } } break; } @@ -3054,11 +3092,11 @@ public final class ActivityStackSupervisor implements DisplayListener { final Message msg = mHandler.obtainMessage(CONTAINER_TASK_LIST_EMPTY_TIMEOUT, this); - mHandler.sendMessageDelayed(msg, 1000); + mHandler.sendMessageDelayed(msg, 2000); long origId = Binder.clearCallingIdentity(); try { - mStack.finishAllActivitiesLocked(); + mStack.finishAllActivitiesLocked(false); } finally { Binder.restoreCallingIdentity(origId); } diff --git a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java index 973fa0e9ef54..d9f47642a934 100644 --- a/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java +++ b/tools/layoutlib/bridge/src/android/text/AndroidBidi_Delegate.java @@ -40,10 +40,10 @@ public class AndroidBidi_Delegate { case 1: // Layout.DIR_REQUEST_RTL break; // No change. case -1: - dir = Bidi.LEVEL_DEFAULT_LTR; + dir = Bidi.LEVEL_DEFAULT_RTL; break; case -2: - dir = Bidi.LEVEL_DEFAULT_RTL; + dir = Bidi.LEVEL_DEFAULT_LTR; break; default: // Invalid code. Log error, assume LEVEL_DEFAULT_LTR and continue. diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index fde4e1a31a50..29e1f769289e 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -620,19 +620,16 @@ public final class BridgeContext extends Context { } if (value != null) { - if ((value.getFirst() == ResourceType.STYLE) - || (value.getFirst() == ResourceType.ATTR)) { - // look for the style in the current theme, and its parent: - ResourceValue item = mRenderResources.findItemInTheme(value.getSecond(), + if (value.getFirst() == ResourceType.STYLE) { + // look for the style in all resources: + StyleResourceValue item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes); if (item != null) { - if (item instanceof StyleResourceValue) { - if (defaultPropMap != null) { - defaultPropMap.put("style", item.getName()); - } - - defStyleValues = (StyleResourceValue)item; + if (defaultPropMap != null) { + defaultPropMap.put("style", item.getName()); } + + defStyleValues = item; } else { Bridge.getLog().error(null, String.format( diff --git a/tools/layoutlib/create/README.txt b/tools/layoutlib/create/README.txt index ef2b185b2e47..32625ae86b58 100644 --- a/tools/layoutlib/create/README.txt +++ b/tools/layoutlib/create/README.txt @@ -4,46 +4,45 @@ - Description - --------------- -Layoutlib_create generates a JAR library used by the Eclipse graphical layout editor -to perform layout. +Layoutlib_create generates a JAR library used by the Eclipse graphical layout editor to perform +layout. - Usage - --------- - ./layoutlib_create path/to/android.jar destination.jar + ./layoutlib_create destination.jar path/to/android1.jar path/to/android2.jar - Design Overview - ------------------- -Layoutlib_create uses the "android.jar" containing all the Java code used by Android -as generated by the Android build, right before the classes are converted to a DEX format. +Layoutlib_create uses a few jars from the framework containing the Java code used by Android as +generated by the Android build, right before the classes are converted to a DEX format. -The Android JAR can't be used directly in Eclipse: -- it contains references to native code (which we want to avoid in Eclipse), -- some classes need to be overridden, for example all the drawing code that is - replaced by Java 2D calls in Eclipse. -- some of the classes that need to be changed are final and/or we need access - to their private internal state. +These jars can't be used directly in Eclipse as: +- they contains references to native code (which we want to avoid in Eclipse), +- some classes need to be overridden, for example all the drawing code that is replaced by Java 2D + calls in Eclipse. +- some of the classes that need to be changed are final and/or we need access to their private + internal state. Consequently this tool: - parses the input JAR, - modifies some of the classes directly using some bytecode manipulation, - filters some packages and removes those we don't want in the output JAR, - injects some new classes, -- generates a modified JAR file that is suitable for the Android plugin - for Eclipse to perform rendering. +- generates a modified JAR file that is suitable for the Android plugin for Eclipse to perform + rendering. The ASM library is used to do the bytecode modification using its visitor pattern API. -The layoutlib_create is *NOT* generic. There is no configuration file. Instead all the -configuration is done in the main() method and the CreateInfo structure is expected to -change with the Android platform as new classes are added, changed or removed. +The layoutlib_create is *NOT* generic. There is no configuration file. Instead all the configuration +is done in the main() method and the CreateInfo structure is expected to change with the Android +platform as new classes are added, changed or removed. -The resulting JAR is used by layoutlib_bridge (a.k.a. "the bridge"), also part of the -platform, that provides all the necessary missing implementation for rendering graphics -in Eclipse. +The resulting JAR is used by layoutlib_bridge (a.k.a. "the bridge"), also part of the platform, that +provides all the necessary missing implementation for rendering graphics in Eclipse. @@ -58,97 +57,100 @@ The tool works in two phases: - Analyzer ---------- -The goal of the analyzer is to create a graph of all the classes from the input JAR -with their dependencies and then only keep the ones we want. +The goal of the analyzer is to create a graph of all the classes from the input JAR with their +dependencies and then only keep the ones we want. -To do that, the analyzer is created with a list of base classes to keep -- everything -that derives from these is kept. Currently the one such class is android.view.View: -since we want to render layouts, anything that is sort of a view needs to be kept. +To do that, the analyzer is created with a list of base classes to keep -- everything that derives +from these is kept. Currently the one such class is android.view.View: since we want to render +layouts, anything that is sort of a view needs to be kept. -The analyzer is also given a list of class names to keep in the output. -This is done using shell-like glob patterns that filter on the fully-qualified -class names, for example "android.*.R**" ("*" does not matches dots whilst "**" does, -and "." and "$" are interpreted as-is). -In practice we almost but not quite request the inclusion of full packages. +The analyzer is also given a list of class names to keep in the output. This is done using +shell-like glob patterns that filter on the fully-qualified class names, for example "android.*.R**" +("*" does not matches dots whilst "**" does, and "." and "$" are interpreted as-is). In practice we +almost but not quite request the inclusion of full packages. -The analyzer is also given a list of classes to exclude. A fake implementation of these -classes is injected by the Generator. +The analyzer is also given a list of classes to exclude. A fake implementation of these classes is +injected by the Generator. -With this information, the analyzer parses the input zip to find all the classes. -All classes deriving from the requested bases classes are kept. -All classes which name matched the glob pattern are kept. -The analysis then finds all the dependencies of the classes that are to be kept -using an ASM visitor on the class, the field types, the method types and annotations types. -Classes that belong to the current JRE are excluded. +With this information, the analyzer parses the input zip to find all the classes. All classes +deriving from the requested bases classes are kept. All classes whose name match the glob pattern +are kept. The analysis then finds all the dependencies of the classes that are to be kept using an +ASM visitor on the class, the field types, the method types and annotations types. Classes that +belong to the current JRE are excluded. -The output of the analyzer is a set of ASM ClassReader instances which are then -fed to the generator. +The output of the analyzer is a set of ASM ClassReader instances which are then fed to the +generator. - Generator ----------- -The generator is constructed from a CreateInfo struct that acts as a config file -and lists: -- the classes to inject in the output JAR -- these classes are directly implemented - in layoutlib_create and will be used to interface with the renderer in Eclipse. +The generator is constructed from a CreateInfo struct that acts as a config file and lists: +- the classes to inject in the output JAR -- these classes are directly implemented in + layoutlib_create and will be used to interface with the renderer in Eclipse. - specific methods to override (see method stubs details below). - specific methods for which to delegate calls. - specific methods to remove based on their return type. - specific classes to rename. - specific classes to refactor. -Each of these are specific strategies we use to be able to modify the Android code -to fit within the Eclipse renderer. These strategies are explained beow. +Each of these are specific strategies we use to be able to modify the Android code to fit within the +Eclipse renderer. These strategies are explained beow. -The core method of the generator is transform(): it takes an input ASM ClassReader -and modifies it to produce a byte array suitable for the final JAR file. +The core method of the generator is transform(): it takes an input ASM ClassReader and modifies it +to produce a byte array suitable for the final JAR file. The first step of the transformation is to implement the method delegates. -The TransformClassAdapter is then used to process the potentially renamed class. -All protected or private classes are market as public. -All classes are made non-final. -Interfaces are left as-is. +The TransformClassAdapter is then used to process the potentially renamed class. All protected or +private classes are market as public. All classes are made non-final. Interfaces are left as-is. -If a method has a return type that must be erased, the whole method is skipped. -Methods are also changed from protected/private to public. -The code of the methods is then kept as-is, except for native methods which are -replaced by a stub. Methods that are to be overridden are also replaced by a stub. +If a method has a return type that must be erased, the whole method is skipped. Methods are also +changed from protected/private to public. The code of the methods is then kept as-is, except for +native methods which are replaced by a stub. Methods that are to be overridden are also replaced by +a stub. Finally fields are also visited and changed from protected/private to public. -The next step of the transformation is changing the name of the class in case -we requested the class to be renamed. This uses the RenameClassAdapter to also rename -all inner classes and references in methods and types. Note that other classes are -not transformed and keep referencing the original name. - -The class is then fed to RefactorClassAdapter which is like RenameClassAdapter but -updates the references in all classes. This is used to update the references of classes -in the java package that were added in the Dalvik VM but are not a part of the standard -JVM. The existing classes are modified to update all references to these non-standard -classes. An alternate implementation of these (com.android.tools.layoutlib.java.*) is -injected. - -The ClassAdapters are chained together to achieve the desired output. (Look at section -2.2.7 Transformation chains in the asm user guide, link in the References.) The order of -execution of these is: +The next step of the transformation is changing the name of the class in case we requested the class +to be renamed. This uses the RenameClassAdapter to also rename all inner classes and references in +methods and types. Note that other classes are not transformed and keep referencing the original +name. + +The class is then fed to RefactorClassAdapter which is like RenameClassAdapter but updates the +references in all classes. This is used to update the references of classes in the java package that +were added in the Dalvik VM but are not a part of the Desktop VM. The existing classes are +modified to update all references to these non-desktop classes. An alternate implementation of +these (com.android.tools.layoutlib.java.*) is injected. + +RenameClassAdapter and RefactorClassAdapter both inherit from AbstractClassAdapter which changes the +class version (version of the JDK used to compile the class) to 50 (corresponding to Java 6), if the +class was originally compiled with Java 7 (version 51). This is because we don't currently generate +the StackMapTable correctly and Java 7 VM enforces that classes with version greater than 51 have +valid StackMapTable. As a side benefit of this, we can continue to support Java 6 because Java 7 on +Mac has horrible font rendering support. + +ReplaceMethodCallsAdapter replaces calls to certain methods. Currently, it only rewrites calls to +java.lang.System.arraycopy([CI[CII)V, which is not part of the Desktop VM to call the more general +method java.lang.System.arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V. + +The ClassAdapters are chained together to achieve the desired output. (Look at section 2.2.7 +Transformation chains in the asm user guide, link in the References.) The order of execution of +these is: ClassReader -> [DelegateClassAdapter] -> TransformClassAdapter -> [RenameClassAdapter] -> -RefactorClassAdapter -> ClassWriter +RefactorClassAdapter -> [ReplaceMethodCallsAdapter] -> ClassWriter - Method stubs -------------- -As indicated above, all native and overridden methods are replaced by a stub. -We don't have the code to replace with in layoutlib_create. -Instead the StubMethodAdapter replaces the code of the method by a call to -OverrideMethod.invokeX(). When using the final JAR, the bridge can register +As indicated above, all native and overridden methods are replaced by a stub. We don't have the +code to replace with in layoutlib_create. Instead the StubMethodAdapter replaces the code of the +method by a call to OverrideMethod.invokeX(). When using the final JAR, the bridge can register listeners from these overridden method calls based on the method signatures. -The listeners are currently pretty basic: we only pass the signature of the -method being called, its caller object and a flag indicating whether the -method was native. We do not currently provide the parameters. The listener -can however specify the return value of the overridden method. +The listeners are currently pretty basic: we only pass the signature of the method being called, its +caller object and a flag indicating whether the method was native. We do not currently provide the +parameters. The listener can however specify the return value of the overridden method. This strategy is now obsolete and replaced by the method delegates. @@ -156,97 +158,89 @@ This strategy is now obsolete and replaced by the method delegates. - Strategies ------------ -We currently have 6 strategies to deal with overriding the rendering code -and make it run in Eclipse. Most of these strategies are implemented hand-in-hand -by the bridge (which runs in Eclipse) and the generator. +We currently have 6 strategies to deal with overriding the rendering code and make it run in +Eclipse. Most of these strategies are implemented hand-in-hand by the bridge (which runs in Eclipse) +and the generator. 1- Class Injection This is the easiest: we currently inject the following classes: -- OverrideMethod and its associated MethodListener and MethodAdapter are used - to intercept calls to some specific methods that are stubbed out and change - their return value. -- CreateInfo class, which configured the generator. Not used yet, but could - in theory help us track what the generator changed. -- AutoCloseable and Objects are part of Java 7. To enable us to still run on Java 6, new - classes are injected. The implementation for these classes has been taken from - Android's libcore (platform/libcore/luni/src/main/java/java/...). -- Charsets, IntegralToString and UnsafeByteSequence are not part of the standard JAVA VM. - They are added to the Dalvik VM for performance reasons. An implementation that is very - close to the original (which is at platform/libcore/luni/src/main/java/...) is injected. - Since these classees were in part of the java package, where we can't inject classes, - all references to these have been updated (See strategy 4- Refactoring Classes). +- OverrideMethod and its associated MethodListener and MethodAdapter are used to intercept calls to + some specific methods that are stubbed out and change their return value. +- CreateInfo class, which configured the generator. Not used yet, but could in theory help us track + what the generator changed. +- AutoCloseable and Objects are part of Java 7. To enable us to still run on Java 6, new classes are + injected. The implementation for these classes has been taken from Android's libcore + (platform/libcore/luni/src/main/java/java/...). +- Charsets, IntegralToString and UnsafeByteSequence are not part of the Desktop VM. They are + added to the Dalvik VM for performance reasons. An implementation that is very close to the + original (which is at platform/libcore/luni/src/main/java/...) is injected. Since these classees + were in part of the java package, where we can't inject classes, all references to these have been + updated (See strategy 4- Refactoring Classes). 2- Overriding methods -As explained earlier, the creator doesn't have any replacement code for -methods to override. Instead it removes the original code and replaces it -by a call to a specific OveriddeMethod.invokeX(). The bridge then registers -a listener on the method signature and can provide an implementation. +As explained earlier, the creator doesn't have any replacement code for methods to override. Instead +it removes the original code and replaces it by a call to a specific OveriddeMethod.invokeX(). The +bridge then registers a listener on the method signature and can provide an implementation. -This strategy is now obsolete and replaced by the method delegates. -See strategy 5 below. +This strategy is now obsolete and replaced by the method delegates (See strategy 6- Method +Delegates). 3- Renaming classes -This simply changes the name of a class in its definition, as well as all its -references in internal inner classes and methods. -Calls from other classes are not modified -- they keep referencing the original -class name. This allows the bridge to literally replace an implementation. +This simply changes the name of a class in its definition, as well as all its references in internal +inner classes and methods. Calls from other classes are not modified -- they keep referencing the +original class name. This allows the bridge to literally replace an implementation. -An example will make this easier: android.graphics.Paint is the main drawing -class that we need to replace. To do so, the generator renames Paint to _original_Paint. -Later the bridge provides its own replacement version of Paint which will be used -by the rest of the Android stack. The replacement version of Paint can still use -(either by inheritance or delegation) all the original non-native code of _original_Paint -if it so desires. +An example will make this easier: android.graphics.Paint is the main drawing class that we need to +replace. To do so, the generator renames Paint to _original_Paint. Later the bridge provides its own +replacement version of Paint which will be used by the rest of the Android stack. The replacement +version of Paint can still use (either by inheritance or delegation) all the original non-native +code of _original_Paint if it so desires. -Some of the Android classes are basically wrappers over native objects and since -we don't have the native code in Eclipse, we need to provide a full alternate -implementation. Sub-classing doesn't work as some native methods are static and -we don't control object creation. +Some of the Android classes are basically wrappers over native objects and since we don't have the +native code in Eclipse, we need to provide a full alternate implementation. Sub-classing doesn't +work as some native methods are static and we don't control object creation. This won't rename/replace the inner static methods of a given class. 4- Refactoring classes -This is very similar to the Renaming classes except that it also updates the reference in -all classes. This is done for classes which are added to the Dalvik VM for performance -reasons but are not present in the Standard Java VM. An implementation for these classes -is also injected. +This is very similar to the Renaming classes except that it also updates the reference in all +classes. This is done for classes which are added to the Dalvik VM for performance reasons but are +not present in the Desktop VM. An implementation for these classes is also injected. 5- Method erasure based on return type -This is mostly an implementation detail of the bridge: in the Paint class -mentioned above, some inner static classes are used to pass around -attributes (e.g. FontMetrics, or the Style enum) and all the original implementation -is native. +This is mostly an implementation detail of the bridge: in the Paint class mentioned above, some +inner static classes are used to pass around attributes (e.g. FontMetrics, or the Style enum) and +all the original implementation is native. -In this case we have a strategy that tells the generator that anything returning, for -example, the inner class Paint$Style in the Paint class should be discarded and the -bridge will provide its own implementation. +In this case we have a strategy that tells the generator that anything returning, for example, the +inner class Paint$Style in the Paint class should be discarded and the bridge will provide its own +implementation. 6- Method Delegates -This strategy is used to override method implementations. -Given a method SomeClass.MethodName(), 1 or 2 methods are generated: -a- A copy of the original method named SomeClass.MethodName_Original(). - The content is the original method as-is from the reader. - This step is omitted if the method is native, since it has no Java implementation. -b- A brand new implementation of SomeClass.MethodName() which calls to a - non-existing static method named SomeClass_Delegate.MethodName(). - The implementation of this 'delegate' method is done in layoutlib_brigde. - -The delegate method is a static method. -If the original method is non-static, the delegate method receives the original 'this' -as its first argument. If the original method is an inner non-static method, it also -receives the inner 'this' as the second argument. +This strategy is used to override method implementations. Given a method SomeClass.MethodName(), 1 +or 2 methods are generated: +a- A copy of the original method named SomeClass.MethodName_Original(). The content is the original +method as-is from the reader. This step is omitted if the method is native, since it has no Java +implementation. +b- A brand new implementation of SomeClass.MethodName() which calls to a non-existing static method +named SomeClass_Delegate.MethodName(). The implementation of this 'delegate' method is done in +layoutlib_brigde. + +The delegate method is a static method. If the original method is non-static, the delegate method +receives the original 'this' as its first argument. If the original method is an inner non-static +method, it also receives the inner 'this' as the second argument. diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java index 3e75c9ebc477..8373e300f9b5 100644 --- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java +++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmAnalyzer.java @@ -32,6 +32,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Enumeration; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -63,7 +64,8 @@ public class AsmAnalyzer { private final Set<String> mExcludedClasses; /** Glob patterns of files to keep as is. */ private final String[] mIncludeFileGlobs; - /** Copy these files into the output as is. */ + /** Internal names of classes that contain method calls that need to be rewritten. */ + private final Set<String> mReplaceMethodCallClasses = new HashSet<String>(); /** * Creates a new analyzer. @@ -109,6 +111,7 @@ public class AsmAnalyzer { mGen.setKeep(found); mGen.setDeps(deps); mGen.setCopyFiles(filesFound); + mGen.setRewriteMethodCallClasses(mReplaceMethodCallClasses); } } @@ -118,7 +121,7 @@ public class AsmAnalyzer { * * @param classes The map of class name => ASM ClassReader. Class names are * in the form "android.view.View". - * @param fileFound The map of file name => InputStream. The file name is + * @param filesFound The map of file name => InputStream. The file name is * in the form "android/data/dataFile". */ void parseZip(List<String> jarPathList, Map<String, ClassReader> classes, @@ -143,8 +146,8 @@ public class AsmAnalyzer { String className = classReaderToClassName(cr); classes.put(className, cr); } else { - for (int i = 0; i < includeFilePatterns.length; ++i) { - if (includeFilePatterns[i].matcher(entry.getName()).matches()) { + for (Pattern includeFilePattern : includeFilePatterns) { + if (includeFilePattern.matcher(entry.getName()).matches()) { filesFound.put(entry.getName(), zip.getInputStream(entry)); break; } @@ -321,6 +324,7 @@ public class AsmAnalyzer { deps, new_deps); for (ClassReader cr : inOutKeepClasses.values()) { + visitor.setClassName(cr.getClassName()); cr.accept(visitor, 0 /* flags */); } @@ -367,6 +371,8 @@ public class AsmAnalyzer { /** New classes to keep as-is found by this visitor. */ private final Map<String, ClassReader> mOutKeep; + private String mClassName; + /** * Creates a new visitor that will find all the dependencies for the visited class. * Types which are already in the zipClasses, keepClasses or inDeps are not marked. @@ -390,6 +396,10 @@ public class AsmAnalyzer { mOutDeps = outDeps; } + private void setClassName(String className) { + mClassName = className; + } + /** * Considers the given class name as a dependency. * If it does, add to the mOutDeps map. @@ -429,7 +439,7 @@ public class AsmAnalyzer { // - android classes are added to dependencies // - non-android classes are added to the list of classes to keep as-is (they don't need // to be stubbed). - if (className.indexOf("android") >= 0) { // TODO make configurable + if (className.contains("android")) { // TODO make configurable mOutDeps.put(className, cr); } else { mOutKeep.put(className, cr); @@ -594,7 +604,7 @@ public class AsmAnalyzer { // type and exceptions do not use generic types. considerSignature(signature); - return new MyMethodVisitor(); + return new MyMethodVisitor(mClassName); } @Override @@ -614,8 +624,11 @@ public class AsmAnalyzer { private class MyMethodVisitor extends MethodVisitor { - public MyMethodVisitor() { + private String mOwnerClass; + + public MyMethodVisitor(String ownerClass) { super(Opcodes.ASM4); + mOwnerClass = ownerClass; } @@ -709,6 +722,13 @@ public class AsmAnalyzer { considerName(owner); // desc is the method's descriptor (see Type). considerDesc(desc); + + + // Check if method is java.lang.System.arrayCopy([CI[CII)V + if (owner.equals("java/lang/System") && name.equals("arraycopy") + && desc.equals("([CI[CII)V")) { + mReplaceMethodCallClasses.add(mOwnerClass); + } } // instruction multianewarray, whatever that is diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java index 207d8ae7b2d9..c96a1434b145 100644 --- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java +++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java @@ -21,7 +21,6 @@ import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -55,6 +54,8 @@ public class AsmGenerator { private Map<String, ClassReader> mDeps; /** All files that are to be copied as-is. */ private Map<String, InputStream> mCopyFiles; + /** All classes where certain method calls need to be rewritten. */ + private Set<String> mReplaceMethodCallsClasses; /** Counter of number of classes renamed during transform. */ private int mRenameCount; /** FQCN Names of the classes to rename: map old-FQCN => new-FQCN */ @@ -133,7 +134,7 @@ public class AsmGenerator { assert i + 1 < n; String oldFqcn = binaryToInternalClassName(refactorClasses[i]); String newFqcn = binaryToInternalClassName(refactorClasses[i + 1]); - mRefactorClasses.put(oldFqcn, newFqcn);; + mRefactorClasses.put(oldFqcn, newFqcn); } // create the map of renamed class -> return type of method to delete. @@ -203,23 +204,12 @@ public class AsmGenerator { mCopyFiles = copyFiles; } - /** Gets the map of classes to output as-is, except if they have native methods */ - public Map<String, ClassReader> getKeep() { - return mKeep; - } - - /** Gets the map of dependencies that must be completely stubbed */ - public Map<String, ClassReader> getDeps() { - return mDeps; - } - - /** Gets the map of files to output as-is. */ - public Map<String, InputStream> getCopyFiles() { - return mCopyFiles; + public void setRewriteMethodCallClasses(Set<String> rewriteMethodCallClasses) { + mReplaceMethodCallsClasses = rewriteMethodCallClasses; } /** Generates the final JAR */ - public void generate() throws FileNotFoundException, IOException { + public void generate() throws IOException { TreeMap<String, byte[]> all = new TreeMap<String, byte[]>(); for (Class<?> clazz : mInjectClasses) { @@ -329,14 +319,14 @@ public class AsmGenerator { String newName = transformName(className); // transformName returns its input argument if there's no need to rename the class - if (newName != className) { + if (!newName.equals(className)) { mRenameCount++; // This class is being renamed, so remove it from the list of classes not renamed. mClassesNotRenamed.remove(className); } mLog.debug("Transform %s%s%s%s", className, - newName == className ? "" : " (renamed to " + newName + ")", + newName.equals(className) ? "" : " (renamed to " + newName + ")", hasNativeMethods ? " -- has natives" : "", stubNativesOnly ? " -- stub natives only" : ""); @@ -344,8 +334,14 @@ public class AsmGenerator { // original class reader. ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); - ClassVisitor cv = new RefactorClassAdapter(cw, mRefactorClasses); - if (newName != className) { + ClassVisitor cv = cw; + + if (mReplaceMethodCallsClasses.contains(className)) { + cv = new ReplaceMethodCallsAdapter(cv); + } + + cv = new RefactorClassAdapter(cv, mRefactorClasses); + if (!newName.equals(className)) { cv = new RenameClassAdapter(cv, className, newName); } diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java index 2e952fcff4c2..ad106569a0a7 100644 --- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java +++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/Main.java @@ -193,8 +193,7 @@ public class Main { private static boolean processArgs(Log log, String[] args, ArrayList<String> osJarPath, String[] osDestJar) { boolean needs_dest = true; - for (int i = 0; i < args.length; i++) { - String s = args[i]; + for (String s : args) { if (s.equals("-v")) { log.setVerbose(true); } else if (s.equals("-p")) { @@ -212,7 +211,7 @@ public class Main { osJarPath.add(s); } } else { - log.error("Unknow argument: %s", s); + log.error("Unknown argument: %s", s); return false; } } diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/ReplaceMethodCallsAdapter.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/ReplaceMethodCallsAdapter.java new file mode 100644 index 000000000000..e57eba107999 --- /dev/null +++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/ReplaceMethodCallsAdapter.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.tools.layoutlib.create; + +import org.objectweb.asm.ClassVisitor; +import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Opcodes; + +/** + * Replaces calls to certain methods that do not exist in the Desktop VM. + */ +public class ReplaceMethodCallsAdapter extends ClassVisitor { + public ReplaceMethodCallsAdapter(ClassVisitor cv) { + super(Opcodes.ASM4, cv); + } + + @Override + public MethodVisitor visitMethod(int access, String name, String desc, String signature, + String[] exceptions) { + return new MyMethodVisitor(super.visitMethod(access, name, desc, signature, exceptions)); + } + + private class MyMethodVisitor extends MethodVisitor { + + public MyMethodVisitor(MethodVisitor mv) { + super(Opcodes.ASM4, mv); + } + + @Override + public void visitMethodInsn(int opcode, String owner, String name, String desc) { + // Check if method is java.lang.System.arrayCopy([CI[CII)V + if (owner.equals("java/lang/System") && name.equals("arraycopy") + && desc.equals("([CI[CII)V")) { + desc = "(Ljava/lang/Object;ILjava/lang/Object;II)V"; + } + super.visitMethodInsn(opcode, owner, name, desc); + } + } +} |