ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

8/29/2016

Android adbをwifiで接続するメモ

端末をUSBで接続した状態で、以下を実行

adb tcpip 5555
adb connect xxx.xxx.xxx.xxx

xxx.〜はIPアドレス。端末のWifi詳細設定から確認できる。
macだと、普通にAndroid Studioをインストールした場合、adbコマンドは「~/Library/Android/sdk/platform-tools/」にある。

以上で、USBを抜いても、wifi経由でadbコマンドやAndroid Studioからデプロイ、デバッグできる。

デバイスの接続確認は以下

adb devices


切断時は以下

adb disconnect

USB接続に戻すには以下を実行

adb usb

という感じ。IPを静的割り当てにして、スクリプトにしちゃうと楽かも。

11/06/2015

Ubuntuで、Android本体(Android Open Source Project)のソースコードをビルドしてみる

AndroidのOS基本部分はソースが公開されていることは、ご存じの方も多いと思いますが、最近ちょっと、Androidのアーキテクチャをリサーチしてみたり、手を加えてみたい欲求が出てきたので、ソースコード取得&ビルドまでをやってみる。の記録。

本家ページは以下。手順も書いてある。
http://source.android.com/source/index.html


サポートされている開発環境は、Ubuntu14.04 or Macで、メモリー16GB、ディスク100GB以上(ソース)、ビルドするなら150GB〜200GBいるとか書いてある。

うちには、そんな贅沢なスペックのマシンはありません。でもやる。最近中古で買ったメインマシンのHP Spectre(Ivy Bridge)がメモリー4GB、SSD250GBと、きわどいスペックですが、きっとビルド遅いだけで済むでしょう。Windows10マシンとして使っていたところ、急遽Ubuntu14.04 64bitをインストール。ハードウェアも、ほどよく枯れているので、とくにトラブルもなく快適動作。SkylakeのPCほしー。コスパ的に私が買うのは2年後の中古かなー。


まずは、要るものインストール

JDKから

$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk



別のJDKをデフォルトにしている人は以下で、切り替える

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac

なんだか、OpenJDK使えとな。Oracleのじゃなくて。ここはとりあえず、従っておく。Googleさんのスタンスとして、このへんどうなんだろう。AndroidStudioだとOracleのリンクが指定されていたり。AOSPは、別扱いなのだろうか。まあ、今はいいや。今度、ちゃんとドキュメントちゃんと読みます。


コンパイルに必要なものをインストール

$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip


USBでAndroidデバイスを認識できるようudev設定追加。ハードウェアにデプロイしないのなら要らないと思われ。

$ wget -S -O - http://source.android.com/source/51-android.rules | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules


ソースをダウンロードするのに、repoというコマンドを使うので、その下ごしらえ

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo


ソースを取得するディレクトリ作成。私はとりあえずaospとしましたが、好きな名前でOKです。

$ mkdir aosp
$ cd aosp


repo初期化

$ repo init -u https://android.googlesource.com/platform/manifest


ブランチ指定したい人は、以下のように指定。ブランチ一覧はここを参考に。

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

ソース取得

$ repo sync


家のネット環境がイモ(Wimax)なせいか、頻繁にエラーで中断される。何度かやり直して、Done。
この時点でソースの総容量が、約13GB、うーん。推奨環境では100GBという話だったが、ちゃんと全部取得できてるんやろか。

とりあえず、ビルドまで通してみる。

$ source build/envsetup.sh
$ lunch aosp_arm-eng

引数のビルドタイプはプロセッサアーキやハードウェアの指定+user, userdebug, engとある。eng(多分エンジニアリングとかの意と思われ)はデバッグ可能な開発者向けビルド的なやつっぽ。タブで補完すれば、指定可能なオプションが確認できる。

現時点で選択可能なのは以下だった。

aosp_angler-userdebug
aosp_arm-eng
aosp_arm64-eng
aosp_bullhead-userdebug
aosp_deb-userdebug
aosp_flo-userdebug
aosp_flounder-userdebug
aosp_fugu-userdebug
aosp_hammerhead-userdebug
aosp_hammerhead_fp-userdebug
aosp_mips-eng
aosp_mips64-eng
aosp_shamu-userdebug
aosp_x86-eng
aosp_x86_64-eng
full_fugu-userdebug
m_e_arm-userdebug
mini_emulator_arm64-userdebug
mini_emulator_mips-userdebug
mini_emulator_x86-userdebug
mini_emulator_x86_64-userdebug



