ごりぽんソフトウェア

2013-08-08

緊急地震速報!ああ驚いた

先ほど、いきなりケータイが変な音を出してびっくり。画面を見たら緊急地震速報だった訳ですが。

私の場合、実は緊急地震速報初体験で、常用しているドコモ2台がいっぺんに警報を出したので、軽くパニックになりました。焦った。何事かと思った。まあ、これで緊急地震速報がどんな音を出すのか体験できたので、次からは慌てず対処出来ると思いますが。

で、それはそれとして。

2台のドコモのうちの片方のP-01Dは、先日の「P-01Dお手軽プリインストールアプリ削除」でアプリをごっそり削除してあったんですが、きちんと警報が出たのでご報告しておきます。ちなみに、挿していたSIMは「Xiデータプランフラットにねん」のデータ専用SIM。

もちろん保証する訳じゃありませんが、動作した実績はあるということで。

2013-08-03

P-01Dお手軽プリインストールアプリ削除

もうそろそろP-01Dもお役御免かなぁ、などと思いつつ、最後になるかもしれない「お手軽」シリーズです。

プリインストールアプリをごっそり削除する「お手軽プリインストールアプリ削除」です。5月末頃には完成していたんですが、すっかり放置してしまいました。なお、改めて言うまでもなく、無保証です。at your own riskで。

P-01Dお手軽プリインストールアプリ削除

例によってGoogleドライブなので、ページ左上の「ファイル」から「ダウンロード」を選択してzipアーカイブをダウンロードしてください。ファイル個別でダウンロードしてしまわないように。

今までのシリーズ同様にバッチを実行して指示通りにPCにP-01Dを繋げば、綺麗さっぱりプリインストールアプリを削除します。一時的に仮rootを取得して削除しますので、root化はされませんし、root化されている必要もありません。今回は、USBドライバを同梱し、各項目での所要時間の目安を表示するようにしました。USBドライバ同梱と目安時間の表示は、USBドライバを用意せずに実行したり、途中でうまく動作せず停止しているのに気づかないユーザーが居たためです。

ちなみに「エコナビ」「EconaviManager」「フィットキー&クイック手書き」はコメントアウトしてあります。この3つは、削除してしまうとファクトリーリセット後に不便や不具合が予想されるので、標準では削除しません。それでもいいから削除したいということであれば、バッチファイル内の該当部分のREMを外してから保存し、実行してください。また、逆に削除してほしくないアプリがあれば、該当部分を削除するかREMでコメントアウトして保存してから、実行してください。アプリ1個で1ブロックになるようまとめてありますので、そんなに難しくないはずです。

ちなみに、このバッチでアプリを削除すると、こんな感じになります。すっきりさっぱり。Google提供のアプリもほとんど削除しますので、必要ならGoogle Playからダウンロードしてください。

f:id:goriponsoft:20130803114645p:image:medium f:id:goriponsoft:20130803114646p:image:medium

※2013/9/11追記: このバッチを使うとアラームの設定ができなくなる、という報告が某2ちゃんねるの某スレにありました。対処方法は、これもそのスレに書かれていますが、Google製アプリに含まれている「時計」を削除しないこと。すでにバッチ適用してしまった人は、バックアップを書き戻して、該当箇所をコメントアウトしたバッチを使って再度削除を行ってください。そのうち暇になったら(苦笑)対処版出します。

2013-02-11

よ〜く考えよ〜♪バックアップは大事だよ〜♪

……と、わりと馬鹿馬鹿しいタイトルですが、中身は真面目にP−01Dのバックアップについてです。

相変わらずバックアップせずに弄り倒して元に戻せなくなる人が多いようですが、いちいち相手にしていると時間がもったいないですし、「バックアップしていないのが悪い」と一刀両断できるよう、バックアップもお手軽シリーズにしてみました。

P-01Dお手軽バックアップセット

例によってGoogleDriveなんで、左上のメニューから[ファイル]→[ダウンロード]と選んで一括でダウンロードしてください。

いつものようにダウンロード&展開後、_run_me.batを実行して指示に従ってください。実行にはJava環境(javaコマンドが実行できること)が必要です。バックアップを作成するだけなので、文鎮化の危険性はありません。

