問題タブ [android-firmware]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - ファームウェア更新モードで libusb を使用して Nexus-4 と通信する
ファームウェア更新モードで Nexus-4 ブートローダーと通信するための簡単なプログラムを開発しようとしています。Nexus -4 には 3 つの USB インターフェイスがあります。インターフェイス 1 には 2 つの 2 エンドポイント(2 と 131)があります。
エンドポイント 2 を介してコマンド get-device-info を記述し、エンドポイント 131 で応答をリッスンするプログラムを作成しました。(インターフェイスとエンドポイントのすべての順列を試しました!)。
プログラムはコマンドをデバイスに正常に書き込みますが、デバイスから何も読み取られません。
コマンドフォーマット: Flag(0x7e): CMD: データ(可変長): CRC-16: Flag(0x7e)
デバイス情報取得コマンド: 0x7e 0x00 0x78 0xf0 0x7e
以下がプログラムです。
プログラムはコマンドを電話に正常に送信できますが、電話からの応答を受信できません。プログラムを実行すると、次の出力が得られます。
リスト内の 10 台のデバイス
デバイスが開かれました
カーネル ドライバ アクティブ
カーネル ドライバが切り離されました!
要求されたインターフェイス
送信するデータ -> ~
データを書き込んでいます...
書き込み成功!
デバイスからの読み取りを待機しています!
バルク転送によるデータ受信エラー -7
応答が得られない理由は、コマンド構造が間違っているためなのか、それともプログラムの実装が原因なのかわかりません。
android - システム キーを使用してアプリに署名していますが、システム権限を取得できません
システム キーを使用して、アプリのシステム権限を取得したいと考えています。/build/target/product/security/から testkey.x509.pemとtestkey.pk8を使用してアプリに署名しました(フォルダーに他のキーはありません) が、ランタイム チェックでアプリがシステム アプリではないことが示されます。
チェックのために、次のコードを使用します
私は何を間違っていますか?
android - アプリケーション更新後の BuildConfig.VERSION_CODE と PackageManager.getPackageInfo() の不一致
私のアプリケーション ユーザーに (Crashlytics/Google Analytics レポートを介して) 奇妙な状況が頻繁に発生しているように見えることを発見しましたが、これは再現できませんでした。
パッケージが更新された後 -PackageManager
クラスによって返されるバージョン コードは、によって返されるものとは異なりBuildConfig.VERSION_CODE
ます。
簡単にするために、ロギング、官僚主義、およびカプセル化のほとんどを割愛しましたが、結果は次のようになります。
packageManagerVersionCode
右の更新版に相当します。BuildConfig.VERSION_CODE
更新前のアプリのバージョンと同じです。
言及する必要がある重要な点:
- 私のアプリケーションは、デバイス ファームウェアにシステム アプリとしてプリロードされています。
- 私のアプリケーションはそれ自体を更新しています(必要な権限があります..)
現在のところ、元の APK は system/priv-app パーティションにインストールされており、アップデートはシステム パーティションにインストールされていないため、アップデート後に元のプリロード アプリのプロセスが終了する時点があると想定しています。ある面ではまだ生きています。この仮定を確認する方法はなく、そのような動作が発生する可能性があるかどうかについての公式の参照も見つかりませんでした。
なぜこのバージョン コードの不一致を気にする必要があるのか、また、最初にこの検証を行うアイデアをどのように思いついたのか疑問に思われるかもしれません: すべては、新しいバージョンでの名前の1 つを変更した後に、実稼働ユーザーに対して発生したクラッシュからBroadcastReceiver
始まりました。 (リファクタリングの目的から..)マニフェストに登録されています。
レシーバーの名前を元のプリロードされたバージョンで呼び出された元の名前に再度変更すると、クラッシュが発生しなくなりました。そのため、このバージョン コードの不一致と関係があると思われます。
私の質問は次のとおりです。
このバージョンの不一致はなぜ発生するのですか?
それを防ぐために何かできることはありますか?または少なくとも、プリロードされた元のアプリのコンポーネントがアクティブにならないようにするためですか?
なぜそれが起こっているのかについての私の仮定は正しいですか?
java - すべてのテザリング データでインターネットを無効にする方法
Web ページをホストする Android デバイスにアプリケーションがあります。Android ホットスポットを介してこれを実行するデバイスに接続すると、デフォルトの IP を使用してページを表示できます。
このページはインターネットからデータを取得しています。そのため、Android デバイスはインターネットにアクセスできる必要があります。ただし、デバイスのホットスポットに接続するユーザーがインターネットにアクセスできるようにしたくありません。Androidホットスポットと発信データ接続の間のデータブリッジを切断する最良の方法は何だろうと思っていました。(私は現在イーサネットを使用しています。)
これは元に戻せないはずなので、ファームウェア自体のソースファイルを編集できるソリューションを希望します。ソースとルートを完全に制御できます。
前もって感謝します。