$ make -j4

知ってる人は多いと思いますが、-j4は並列コンパイルのスレッド数を指定。ホストマシンのコア数によって加減する。当然、多くすれば、コンパイルが早いが、マシン性能を超えて指定しても、早くはならない。一般にコア数の2倍程度が良好とされるが(昔の目安)、最近は4コア8スレッドとか、物理コア1つにつき、ハイパースレッディングで仮想コア2つみたいなアーキになってきたりしてるので、そのあたりも踏まえて、自分のマシンで、いろいろ試して、いい感じの並列数を探すのがいいのかもしれない。

で、ビルドが、なんとか終わる、正確に測ってなかったが、 Core i7-3517U  1.90GHz (2Core, 4Thread) のCPUで、-j4オプションで、約4時間くらい。

早速、実行してみる。実機デバイスに焼くというてもありますが、今、デプロイしちゃっていい端末や、開発ボードもないので、エミュレーターで起動させてみる。

$ emulator





なんとも言えない、やっちまった感漂うブートスプラッシュの趣。



うーん。なんだか、しょぼいホーム画面です。Nexus5を愛用してるので、それに近いものが出てくると勝手に予想してましたが、思いの外、オープンソースになってる部分だけでは、しょぼい感じのようです。ビルド指定が、ただのarmだからだろうか。hammerhead(nexus5のコードネーム)というビルドオプションもあるので、次はそれでやってみようかな。


ちょっと、目を疑ったので、ビルド情報確認。

Android6.0で、ビルドナンバーには今日の日付と、私の名前入ってます。どうやら、私がビルドしたものに間違いないようです。

ちなみに、ビルド後の作業ディレクトリの総容量は約41GBでした。ごにょごにょしていくと増えていくんでしょうが、思ったほどでかくなくて、助かりました。最近、ラップトップの内蔵ストレージが、SSDやeMMCになって容量あたりのコスト高いですからねえ。足りなくなりがち。 とりあえず、当初の目標であるソース取得からビルドまでは、無事できましたので、これからイジって行きたいと思います。

今回はこんなところで。



10/06/2015

Nexus 5にAndroid 6.0 Marshmallowのファクトリーイメージを焼いてみる(Ubuntuで)

Android 6.0 Marshmallowがリリースされましたが、OTAでアップデートされるのを待ってられず、勢い余ってファクトリーイメージを焼いてしまう。先日、不調だったNexus5のバッテリを自力で交換しちゃったし、もうメーカー保証なんてアテにしません。

普段使いのNexus5をやっちまうのはリスキーな気もするが、誘惑に勝てず。ファクトリーイメージの焼き方覚えれば、不具合あったらLollipopに戻せるさー(多分)。

ハマりポイントをメモっとく

ホストPCはUbuntu14.04 64bitです。JDKと、AndroidSDKは導入済み前提で、今回使うコマンド「adb」と「fastboot」はSDKのplatform-toolsに入っている。

USB経由でadbを使えるようにしておく必要がある。「/etc/udev/rules.d/50-android.rules」に以下を追記しておく

SUBSYSTEM=="usb",SYSFS{idVendor}=="18d1",MODE="0666"

1. 以下から、Nexus5用の6.0のファクトリーイメージをダウンロード。ホームとかに解凍しておく。一応、このページにやり方書いてあるので、ほぼそのままやる。


2. 端末をfastbootモードで起動する。方法は2つ
  ・ ホストPCから、「$ adb reboot bootloader」
  とやるか、
  ・ nexus5の場合、電源OFFの状態から、端末の音量キーUP,Down両方を押しながらパワーボタンで起動させる

3. 「$ fastboot oem unlock」コマンドで、アンロックするわけですが、ここで、ハマりポイント。< waiting for device >と出て、一向に進まず。どうやらLinux環境だと、rootじゃないとこれがうまく実行されないぽ。なので「sudo -i」とかでルートになって実行。

4. 次に、ファクトリーイメージを解凍して中に入っている「flash-all.sh」を実行するのだが、これの中身はfastbootコマンドの応酬なので、ルートのままで実行。この時、カレントディレクトリを移動するので、AndroidSDKにパスを一時的に通しておく。
「 # export PATH="$PATH:/home/hoge/android/android-sdk-linux/platform-tools"」としておいて、「# ./flash-all.sh」

6.  ひと通り終わったら、再びfastbootで起動させ、「$ fastboot oem lock」しておく