ただし、毎度書いていますが、保証はできません。自己責任で運用を。

終了すると、PC側のp01dフォルダ内とP-01D側のSDカードのp01dディレクトリ内に

  • boot.imgとrecovery.img
  • systemディレクトリの一部のファイルのコピー(PC側のみ)
  • systemディレクトリの全部のファイルの.tgzアーカイブ
  • CWM recovery向けupdate.zip形式のsystemディレクトリ書き戻しzipファイル

ができていますので、保管しておきましょう。

作成されたファイルの配布は禁止します。本来ならば言うまでもないことですが……。

このセットの売りは、systemディレクトリ書き戻しzipファイルです。CWM based recoveryのメニューから[install zip from sdcard]→[choose zip from sdcard]と選んで、作成されているsystem_restore.zipを選択しアップデートすれば、systemディレクトリ(の一部)がバックアップ時点に戻ります。手間なしお手軽ですね。SDカードのp01dディレクトリを残しておけば、PCに繋ぐ必要すらありません。

ちなみに、書き戻されるファイルはp01dフォルダ内のsystem以下と同一ですので、内容の確認はそちらでどうぞ。systemディレクトリ丸ごとではないので念のため。

一応、書き戻し対象のディレクトリ内を全削除してから書き戻しするようになっているので、CWM based recoveryさえ起動できれば、対象ディレクトリ内が空っぽという酷い状態でも書き込んで復帰できるはず。

2013-01-27

CyanogenModのビルド環境を整える・改

ビルド環境構築の際に試行錯誤を繰り返したって話はしましたが、その際に何回もUbuntuのインストールからやりなおしたんで、同じ手順を何回も繰り返すことになって大変でした。

そうそう繰り返すことがある話じゃないですが、いつものノリで「面倒だからシェルスクリプトにまとめるか」ってことで作ってみたのでエントリ。まさかの「お手軽ビルド環境構築シェルスクリプト」です。

ということで、シェルスクリプトの内容は以下の通り。Ubuntu 12.04.1 LTSの64bit版向けですので他のディストリビューションや他のバージョンでは使えません。それと、USBデバイスの対応がP-01Dだけですので、他のAndroid端末ではそのままでは基本的に使えません。解る人はアレンジしちゃってください。

また、いつものように無保証です。一応、実PC上とVirtualBox上の仮想環境で試していますので大丈夫だと思いますが、環境構築が失敗したとしても恨まないでください(苦笑)。

#!/bin/bash
cd ~
(cat << EOF) >> .bashrc

# for Build Android OS
export PATH=\$PATH:~/Development/bin:~/Development/android-sdk-linux/tools:~/Development/android-sdk-linux/platform-tools
export USE_CCACHE=1
export CCACHE_DIR=~/Development/CCACHE
EOF
(cat << EOF) > 51-android.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
EOF
sudo mv 51-android.rules /etc/udev/rules.d/
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo apt-get -y install git-core gnupg flex bison gperf \
build-essential zip curl libc6-dev libncurses5-dev:i386 \
x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 \
libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \
schedtool optipng pngcrush
sudo apt-get -y autoremove
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
mkdir -p ~/Development/bin; cd ~/Development/bin
curl -O https://dl-ssl.google.com/dl/googlesource/git-repo/repo
chmod a+x repo
mkdir ~/tmp; cd ~/tmp
git clone https://github.com/flexiondotorg/oab-java6.git
sudo ./oab-java6/oab-java.sh
cd ~; rm -rf ~/tmp
sudo apt-get -y install sun-java6-plugin sun-java6-jre sun-java6-bin sun-java6-jdk
cd ~/Development
curl -o sdk.tgz http://dl.google.com/android/android-sdk_r21.0.1-linux.tgz
tar -xvzof sdk.tgz
rm sdk.tgz
cd ~/Development/android-sdk-linux/tools
./android

