Windows 7 x64 / x86で熊手を踏む
マニュアルを読んだ後、Nexus 4とAndroid SDKのKitkatイメージをすべてのツールで引き出しました。 しかし、驚いたことに、まったく予期していなかった場所で問題が発生しました。Windows7 x64のドライバーは検出されませんでした。 最初に、Android SDKからドライバーパッケージをインストールしようとしました(インストール用のGoogle USBドライバーパッケージに注意してください)。 認識されません。 次に、ここからdeveloper.android.com/sdk/win-usb.htmlからドライバーパッケージのみを取得しようとしました 。 結果は同じです。 良心をクリアするために、ここからw3bsit3-dns.com/forum/dl/post/3529212/Universal_Naked_Driver_0.72.zipからUniversal Naked Driver 0.72をインストールしました 。 32ビットシステムでは、結果は同様です。
携帯電話は、フォワーダーを介してGoogle Playで前例のない寛大さを呼びかけている間に直接購入されました。 8 Gbバージョンの携帯電話を2台購入し(大量のマルチメディアを保存する必要はありません)、弟用に16 Gbバージョンを購入しました。 彼の電話がシステムですぐに特定されたとき、私は非常に驚いた。 すぐに、デバイス識別子についての考えが生まれました。
USB識別子について一言
各USBデバイスには、固有のベンダーIDがあります。 これらのID番号は、非営利団体であるUSB Implementers Forum(USB-IF)によって発行されます。 ベンダー内では、デバイスはプロダクトIDで細分化されます。 NexusのメーカーはGoogleであるため、すべてのデバイスのVIDは18d1です。 PIDはもう少し複雑であることが判明しました。 オペレーティングシステムが焦点を当てているandroid_winusb.infの内部を見ると、このドライバーが対象としているデバイスのリストが表示されます。
;Google Nexus One %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0D02&MI_01 %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E11 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E12&MI_01 ;Google Nexus S %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E21 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E22&MI_01 %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_4E23 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E24&MI_01 ;Google Nexus 7 %SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E40 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E42&MI_01 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E44&MI_01 ;Google Nexus Q %SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_2C10 %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_2C11 ;Google Nexus (generic) %SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE2&MI_01 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE4&MI_02 %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4EE6&MI_01
Nexus 4は言及されていませんが、16 GbバージョンはGoogle Nexus(汎用)の識別番号と一致します。 しかし、私の電話ではすべてが間違っていました。 VIDはd001であったため、システムはドライバーを認識できませんでした。
Linuxの新しいレーキを探しています
この後、カーネルにはすでに電話に必要なドライバーが含まれているため、Linux環境でファームウェアの更新を試行するという非論理的な決定が行われました。 カーネルをより新しくするためにKubuntu 13.10をデプロイしました。 さらに、すべて以下の指示に従ってください:
1)電話の[開発者向け]セクションで、USBデバッグを有効にします。
2)PIDの決定:デバイスのVID
meklon@meklon-kubuntu:~$ lsusb Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 002: ID 18d1:d001 Google Inc. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 003: ID 09da:9033 A4 Tech Co., Ltd X-718BK Optical Mouse Bus 004 Device 005: ID 046d:c225 Logitech, Inc. G11/G15 Keyboard / G keys Bus 004 Device 004: ID 046d:c221 Logitech, Inc. G11/G15 Keyboard / Keyboard Bus 004 Device 002: ID 046d:c223 Logitech, Inc. G11/G15 Keyboard / USB Hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
この特定のフラグメントに関心があります-18d1:d001 Google Inc.
2)Linuxはそのようなデバイスへのアクセスを許可しません。 まず、udevのルールを作成する必要があります( ru.wikipedia.org/wiki/Udevシステムの詳細)。
Nexusのルールファイルを作成します。
sudo nano /etc/udev/rules.d/51-android.rules
次の行を貼り付けます。
#ネクサス4
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0660", GROUP="androiddev", SYMLINK+="android%n"
3)属性を変更します。
chmod a+r /etc/udev/rules.d/51-android.rules
4)udevを再起動します:
sudo service udev restart
5)androiddevグループを作成し、現在のユーザーを追加します。
sudo groupadd androiddev && sudo useradd -G androiddev username
これは、デバイスの記録とパフォーマンスへのフルアクセスに必要です。
6)作業に必要なツールを追加します(電話で開発する予定がない場合、完全なSDKは必要ありません)
sudo add-apt-repository ppa:nilarimogard/webupd8 sudo apt-get update sudo apt-get install android-tools-adb android-tools-fastboot
7)通常の操作を開始するには、バージョン4.2以降、このPCがデバッグに信頼されていることを電話機自体で確認する必要があるようです。 adbの使用を開始するときは、電話でこの質問に積極的に答えることを忘れないでください。 デバイスの可視性を確認します。
# adb devices List of devices attached xxxxxxxxxxxxxxx device
すべてがうまくいった。 それ以外の場合(古いadbバージョン、信頼できないPCなど)、次のようになります。
# adb devices List of devices attached xxxxxxxxxxxxxxx offline
8)電話をfastbootモードで再起動します。 Nexus 4では、これはパワーと一緒に音の増減を同時に押すことで実現されます。 adb restart fastbootコンソールから送信することもできます。 接続されているデバイスのリストをlsusbで確認し、製品IDが変更されていることを確認します! したがって、再び/etc/udev/rules.d/51-android.rulesを編集する必要があります。 私の場合、4ee0でした。
#Nexus 4 SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0660", GROUP="androiddev", SYMLINK+="android%n" SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0660", GROUP="androiddev", SYMLINK+="android%n"
udevを再起動します。
9)fastbootモードでは、adbは機能しないため、接続されているデバイスのリストを次のように確認します。
fastboot devices
デバイスの代わりにデバイスの待機がハングしている場合は、udev configでベンダーID /製品IDを正しく選択する必要があります。
10) developers.google.com/android/nexus/imagesから最新の画像をダウンロードします
開梱します。 私の場合、次のファイルは次のようになります。
bootloader-mako-makoz20i.img
radio-mako-m9615a-cefwmazm-2.0.1700.84.img
image-occam-krt16o.zip
flash-all.sh
11)次に、2つの方法があります。 1つ目は、システムワイプと完全なファームウェアでブートローダーのロックを解除することです。 2番目は、既存のシステムの更新です。
最初のオプション:
1)電話はfastbootモードです。
2)電話がファストブートデバイスとして認識されることを確認しました
3)ブートローダーのロックを解除します。
fastboot oem unlock
電話でデータワイプに同意します
4)フルファームウェア。 既製のflash-all.shスクリプトを実行する最も簡単な方法
sudo sh flash-all.sh
5)すべてがうまくいった場合-電話は最終的に新しいバージョンで初期状態をオンにします。
2番目のオプション:
1)fastbootからブートローダーモードに移動します。 これを行うには、ボリュームロッカーで適切なアイテムを選択し、電源ボタンでオンにします。
2)その結果、私たちは、開いた胃で釘付けされたアンドロイドの写真を賞賛します...それだけです。 私のバージョンでは、それ以上動作しませんでした。 理論的には、この段階で「ADBから更新を適用する」が選択されているメニューを開くには、音量を上げると同時に電源を入れる必要があります。 電話がオンになりました。 しかし、成功したとしましょう。
3)コンピューターのコマンドプロンプトウィンドウで、次のコマンドを入力します。
adb sideload xxxxxxxx.zip
ここで、xxxxxxxx.zipは、ファームウェアを含むzipファイルの名前です。 その後、定期的な更新が行われます。
エピローグ
DalvikでARTに正常に切り替えました。 すべてがはるかに速く開き始めたようですが、正確な測定を行いませんでした。 センサーがより良くなり、より正確になりました。 一般に、表面の明らかな変化は見えません。 ARTをテストする必要がありますが、これまでのところ何も落ちていません。 120以上のアプリケーションでは、再コンパイルに約20分かかりました。
PS。 不注意な操作は、「ブリック」状態になる可能性があることに注意してください。 作成者は、誤ったユーザーアクションについて責任を負いません。 関連するリソースの指示を必ずお読みください。