ちょっと雑なまとめですが、こんな感じで焼けました。起動に時間がかかったのでヒヤヒヤしたが、動いてます。なんだか、6.0になったからといって、ぱっと見、UIもなんにも変わってない感じ。若干、ペタッと感が増した気も。とりあえず、しばらく使ってみる。





今回はこんなところで。

10/04/2015

Ubuntu14.04 64bitでAndroidビルドしようとしてaaptでエラー出る対策メモ

以前、Ubuntu14.04 64bit上のAndroid Studioで、アプリをビルドしようとしてaaptがエラーでビルドできない対策が、曖昧だったので、改めて小ネタメモ。

原因は、aaptが32bitのバイナリで実行するのに32bitのライブラリが、必要なんだが、ホストが64bitなので、別途、32bitライブラリが要るっつうこと。以下のものをインストールすれば、OKと判明

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6


5/15/2015

Ubuntu 15.04でAndroid開発環境を構築してみる。

というわけで、やってみた手順をまとめておく


  1. JDKはOracleのやつを使う。Oracleからダウンロードすやるやつはdebパッケージになってなくて、既存のパッケージとの競合解決がめんどくさいので、今回はppaリポジトリから。
  2. sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update
    sudo apt-get install oracle-java7-installer
  3. そろそろEclipse離れしてみようかと、Android SDK Tool Only + Intellij CEを試してみたところ、結構いい感じで開発できそうだが、Android開発メインならサンプルコードのダウンロード機能やAndroid SDKが統合されて至れり尽くせりなAndroid Studioの方がやっぱ便利っぽい感触。(https://developer.android.com/sdk/index.html)。ダウンロードしてandroid-studio/bin/studio.shで起動。ここで、ハマりポイント。適当にサンプルとかをビルドするとaaptがエラーという旨が。ファイルはあるのに、実行ができない事態。これが、32bitバイナリで64bit版Linuxだと実行できないことが判明。で、Andorid Studioのページよく見たら書いてあった。(https://developer.android.com/sdk/installing/index.html?pkg=studio) ia32-libs, lib32ncurses5-dev, lib32stdc++6 をインストールせよと。
  4.  sudo apt-get install ia32-libs lib32ncurses5-dev lib32stdc++6 
    だが、しかし、ia32-libsは古いパッケージでUbuntu15.04では廃止っぽい。これなしでも、なんだか実行できるようになったが、過去にインストールしたパッケージで、なんかしんないけど解決できてるだけかもです。 あと、Android Studioだと、adbが一緒にインストールされてる気配だったが、一応Ubuntuでもandroid-tools-adbパッケージがある。
  5. で、USBで繋いだ実機にデプロイするには、端末繋いでlsusbしてみてベンダーIDを確認。
  6. $ lsusb 
    Bus 001 Device 005: ID 2019:ed17 PLANEX GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS]
    Bus 001 Device 006: ID 18d1:4ee2 Google Inc. Nexus 4 (debug)
    Bus 001 Device 004: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
    Bus 001 Device 003: ID 0bda:57b5 Realtek Semiconductor Corp. 
    Bus 001 Device 002: ID 8087:07e6 Intel Corp. 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  7. /etc/udev/rules.d/50-android.rulesを作成して、以下を追加。18d1のところは端末のベンダーID。別の端末を複数登録するにはこのファイルに追記すればいいはず。
  8. SUBSYSTEM=="usb",SYSFS{idVendor}=="18d1",MODE="0666"
とりあえず、こんな感じで、開発進められるかなー。

9/10/2012

Let's Androidプログラミング

久々にブログ書いてみます。

いろいろあって、体調ぶち壊れて暫く冬眠してましたが、這い上がりぎみです。
最近はAndroidプログラミングに片足突っ込んでます。やってみるとなかなか面白いですなあ。

さしあたってOpenGLの立方体を傾きセンサーで傾かせるとか、ピンチイン、ピンチアウトで拡大縮小してグニグニ動くプログラム作ってみました。ちょっとかわええので、Youtubeにアップしました。



まだ、入門して一ヶ月と経ってないですが、これくらいのことは比較的簡単にできてしまうAndroid恐るべし。
豊富なセンサーやタッチ、カメラやマイクとかの入力を組み合わせれば、なんか面白いことができる予感するね。これ。

今回は実験的に行き当たりばったりで作ったので、ソースはぐちゃぐちゃなので、恥ずかしく載せませんが、またなんか面白いのできたらアップするかもしれません(未定)。