前回の手順通りにUbuntu 12.04.1 LTSの64bit版をインストールしてアップデートマネージャーでアップデートを掛けた後、上記の内容をinstall-build-env.shというファイル名で保存*1し、実行属性をつけて端末アプリから実行すれば、あとはほぼ自動で環境構築が行われます。アップデートを忘れるとエラー山盛りになりますのでご注意を。

最後にAndroid SDKのSDKマネージャーが起動するので、必要なファイル*2をダウンロードしておしまいです。終わったら一応、PCを再起動しておきましょう。インストールが正常に終わっていて再起動も済ませていれば、端末アプリからadbコマンド、javaコマンド、repoコマンドが実行できるようになっているはずです。念のため確認してみてください。ついでにP−01Dを繋いでadb devicesコマンドでデバイスが表示されるかも確認を。

途中1回だけ(のはず)、sudoコマンドがパスワードを要求して来ますので、インストール時に決めたパスワードを入力します。パスワードを入力する関係で、端末アプリから実行しないと正常に動作しません。ホームフォルダーアプリから実行する場合は、ファイルをダブルクリック→[端末内で実行する(T)]で実行するようにしてください。

ハードディスク容量に余裕があるなら、最後の行を

./android update sdk -u

とすれば、sudoのパスワード入力以外は完全に自動化できますが、Android SDKをフルセットでダウンロードしてくる関係で、ハードディスク容量を7GBほど余計に使いますし、時間もかなり掛かります。

また、Android SDKのアーカイブファイルのURL(最後から数えて5行目のcurlコマンドの行)は、Android SDKのバージョンが更新されると変化しますので、適宜変更してください。ここのURLも自動取得にしようと思えば出来なくはないんですが、さすがに手間が掛かり過ぎるので手抜きしてます。

ちなみに上記内容のファイルをウチのWEBページにアップロードしてありますので、実は端末エミュレータから

cd ~
wget http://www.zob.jp/~goripon/android/p01d/install-build-env.sh
chmod a+x install-build-env.sh
./install-build-env.sh

と4行入力すれば、シェルスクリプトをダウンロードして環境構築を始められます。ただし、内容の更新は保証できないので、Android SDKのバージョンが上がったら動かなくなるかもしれません。念のため、wgetした後にテキストエディタで内容を確認し、必要があれば修正するようにしてください。

基本的に1回しか実行しないという前提で組まれていますので、複数回の実行はしないでください。使用後はシェルスクリプトの削除を推奨です。もし、何らかの事情で実行が失敗し、再実行する必要がある場合は、ホームディレクトリの.bashrcファイルの末尾に追記されている内容を削除したうえで行なってください。他はそのままで大丈夫なはず。

これでAndroidをビルドしてみる人が増えたら面白いですね。Cyanogenmod for P-01Dへの加勢もちょっと期待してます。

*1:Ubuntu上でこのページを表示し、テキストエディタを起動して直接コピペするのが面倒が無いです。

*2:Cyanogemod for P-01Dをビルドするなら、[Android 4.0.3 (API 15)]と[Tools]の2項目。

2013-01-25

CyanogenModのビルド環境を整える

Cyanogenmod for P-01Dの開発協力を申し出たものの、ビルド環境がどうしてもうまく構築できず、全くお手伝いてきていませんでした。どうもビルド環境の構築って苦手なんですよね。Linuxも得意ってほどじゃないし。

それでもなんとか試行錯誤して、どうにかビルドまで出来るようになったので、覚え書きも兼ねて手順をエントリしてみようかなと。

まずはベースのLinux環境。推奨環境がUbuntuの64bit版なので、Ubuntu 12.04.1 LTSの64bit版をダウンロードしてインストールします。私はゲーム用に使っていたOpteron 246×2/2GB RAM/320GB HDD×2/RADEON 9500という構成のPCが退役したので、これにUbuntuをインストールしてビルド専用マシンにしましたが、デュアルブートにしたり、仮想PCで構築することも出来るようです。

