Android の開発プロセスでは、さまざまな問題に遭遇することがあります。中でもOTAアップグレード後の問題は複数の要因が絡み合っているため特に厄介で、同じファームウェアのOTAだけでも命を疑うような問題が発生することがあります。この記事では、OTA アップグレード後の入力メソッドの例外という特定の問題を調査し、考えられる原因と解決策を示します。
同じバージョンのファームウェアの場合、ワイヤー ブラシと OTA アップグレード後に異常なバグがいくつか発生します。この問題は昔、録音する習慣がなかった頃に遭遇したのですが、今回また遭遇したので、すぐに原因を思い出して解決しました。
-----0825補足開始-----
-
プリセットアプリケーションの消滅:
Android.mk
ファイルと設定を使用してLOCAL_MODULE_PATH := $(TARGET_OUT)/preinstall
アプリケーションをpreinstall
ディレクトリにプリセットすると、OTA アップグレード後にこれらのアプリケーションが失われる可能性があることがわかりました。- 設定すると
LOCAL_PRIVILEGED_MODULE := true
(system/priv-app にプロビジョニングすると)、これらのアプリは OTA アップグレード後もそのままの状態を維持できます。
理由と推測:
preinstall
考えられる原因は、OTA アップグレード スクリプトがディレクトリ内のアプリケーションを正しく処理せず、アップグレード プロセス中にアプリケーションが上書きまたは削除されることです。- これを使用すると、
LOCAL_PRIVILEGED_MODULE
OTA アップグレードの影響を受けないよう、アプリケーションに対してより高い権限または保護レベルが提供される場合があります。
-
ラテン語入力メソッドが失敗します:
system/app
ラテン語入力メソッドはディレクトリにプリインストールされていますが、OTA アップグレード後は使用できなくなります。- 具体的な症状としては、
/data/data/
対応するアプリケーション ディレクトリがディレクトリ内に存在しないことが挙げられます。
理由と推測:
- これは、OTA アップグレード プロセス中に一部のアプリケーション データが消去され、ラテン入力メソッドで必要なデータ ファイルが失われたことが原因である可能性があります (実際には/data/data/ ディレクトリに com.android.inputmethod.latin はありません)。
- もう 1 つの可能性としては、OTA アップグレード後にラテン入力メソッドがデータ ディレクトリにアクセスできなくなるアクセス許可の問題が考えられます。
また、入力メソッドとアプリケーションが使用できない理由は、Quanzhi プラットフォーム システムのアプリケーションのプリインストールと /system/app 部分にラグがあり、その後プロセスが完了するのではないかと推測されます。インストールが完了していません/完了していますか? 現在の分析は次のとおりです。後で分析する時間があります。進捗状況は追加されます
-----0825補足終了-----
問題の説明
OTA アップグレード後、入力方法が有効にならないことがわかりました。具体的なパフォーマンスは次のとおりです。
settings get secure default_input_method
コマンドを使用すると空が返されます。- Android 設定アプリケーションでは、プリセット入力方法は入力方法オプションに表示されません。
/data/data/
ディレクトリ内の入力方式データを確認できますが、デフォルトの入力方式を手動で設定しようとしても効果はありません。
比較解析
さらなるテストと比較により、次のことが判明しました。
- ワイヤーフラッシュに同じファームウェアを使用する場合、入力方法は正常に機能します。
- ただし、OTA 経由でアップグレードすると、上記の入力メソッド例外が発生します。
この違いは、問題が OTA アップグレード プロセスの特定の手順または設定に関連している可能性があることを示しています。
理由の推測
OTA アップグレードと有線フラッシュの大きな違いの 1 つは、OTA アップグレードでは通常パーティションがクリアされないのに対し/data
、有線フラッシュではパーティションがクリアされることです。したがって、問題の原因は次のとおりであると推測できます。
/data
OTA アップグレードではパーティションがクリアされないため、OTA アップグレード後に一部の設定または構成が不整合になったり、失われたりする原因となります。- デフォルトの入力方式構成は
/data
パーティションに保存されます。OTA アップグレード後、システムはこれらの構成を正しく読み取ったり更新したりできない可能性があります。
解決
この問題を解決するには、/data/system/users/0/settings_secure.xml
コンピュータの電源を入れるたびにファイルを再ロードすることを検討してください。このファイルには、デフォルトの入力方法を含むユーザーのセキュリティ設定が保存されます。このようにして、コンピューターの電源を入れるたびに、デフォルトの入力方式設定が正しく更新されるようにすることができます。
具体的な実装方法は、SettingsProvider.java
コンピュータの電源を入れるたびにファイルが再ロードされるようにファイルを変更することですsettings_secure.xml
。
+++ b/android/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -1858,9 +1858,9 @@ public class SettingsProvider extends ContentProvider {
// Every user has secure settings and if no file we need to migrate.
final int secureKey = makeKey(SETTINGS_TYPE_SECURE, userId);
File secureFile = getSettingsFile(secureKey);
- if (secureFile.exists()) {
+ /*if (secureFile.exists()) {
return;
- }
+ }*/
要約する
OTA アップグレードは、複数のシステム コンポーネントと設定が関係する複雑なプロセスです。OTA アップグレード後に問題が発生した場合は、問題の原因を特定し、適切な解決策を見つけるために、詳細な分析と比較テストが必要です。/data
この記事で説明した異常な入力方式の問題はほんの一例であり、OTA アップグレードを実行する場合、システムの安定性と機能の完全性を確保するためにパーティション処理に特別な注意を払う必要があることを思い出させます。この方法は最適ではありませんが、良い変更方法です。この変更方法が他のシステム設定に異常を引き起こす可能性も否定できません (ただし、私はそのような異常に遭遇したことはありません ^^)。