本家Ubuntuのページから[64-bit PC (AMD64) desktop CD](ファイル名はubuntu-12.04.1-desktop-amd64.iso)をダウンロードして、CDに焼いてインストールします。それほど特殊な選択は無いと思いますが、一応、こんな感じに選択してみました。

  • 言語は日本語
  • [インストール中にアップデートをダウンロードする]と[サードパーティーのソフトウェアをインストールする]のチェックボックスは両方ON
  • [インストールの種類]では[それ以外]を選んでswapパーティションのサイズをビルド環境の推奨値である16GBに設定

他の設定は適当で。手順についてはUbuntuのTipsページを参考に。インストールが終わってデスクトップが立ち上がったら、アップデートマネージャーを起動して、ひと通りのアップデートを掛けておきます。アップデートを忘れると、これ以降の作業でエラーが出る場合がありますので、確実にやっておきましょう。

続いて、まずは必須ツール類のインストール。とはいえ、やることは決まっているので、単に端末エミュレータからコマンドをガシガシと入力していくだけです。

sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \
schedtool optipng pngcrush
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

基本的にはAOSPのページにあるInitializing a Build Environmentの通りなんですが、そのままではうまくいかないのでアレンジしてあります。具体的には、後でOracle Javaを入れるのでopenjdk-6-jdkを除外したのと、ウチの環境では何故か入っていなくてビルド時にエラーになってしまったのでschedtool/optipng/pngcrushを追加した*1のの2点。上記コマンド列を1コマンドごと端末エミュレータにコピペすればそのまま動きます。以下、コマンドについては同様。

次はrepoコマンドのインストール。インストール先はパスさえ通せばどこでも良いのですが、今回はホームディレクトリ内にDevelopmentディレクトリを作り、そこにまとめることにしました。

mkdir -p ~/Development/bin; cd ~/Development/bin
curl -O https://dl-ssl.google.com/dl/googlesource/git-repo/repo
chmod a+x repo

更にOracle Javaのインストール。何通りか方法がありますが、CyanogenMod wikiページから辿っていった先に書かれていたoab-java.shを使う方法を採用。

mkdir ~/tmp; cd ~/tmp
git clone https://github.com/flexiondotorg/oab-java6.git
sudo ./oab-java6/oab-java.sh
cd ~; rm -rf ~/tmp
sudo apt-get install sun-java6-plugin sun-java6-jre sun-java6-bin sun-java6-jdk

インストールの最後はAndroid SDK。極力コマンドラインで出来るようにcurlコマンドでダウンロードするようにしてみましたが、WEBブラウザでダウンロードしてきても構いません。他のものと違ってバージョンが変わるとURLも変わるので要注意。

cd ~/Development
curl -o sdk.tgz http://dl.google.com/android/android-sdk_r21.0.1-linux.tgz
tar -xvzof sdk.tgz
rm sdk.tgz
cd android-sdk-linux/tools
./android &

ダウンロードと展開が終わるとSDKマネージャーが起動するので、必要なSDKとツールを選択してダウンロードします。今回はCM9(Android 4.0.4)ベースなので、API15のSDKとPlatform-toolsをダウンロードしておきます。

あとは設定ファイルの作成と書き換えで終了。まず.bashrcへの実行ファイルのパスとビルドキャッシュ関係の追記。

cd ~
(cat << EOF) >> .bashrc

# for Build Android OS
export PATH=\$PATH:~/Development/bin:~/Development/android-sdk-linux/platform-tools:~/Development/android-sdk-linux/tools
export USE_CCACHE=1
export CCACHE_DIR=~/Development/CCACHE
EOF
source .bashrc

んで、最後にAndroid端末をUSB接続で認識させるための設定ファイル51-android.rulesの作成。

cd ~
(cat << EOF) > 51-android.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
EOF
sudo mv 51-android.rules /etc/udev/rules.d/
sudo chmod a+r /etc/udev/rules.d/51-android.rules

上記はP-01D用(SUBSYSTEMの1行目が通常起動時・2行目がCWM Recovery起動時)なので、他の機種ならidVendorの値を調べて書き換えてください。

ここまで設定すればビルド環境は完成。Cyanogenmod for P-01Dなら、README.mdに記載のコマンドを順に入力していくだけでビルドが始まります。

*1:このせいでどれだけ試行錯誤したことか……。rootスレの皆様、ありがとうございます。