2012年8月28日火曜日

Paranoid Android for Nexus7 (grouper) をbuildする(覚書) 09/03/2012 更新

やり方はここを参照。
自分でNexus7用CM10をbuildする(その1:環境)
自分でNexus7用CM10をbuildする(その2:ソースのダウンロード)
自分でNexus7用CM10をbuildする(その3:ROMの作成)

$HOME/android/paranoidを作成、移動
repo init -u git://github.com/ParanoidAndroid/android.git -b jellybean
(一回目は公開鍵を作った後エラー、再実行で成功)

manifest.xmlの編集
ParanoidPreferencesを含む行をコメントにする。
(これを忘れると次のステップはいつまでたっても終了しない)

repo sync -j16の実行

local_manifest.xmlの作成(おそらくrepo sync前に実行しておいた方が早い:未検証
CM10と同様 Paranoid androidでは後述のrom-build.sh grouperを実行する際にvendorの入力が要求され、自動的にlocal_manifest.xmlが作成され、必要なソースがダウンロードされる。が、nexus7からのファイルの取り出しが行われない。(09/03/2012 更新)

repo sync -j16の再実行

nexus7から必要なファイルの取り出し
CM10と同様

ccacheを有効にする(未検証、HD容量が少ないので止めておくべき?)
export USE_CCACHE=1
export CCACHE_DIR=/<path_of_your_choice>/.ccache
prebuilt/linux-x86/ccache/ccache -M 10G

rom-build.sh grouperの実行
schedtoolがインストールされてないというエラーが出た場合は
sudo apt-get install schedtoolを実行してインストールする

OpenJDK6ではbuild失敗した。Oracle JDK6をインストールした。
Ubuntu 12.04 LTSにOracle JDK6をインストール
その後、repoによるsyncに失敗していたことが判明(ファイルサイズ0のファイルがあちこちに)。ParanoidPreferencesをダウンロード失敗していたのを正しくない方法で強制終了したせい?どこで失敗したかわからないので全ソース落としなおしたらうまくいった。本当にOpenJDKのせい?

pngcrush, optipng, or pngoutのインストールが要求されていた。前半二つは普通にインストールできたが最後の一つはapt-getで見つからない。とりあえず「or」となっているのでとりあえず放置。(09/03/2012 更新)

インストール後、rom-build.sh grouperの再実行
私の環境では80分でbuild終了
out/target/product/grouper/pa_grouper-2.00-27.zipができていることを確認。
バージョンが2.00になっている。さて、ParanoidPreferences.apkの最新版がないとまずい気がするが、とりあえず1.992の物をzipファイルの/system/appにコピーした。

AirDroidを使ってzipファイルをNexus7にコピー。リカバリを起動していつもの手順でインストール。キャッシュ類は当然クリア。ROMとgappsだけインストールして再起動。

無事再起動!!
ParanoidPreferences.apkが前バージョンのため、起動画面以外の変化は実感できない。前バージョンで保存した設定も復旧できた。

Ubuntu 12.04 LTSにOracle JDK6をインストール

CM10はOpenJDKでもOKだったんですが、Sun (Oracle)のJDK6がないとダメなケースがあったので。Oracle Java6はライセンスの問題で普通にはUbntuにインストールできません。

ここを参考にJDK6をインストール。いくつか方法は示されてますが、一番上のでOKでした。
ここからスクリプトをダウンロードして説明の通りにするだけです。

具体的には以下のコマンドを実行。

cd ~/
wget https://github.com/flexiondotorg/oab-java6/raw/0.2.5/oab-java.sh -O oab-java.sh
chmod +x oab-java.sh
sudo ./oab-java.sh

ダウンロードに時間がかかりますが、ローカルにパッケージが作成されるのであとは

sudo apt-get install sun-java6-jre

を実行すればインストールされます。以前インストールしたOpenJDKがデフォルトになっているので

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

を実行して表示されるメニューで使いたい方のjavaの番号を選んで終了。ちゃんと切り替えられたかの確認は

java --version

でバージョンを表示すればわかるはず。終了後、ホームディレクトリにあるスクリプトと実行ログは削除して大丈夫だと思います。リードオンリーになってますが、削除しちゃいました。

2012年8月27日月曜日

VMware player 5.0にubuntu 12.04 LTS日本語版をインストール(自分用メモ)

VMware playerの最新版にubuntuの最新版をインストール。Ubuntuはandroidの参考にしているサイトが64bitだが日本語版Remixは32bitなので64bit版をインストールしてからJapanese teamのリポジトリを有効にする。

ダウンロード
  • VMware playerはwindows版(32bit/64bitは同一ファイル)、ここからダウンロード
  • ubuntu 12.04LTSはdesktop 64bit版をここからダウンロード。
VMware playerのインストール
  • VMware playerはデスクトップにショートカットを作らないこと以外はすべてデフォルト
  • VMware playerを起動、「新規仮想マシンの作成」をクリック
  • 「後でOSをインストール」を選択して「次へ」をクリック
  • ゲストOSは「Linux」を、バージョンは「Ubuntu 64 ビット」を選択して「次へ」をクリック
  • 仮想マシン名、場所はデフォルトのままで「次へ」をクリック
  • ディスク最大サイズは「50GB」、「仮想ディスクを単一ファイル…」を選択「次へ」をクリック
  • (推奨サイズの20GBではCM10のソースをダウンロードできない)
  • 「ハードウェアをカスタマイズ」をクリック
  • 「メモリ」は推奨最大メモリを選択
  • 「プロセッサ」数は4個、仮想化エンジンの設定は「自動」のまま、3つのチェックボックスも空のまま。
  • 「USBコントローラ」の互換性で「USB 3.0」を選択
  • あとはすべてデフォルトのままで「閉じる」をクリック
  • 「完了」をクリック
  • BIOS設定でintel VTを有効にしていなかったので有効にした
Ubuntu 12.04 LTSのインストール
  • VMware playerの作成した仮想マシンを選択
  • 「仮想マシン設定の編集」をクリック
  • 「CD/DVD」で「起動時に接続」にチェックが入っているのを確認、「ISOイメージ…」を選択、ダウンロードしたubuntuのイメージファイルを指定、
  • 「仮想マシンの再生」をクリック
  • 「VMware tools linux版」の更新通知が出るが「後で通知」をクリック
  • ubuntuのインストール画面で「日本語」を選択、「ubuntuをインストール」をクリック
  • 「インストール中にアップデート…」「サードパーティー…」は非選択のまま「続ける」をクリック
  • 「ディスクを削除して…」を選択のまま 「続ける」をクリック
  • 「インストール」を選択
  • 住んでいる場所を選択して 「続ける」をクリック
  • キーボードレイアウトは「日本語」「日本語OADG 109A」を選択して 「続ける」をクリック
  • ユーザー名等の入力
  • インストール終了後、「今すぐ再起動」をクリック
  • 数分待ってもGUIにならないのでVMware playerのリセット機能を使用(左上黄色の一時停止のような記号をクリックしてリセットを選択)
  • 無事起動
  • VMware playerの左上Playerと書かれたボタンから「管理 > VMware Toolsのインストール」を選択、VMware Tools Linux版のダウンロード、インストールを行う
  • 同時にwindows側のインストールも行った
  • ダウンロードするとCDとしてマウントされるのでtar.gzファイルを作業用フォルダに展開
  • 端末を起動し、作業用フォルダに移動、sudo ./vmware-install.plを実行
  • 質問事項にはすべてenterで回答
  • 終了後、再起動でフルスクリーン表示が可能になる
各種設定
  • 日本語ディレクトリが使いにくいので英語にする。端末を開いて
    LANG=C xdg-user-dirs-gtk-update
    を実行。OKをクリックして終了。
  • 日本語環境をjapanese teamから適用するため以下のコマンドを端末で実行。
    wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
    wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
    sudo wget https://www.ubuntulinux.jp/sources.list.d/precise.list -O /etc/apt/sources.list.d/ubuntu-ja.list
    sudo apt-get update
    sudo apt-get upgrade

2012年8月26日日曜日

自分でNexus7用CM10をbuildする(その4:学習)

Nexus7用のCM10を自分でbuildすることに挑戦中です。元ネタはxdaの[HOWTO] Build CM10 Walkthrough for Nexus 7というスレッドです。

前回までに自分が何をやってるか理解していない状態でも、正確にコマンドを実行しさえすればROMのbuildができるということがわかりました。いくつか疑問があったので勉強していきたいと思います。

自分でNexus7用CM10をbuildする(その2:ソースのダウンロード)でソースをダウンロードする前にlocal_manifest.xmlというファイルをダウンロードしました。これは何かなということで中身を見てみることに。

<manifest>
  <remote fetch="git://github.com/" name="gh" review="review.cyanogenmod.com">
  <project name="CyanogenMod/android_kernel_asus_grouper" path="kernel/asus/grouper" remote="github" revision="jellybean">
  <project name="CyanogenMod/android_device_asus_grouper" path="device/asus/grouper" remote="github" revision="jellybean">
</project></project></remote></manifest>

manifest.xmlの書式をわかりやすくまとめている場所が見つかりませんでした。なのであてずっぽうで行きます。後半2行は分かりやすいですね。Nexus7のカーネルのCyanogenmod共通じゃないのでダウンロードはlocal_manifestに記述するって感じでしょうか。最初の1行はreviewの状態チェック? Nexus7から必要なファイルを取り出す工程でリストが欲しいと書きましたがスクリプトextract-files.shの中身を見てみたらちゃんとリストがありました。~/android/system/device/asus/grouper/proprietary-blobs.txtのようです。

Nexus7にあるファイルでも一部が~/android/system/vendor/asus/grouper/proprietaryに保存されてないのでなんでかなぁと思っていたのですが、よく見たら最後にsetup-makefiles.shを実行してますね。こっちのスクリプトで取り出したファイルを正しい場所に配置してました。念のため、いくつかのファイルが実際に移動されていたか確認しましたが、ちゃんと移動されているようです。

ここまでで一応自分が作成したROMがちゃんと作成されたという自信が持てました。後ほどインストールを試したいと思います。もちろん全バックアップしてから

自分でNexus7用CM10をbuildする(その3:ROMの作成)


前回に引き続き、Nexus7用のCM10を自分でbuildすることに挑戦中です。元ネタはxdaの[HOWTO] Build CM10 Walkthrough for Nexus 7というスレッドです。

前回は必要なファイルを揃えました。今回でROMが出来上がるはずです。
~/android/system/vendor/cmに移動、./get-prebuiltsを実行します。
さらに~/andorid/systemで. build/envsetup.shを実行します。"."が先頭にあるのを忘れないこと。

croot
brunch grouper

を入力すればいよいよROMの作成開始です。すごく時間がかかりました。しかも最初に割り当てていたメモリ1GBでは足らず、2GBにしてもダメ、限界ぎりぎりの2.9GB(今回使用したPCの搭載メモリは4GBです)でやっと成功しました。
完成したROMは
~/android/system/out/target/product/grouper/にcm-10-日付-UNOFFICIAL-grouper.zipというファイルとして保存されています。後はこれをNexus7にインストールするだけ…なのですが、実はまだ試していません。前回のNexus7から必要なファイルを取り出すステップが気になっています。私のNexus7はParanoid AndroidにROMを入れ替えてあるんですが、必要なファイルはすべて取り出せたのでしょうか?ここで必要なファイルがコピーできなくてもbuild自体はエラーなく終了すると注意書きがあるんです。それぞれのステップで何をやったかを理解してからNexus7にインストールするつもりです。

ではでは。

自分でNexus7用CM10をbuildする(その2:ソースのダウンロード)

前回に引き続き、Nexus7用のCM10を自分でbuildすることに挑戦中です。元ネタはxdaの[HOWTO] Build CM10 Walkthrough for Nexus 7というスレッドです。最初の投稿にgoogle documentへのリンクがあって、そこに詳細が書いてあるのですが、結構引用があるため、手順がわかりにくかったので自分用のメモとして書いておきます。

repoのインストール
cyanogenmodのwikiを参照しないと出てきません。~/bin, ~/android/systemフォルダを作成してから以下のコマンドを実行。

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
cd ~/android/system/
repo init -u git://github.com/CyanogenMod/android.git -b jellybean

最後の1行を実行すると~/android/system/に.repoというフォルダができます。ただのlsでは表示されない(ファイルの先頭が".")ので最初気がつきませんでした。次にこのフォルダにlocal_manifest.xmlを作成します。いくつか方法が書いてありますが、私は面倒なので

curl https://raw.github.com/gist/dcef0eadc4c8d31ae46d/d27a0cc718607b1a6e4958f9d0e57887b2eb4eb3/gistfile1.xml > .repo/local_manifest.xml

を~/android/systemで実行して済ませました。最後にソースのダウンロードです。

repo sync -j16

を実行するとソースのダウンロードが始まります。かなりの容量です。仮想PCのHDD容量20GBでは足りませんでした。仮想PCのHDD容量を増やすのは結構面倒なのですが、電脳羊(Android Dream)さんのVMWare Playerで仮想ディスクのサイズを変更するという記事のおかげであっさりと解決しました。スクリーンショットも付いていて完璧です。

ソースのダウンロードは途中で何度か中断しました(主にHDDの容量不足が原因)が、何度でもrepoコマンドを実行すればいいらしいです。ソースを最新にする時も同じコマンドだそうなので覚えておかないと。

次にNexus7から必要なファイルを取り出します。そのためのスクリプトをダウンロードするため、~/android/systemで以下のコマンドを実行します。

cd device/asus/grouper
git fetch http://review.cyanogenmod.com/CyanogenMod/android_device_asus_grouper refs/changes/01/19801/1 && git checkout FETCH_HEAD

ここでgitをインストールしろと言われてインストールしたようなしなかったような…(スイマセン)
仮想OS起動中にNexus7をUSB接続したら自動的に仮想OSの方に接続されました。~/android/system/device/asus/grouperに移動して、./extract-files.shを実行します。ここで必要なファイルがコピーされないと動作しないromが完成するそうです。せめてファイルリストが欲しかったなぁ。
以上で必要なソースとファイルは揃ったはずです。

自分でNexus7用CM10をbuildする(その1:環境)(08/26/2012訂正)

xdaのここに[HOWTO] Build CM10 Walkthrough for Nexus 7というスレッドができました。前々から興味があったので挑戦してみました。もう一台のPCに仮想OSの導入からやってみたらうまくいかなかったので訂正します(08/26/2012)。

まずはLinuxがインストールされているPCが必要になります。が、仮想で済ませることにします。以前、VMware playerにUbuntu 12.04LTS (64bit)をインストールしたのでこれを使います。VMware playerやubuntuのインストールはググればとても詳しいサイトがたくさんあるので割愛します。

次にJDK 6をインストールします。JDK6はubuntuにはインストールできないようですこちらのサイトに詳しく書いてあります。コマンドラインまできちんと書いてくれてるのでコピー&ペーストで済んでしまうのは素晴らしいですね。次にインストールする「必要なパッケージ類」の中にopenJDKが入っていてそちらを使うのかな?
Ubuntu 12.04LTSに必要なパッケージ類もコマンドラインの形で列挙されているのでこちらもコピー&ペーストで。いくつか追加でインストールする必要がありましたが、何が足らないとか表示されるので、そのままインストールするだけで済んでしまいました。

次にUSB接続でNexus7にsuper user以外でもアクセスできるようにするため、/etc/udev/rules.d/51-android.rulesというファイルを作成(sudo必要)、内容はまたしてもコピー&ペースト。<username>を自分のユーザー名にしないといけないのでちゃんと置換します。

Android SDKはここからダウンロードしてインストールします。次のページからインストール手順が書いてあるのでそのまま従います。私はandroidというフォルダを自分のホームにつくってその下にインストールしましたが、次回はもう少し短いパス名になるようにしようと思います。
インストールに必要と書いてあるia32-libsとsun-java6-jdkは先ほどインストールしてしまったので次のステップに進みます。Eclipseもインストールしろって書いてあるんですが、ダウンロードだけしてインストールし忘れていたらそのまま完了してしまいました。自分でコード書かないなら要らない気がします。次のページではsdkの追加ファイルのダウンロードをします。スクリーンショットがあるのでその通りにしてダウンロードします。終了後、SDKのtoolsとplatform-toolsをパスに追加しておくのを忘れないこと(私は忘れました)。

これで環境の準備完了です。

2012年8月25日土曜日

Nexus7にTrinity Kernel TS-ALPHA96をインストール

Nexus7にTrinity KernelのTS-ALPHA96をインストールしました。ALPHA64以降、オーバークロックされた物の公開が続き、ベンチマーク好きな方々によるスクリーンショットのアップロードが続いたのでそろそろ別のカーネルでも試してみようかと思っていた矢先、通常クロックの最新版が公開されました。
以前、こちらで表示が一部おかしくなると書きましたが、これはGPUのオーバークロックが関係していてartifactと呼ばれているようです。今回のバージョンは通常クロックなのでもちろん、artifactは出ませんでした。GPUのオーバークロック耐性は個体差があるそうですから、ゲームの快適性を求める場合はオーバークロックされたカーネルを試してみるのもいいと思います。

Trinity Kernel TS-ALPHA96のダウンロードはこちら
リカバリモードで起動してzipからのインストール、再起動して完了です。私は今回キャッシュのクリアをし忘れましたが無事起動しました。キャッシュクリアで悪いことが起きることはないそうなので、念のためクリアした方がいいのかもしれません。

インストール後も快適に動いています。toolbox買おうかどうか、まだ迷っています。ではでは。

Nexus7にParanoid Andorid 1.992a&gappsの新バージョンをインストール(08/24/2012訂正)

Nexus7にParanoid Android 1.992aをインストールしました。更新内容はCM10の更新を反映させただけのようです。今のところ、大きな問題を感じていなかったので今回は見送るつもりでしたがgapssの新しいもの(実際にはSGT7というROM用の物らしいですね)で動作報告があったので導入することにしました。
まずは必要なファイルのダウンロードです。
GooManagerからダウンロードすればMD5チェックサムまで確認してくれるので楽ですが、またまたダウンしてる様ですね。私はこれを投稿する前にダウンロードしてしまいましたが毎週末ダウンしている気がする。GooManagerに関しては記憶だけで書いているので復帰後確認して訂正します。(08/24/2012 訂正しました)

  1. GooManagerを起動
  2. Browse compatible ROMs > paranoidandroid > roms > grouper > pa_grouper-1.992-24AUG2012-202431.zipをダウンロード
  3. Browse all files > devs > cdesai > gapps > gapps-jellybean-20120810-signed.zipをダウンロード
次はバックアップです。今回は忘れずにParanoid Androidの設定をバックアップしました。設定画面からParanoidAndroid Settings > Backuo and Restore > Backup preferences でバックアップできます。名前が日、月、年、時間という日本やアメリカとはちょっと違う表記なので一瞬戸惑いますね。
titanium backupで使用中のアプリのデータなども全部バックアップ、念のためdropboxとリンクしておきました。
ここからは自分専用update.zipの作成に入ります。
  1. pa_grouper-1.992-24AUG2012-202431.zipからframework-res.apkを取り出し、PCにコピー
  2. /data/app/からtitanium backupの最新版apkをPCにコピー
  3. framework-res.apkにロック画面の天気画像ファイルをコピー(詳細はこちら)
  4. updater-scriptを微妙に修正(ファイル名など)
  5. zipファイルを作成し、nexus7にコピー
これで準備完了です。電源ボタンの長押しで表示されるメニューからreboot > recoveryを選択してリカバリを起動します。私はこの時点でキャッシュとdalvicキャッシュをクリアしちゃってます。その後zipファイルからインストールを選択し、pa_grouper-1.992-24AUG2012-202431.zip、gapps-jellybean-20120810-signed.zip、update.zipの順にインストールします。
再起動して(結構時間がかかります)、ロック画面が出たら成功です。

新しいgappsはGalleryでpicasaと連携できるらしいんですが私はpicasaを使ってないのでよくわかりませんでした、トホホ。


2012年8月20日月曜日

Nexus7にParanoid Android 1.991aをインストール&設定メモ

Nexus7にParanoid Android 1.991aをインストールしました。0.01しかバージョン上がっていないのでわかると思いますが、大きな変更はなくデバッグがメインとのことです。あと起動時のアニメーションが変わっていました。今回の方がかっこいい気がします。

今回からgoo managerからバージョンアップ通知が来るはずだったのですが、その前に新バージョンがないかチェックしてしまいました。xdaでバージョンアップ予告があったのでつい…
詳しい方法はnexus7にParanoid Android 1.95aを導入。を参照してください。

今回はParanoid Android本体、gapps、Trinity kernel 0.64、自分用update.zipを同時に適用しました。自分用updateではiWnnに必要なファイルのコピー、ロック画面用の天気の画像の入れ替え、システム言語が英語の時の日本語フォントの設定、titanium backupのインストールを行っています。

Paranoid Androidの設定ですが、私はNexus7を縦にして使うことが多いのでStock UI (stock, hybrid on)の設定にしています。この設定は主に通知領域の位置や大きさ、ナビゲーションボタンの形や大きさに影響します。全アプリのデフォルト設定にも影響します。これは後から個別に設定出来ますし、Nexus7のデフォルト設定でもあるのでこの設定で異常が起きるNexus7対応アプリはまずないです。

システムの設定画面(Settings)ですが、SystemUIとは別アプリになっているので個別設定が可能です。SIZEを160, Layout/UIを3.720pxにしてやるとタブレットと同じになって使いやすいです。同じ設定をApexランチャーやgoogle playにもしています。UIが一種類しかないアプリでもDPIを160にするとフォントが小さくなって表示できる情報が増えたりします。もとからフォントサイズが小さいアプリはこれをやるとまともに読めなくなるので注意してください。
アプリの設定はApplyを押した時点で再起動となり適用されますが、Settingsだけは本体の再起動しないと反映されないようです。

主なアプリの私の設定を書いておきます。
特定のアプリが毎回停止してしまう場合、UIをデフォルトに戻してみるといいです(08.20.2012 追記)

SIZE 160, Layout/UI 3.720px
Apex launcher
Chrome
Evernote
feedly
Gmail
gReader
Settings

SIZE 160, Layout/UI 2.600px
email (3.720pxがない)
MailDroid (3.720pxがない)

UIが一種類しかないもの
Flipboard SIZE 160
Pocket SIZE 160
Readability SIZE 160
XDA SIZE 213

変則
Calendar SIZE 160, UI 3.960px 2.600px (08.20.2012 訂正) 3.960pxだとアプリが停止
Gallery SIZE 160, UI 3.640px
Google play store 160, 4.1000px
Youtube SIZE 160, 4.800px

効果が実感できなかったもの
Android Keyboard
iWnn

こうしてみるとほとんどSIZE 160にしてますね。ごく一部を除いてUIも一番大きいものを選んでいるだけ。デフォルト設定を書き換えたほうが早い気がしてきました。次回挑戦してみます。

2012年8月19日日曜日

Google (Play) Musicを使用開始(08/19/2012追記)

せっかくアメリカに住んでいるのだからということでGoogle Musicを使用開始。正式名称はGoogle Play Music!? まあとにかく、日本では普通には使用できないらしいのですが、アメリカでは普通にダウンロードできます。
Windows PCにMusic Managerというソフトをインストールし、今まで使用していたiTunesのライブラリをアップロードする設定で実行!私の場合、iTunes導入以前に貯め込んだMp3ファイルが主なので著作権(DRM)関連の問題はほとんどありません。全部で2850曲ありました。アップロード開始から数時間たちましたがいまだに800曲くらいです。しかも、古いファイルはアルバムジャケットとかおかしくなってたことに気がつきました。画像の変更はできるみたいなんですが、単なる削除はできない!?どうせほとんど聞かないファイルばっかりなんだから無精せずに選択すればよかった、トホホ。
実際の使用感などは全曲アップロードしてから更新します。

--(08/19/2012追記)
全曲アップロード終了しました。結論から言うと「私の環境では使えない」です。問題点をいくつかあげてみます。

  1. Mp3のタグ形式が古い物でShift-JISなどの文字コードを含むものが文字化けする
  2. アップロードした曲をPC上で管理するにはブラウザからGoogle PlayのMy Musicにアクセスするがこれのインターフェースが致命的に未完成
  3. AndroidのPlay Musicの方がインターフェースとしてはマシだが曲名、アーティスト名などの変更はできない
  4. Auto playlistはもとから提供されているもののみ
  5. 曲の評価は3種類(なし、上、下)
1に関しては日本では使用できないはずのソフトを使用しているので文字コードにShift-JISなんか使ってるこちらが悪いと言われれば反論はできません。自分で何とかする方法を探してみましたが、手元にあるファイルを編集して再アップロードという手段になり、すでにアップロードした情報を訂正するのは難しそうです。
2に関してはかなり不満です。アップロードした曲はMy MusicのHomeというところには表示されますが、Songs, Artists, Albums, GenresにはGoogle Playで購入した曲しか表示されていません。Homeはアルバム単位の表示になるのですが、私の古いデータはunknown albumに分類されてしまうので面倒です。タグ情報の検索はかけられるので何とかplay listを作成することはできます。前述の文字化けの問題があるため、完全ではありませんが。
Androidのプレイヤー側はタグ情報に書いてあるartistやalbum名に対応しているようです。タグ情報が変更ができないのはプレイヤーと割り切ってしまえば当たり前のことです。私は音質とか詳しくないのでその辺は他のサイトを参考にしてください。
私はiTunesのsmart playlistを愛用していたのでauto playlistがもとから提供されているもののみというのは面倒です。2万曲までアップロードできるそうですがそういう人はいちいちプレイリストを作ってるんでしょうか?プレイヤー側でそういう機能を搭載した物が出てくるのを待てばいいのかな。
最後の曲の評価が全部で3段階というのもいささか不満です。iTunesはなしから星5個まで系6段階あったので単純な好き嫌いではなく、星の数で自分なりに意味をつけたりできたのが良かったと思います。6段階あるとスマートプレイリストもかなり賢く使えます。タグ情報のジャンルと組み合わせればほぼその時の気分に合った選曲が可能です。
以上のような理由でしばらくはiPodとNexus7とスマホをすべて持ち歩く生活が続きそうです。

2012年8月18日土曜日

Nexus7にTrinity Kernelをインストール

Nexus7にTrinity kernelをインストールして使用しています。標準のカーネルよりも高速でバッテリー消費量も少ないと言われています。Paranoid Andorid導入以来、若干レスポンスが悪いことを感じることがあったのですが(特にTablet UIを指定しているアプリ)、Trinity Kernel導入以来、そういうことはありません。ただ、きちんと測定したりしているわけではないので思い込みによる影響も大きいと思います。
ダウンロードはこちら
Trinity Kernel Toolboxという有料のアプリで色々な設定ができるようなのですが、Nexus7は今のところCPUの動作クロック変更と温度表示くらいしかないようなので導入していません。
致命的なバグには遭遇していませんが最新版のTS-ALPHA86では「なめこ栽培キットDeluxe(英語版はMushroomDX)」というゲームで一部表示がおかしくなるのでひとつ前のバージョンのTS-ALPHA64を使用しています。ベンチマークは最新版の方が早いみたいですね。
Trinity Kernelを導入した最大の理由はParanoid Androidを使っている人に使用者が結構いたこと。特に開発者の方が使用しているというのが大きかったのですが、よく考えたら開発者の方はNexus7を持っていないそうなので、違うハードウェアで使ってるんですよね。なのでこれはあまりあてにならない情報です。
バッテリーの持続時間も私の場合はほとんどがディスプレイなので多分Kernelをどうこうするより画面の明るさ設定をこまめに変更するのが効果的だと思います。
というわけで、現時点でのメリットは「操作時のレスポンスの改善(思い込みかもしれません)」だけということになります。
なので、Paranoid Androidほどはお勧めしません。もしかしたら少しレスポンスが良くなるかもという曖昧な情報でも試してみたい方だけ試してみてください。

肝心のインストール法ですが、ROM同様、リカバリからzipファイルをインストールするだけです。私は一応キャッシュなどをクリアしてますが、クリーンインストールは必要ないと思います。

2012年8月15日水曜日

通知領域にトグル表示 Power Toggles vs Notification Toggle

SmartAllさんPower Togglesが紹介されていたのでインストールしてみました。紹介にある通り、確かに軽いです。私が今まで使っていたNotification Toggleと比較してみました。

Power Togglesが優れていると感じた点(気に入った順)
  • 画面の明るさのトグルスイッチを自分でカスタマイズできる
  • デフォルトのアイコンのデザイン(これは単に好みかも)
  • 通知バーにバッテリー残量を表示した際のデザインが良い
  • ホーム画面のウィジェットも同様のデザインで用意されている
  • ショートカットの設置も無料でできる
Power Togglesの残念な点
  • 設置できるボタンの数は8個まで
  • アイコンを自分で指定できない。(アプリをボタンとして配置した場合だけはアイコン画像を設定できます)
  • GPSは設定画面へのショートカットでトグルスイッチになっていない
  • アイコンの色設定がイマイチわかりにくい
Notification Toggleが優れていると感じた点(気に入った順)
  • 設置可能アイコン数に制限なし
  • 2列表示に対応
  • アイコンを自分で好きに変更できる
  • ROOT化されていればGPSを直接ON/OFFできる
Notification Toggleの残念な点
  • 画面の明るさのトグルスイッチは10, 25, 50, 100%で固定
  • 通知バーのバッテリー残量表示が素っ気なさすぎ
  • ショートカットの設置は有料
  • ホーム画面のウィジェットはない
Power Togglesは画面の明るさを自分で指定できるところがとても良いと思います。Notification Toggleで用意されている一番暗い設定の10%は夜寝る前などはちょっと明るすぎますし、明るい方は自動調整で十分なので100%なんて必要ありません。
Power TogglesのデフォルトのアイコンもOSで用意されている物に似ているのでどのボタンがどの機能だったか直感的に操作できます。残念なことに自分で用意した画像に変更することはできないようです。アプリをボタンにしたときは出来るので、将来のアップデートに期待です。
設置できるボタン数が8個に限られているので、音楽再生関連のボタンや、頻繁に使うアプリを置いておくといった使い方をするのならNotification Toggleがいいと思います。私はAircalcなどの他のアプリと同時に使用するアプリを置いています。

結局どちらを使うかで非常に迷ったのですが(特に明るさ設定に関しては最近ずっと不満だったので)、最終的に設置したいボタン数が9個だったので今回はNotification Toggleを使い続けることに決めました。どちらのソフトも頻繁にアップデートされているようなので今後のアップデート内容次第でまた替えるかも知れません。

2012年8月14日火曜日

ロック画面の天気の画像を変更

xdaのここを参考に。リンク先からアイコン画像の入ったLightninBugs HTC Weather Icons.zipをダウンロード。作業用フォルダに展開。
Paranoid Androidのromが入ったzipを7zipなどで開き、system/framework/Framework-res.apkを作業用フォルダに展開。展開したFramework-res.apkを7zipなどで開く。res/drawable-hdpiフォルダの中にある天気の画像を先ほど展開した画像に置き換える。
以前iWnn install用のupdate.zipを作る (part2)で作ったフォルダのsystem以下にframeworkというフォルダを作成、今回作成したFramework-res.apkを配置。
\META-INF\com\google\android\updater-scriptを編集。Terapadなどの改行コードを認識できるソフトを使います。

ui_print("Additional files for iWnn");
ui_print("Install Titanium Backup");
ui_print("HTC Weather Icons By LightninBug");
ui_print("Mounting system...");
run_program("/sbin/busybox", "mount", "/system");
run_program("/sbin/busybox", "mount", "/cache");
run_program("/sbin/busybox", "mount", "/data");
show_progress(1, 15);
ui_print("Copying files...");
package_extract_dir("system", "/system");
package_extract_dir("data", "/data");
set_perm_recursive(0, 0, 0755, 0644, "/system/lib");
set_perm(0, 0, 0644, "/data/app/com.keramidas.TitaniumBackup-2.apk");
ui_print("Clearing Cache & Dalvik-Cache...");
delete_recursive("/data/dalvik-cache");
delete_recursive("/cache");
ui_print("Unmounting system...");
run_program("/sbin/busybox", "umount", "/system");
run_program("/sbin/busybox", "umount", "/cache");
run_program("/sbin/busybox", "umount", "/data");
ui_print("Finished");

実際にはiWnn用のファイルのコピー、Titanium Backupのインストールも同時にやってます(Paranoid Androidのupdateのついでです)。そんなのいらないという人はリンク先のLightninBugs HTC Weather ZIP Template.zipを使った方が簡単だと思います。

Titanium Backupは/data/dataの中身はコピーしちゃダメらしいですね。今回も忘れてコピーしちゃった…

Nexus7にParanoid Android 1.99aをインストール

Nexus7にParanoid Android 1.99aをインストールしました。これまでと特にインストール方法は変わりません。今回はそれぞれのアプリのUI設定をやり直す必要はないはずなのですが、バックアップするのを忘れました。これからアップデートする人は忘れずにバックアップしておいた方がいいでしょう。

アップデートはgoo managerによるアップデートに対応したということのようです。これからはアップデートが簡単になりそうですね。

実は今回初めてブラウザではなくgoo managerでダウンロードしたのですが、チェックサムによる確認まで自動でやってくれて便利です。今後はアップデート通知を受け取ってからgoo managerからダウンロードすることになりそうです。goo managerからインストールはまだ試してません。goo managerからインストールしないとアップデート通知来ないんだと面倒だなぁ。


2012年8月12日日曜日

Nexus7の日本語フォントを変更する(言語設定は英語のまま)

Nexus7のシステム言語を英語にして使用している場合、

  • 漢字は中華フォント表示
  • /system/etc/fallback_fonts-ja.xmlを変更してもフォントは変更されない。
  • /system/etc/fallback_fonts.xmlが参照されているため。
  • この二つ、内容はほとんど同じで最後のMTLmr3m.ttfとDroidSansFallback.ttfの順番が逆になってるだけ

fallback_fonts-ja.xmlをfallback_fonts.xmlに上書きコピーすればシステム言語が英語でもちゃんと日本語フォントが表示される。再起動しないと適用されないので注意。他のフォントに差し替える場合、fallback_fonts-ja.xmlを書き換えるよう解説しているサイトが多いが、システム言語を日本語にしていない場合は、fallback_fonts.xmlを書き換える。両方書き換えても問題ない。

iWnn install用のupdate.zipを作る (part2)

さて、前回全くうまくいかなかった本件ですが、
  • エラーメッセージがMETA-INFフォルダすら含んでいないzipファイルを用いた場合とは異なる
  • スクリプトの前半のただメッセージを表示する部分すら実行されない
ということからupdate-binaryがNexus7ではちゃんと動かないのではないかと考えました。プログラミングは初歩の初歩しかできない私としてはここでお手上げかなぁと思っていましたが、今朝のParanoid Androidの修正ファイルでひらめきました。このファイルの中に必要なファイルは一式揃っている。間違いなくNexus7で動作するスクリプトです。必要最小限のファイルしか入っていない方が良いので敢えて最新版ではなく1.95aの修正ファイルであるpa_grouper-1.95-BUGFIX1.zipをひな型にすることにしました。このファイルには/system/app/SystemUI.pakしか追加ファイルが含まれていないのでわかりやすいです。zipファイルを作業用フォルダに展開。もとから入ってるSystenUI.apkはもちろん削除。展開先\META-INF\com\google\android\updater-scriptを編集。windowsについてるnotepadは改行コードの関係でダメなのでTera padを使っています。

ui_print("Copy additional files for iWnn");
ui_print("Install Titanium Backup");
ui_print("Mounting system...");
run_program("/sbin/busybox", "mount", "/system");
run_program("/sbin/busybox", "mount", "/cache");
run_program("/sbin/busybox", "mount", "/data");
show_progress(1, 15);
ui_print("Copying files...");
package_extract_dir("system", "/system");
package_extract_dir("data", "/data");
set_perm_recursive(0, 0, 0755, 0644, "/system/lib");
set_perm(0, 0, 0644, "/data/app/com.keramidas.TitaniumBackup-2.apk");
set_perm_recursive(0, 0, 0755, 0755, "/data/data/com.keramidas.TitaniumBackup");
set_perm_recursive(0, 0, 0755, 0755, "/data/data/com.keramidas.TitaniumBackupPro");
ui_print("Unmounting system...");
run_program("/sbin/busybox", "umount", "/system");
run_program("/sbin/busybox", "umount", "/cache");
run_program("/sbin/busybox", "umount", "/data");
ui_print("Finished");

あとはMETE-INFと同じ場所にsystemフォルダとdataフォルダを作成、system/libにiWnnの必要ファイルをコピー、data/appにTitanium Backupのapkをdata/dataにデータフォルダをコピーします。最後にこれら全部を一つのzipファイルにして完成。

今度はCWMリカバリから無事インストールできました。Titanium Backupが起動しないで強制終了したのでキャッシュ・データを消去したところ動作しました。ひょっとしたら/data/dataはコピーしない方がいいのかもしれません。あとはTitanium BackupからiWnnその他のアプリをリストアして終了。

動作したのでこれ以上は調べていませんがset_permコマンドの後の最初の二つの数字の意味がわかりません。update.zipの説明の多くでは0になっていますが、最初に参考にしたサイトでは1000となっています。Paranoid AndroidのROM本体のscriptでは様々な値が使い分けられています。もしかしたら今回のケースも0以外を指定した方がよいのかもしれません。まあ、動いたから今回はこれで終了。

Nexus7にParanoid Android 1.98aをインストール(2012.08.12更新)

Paranoid Android 1.98aがリリースされたのでインストールしました。早速修正ファイルが公開されたので適用しました。なんでもGitHubのnexus7用の設定が全部消えてしまっていたそうです。そんな予想外の事態になってもこれだけすばやく復旧してもらえるというのはとても助かります。無償のソフトウェアでこれは凄いことだと思います。

もともとの記事は下に残してあります。UI関連の変更はまだ実感できていません。Hybrid設定へのアクセスは…やはり私の環境ではうまく動作してくれません。これもTabletUIでのはなしなのかもしれません。「最近使ったアプリボタン長押し」だと思っていたのですがそうではなく「最近使ったアプリ一覧でそれぞれのアプリを長押し」するそうです。動作しました。1.97a以降はParanoid settingのアプリ自体がフォルダから消えてしまったのでシステム設定から変更していたんですが、これで一気に楽になりました。(2012/08/12更新)

私にとって一番重要だったemailの不具合は解決しました。せっかく画面が広いんだからPhone UI以外で使いたいですよね。結局Paranoid Android自体のアップデートはあまり影響がなかったのですが、CM10関連が改善したというのが大きいです。

ホームのグリッドを縦画面と横画面で独立して設定できるApexランチャーがお気に入りなのでTrebuchetは使っていないのですが、これも試してみようかと思っています。


(最初の投稿)-------------------------------------------------------------
リリースに気がついたのが直後だったので即インストールしたのですが、Paranoid Androidの売りであるアプリごとのUIやDPIの設定ができません。実質Stock ROM状態?xdaを見ると他の人も同じ症状になっているようです。バグでしょうか?実際にはテストできていませんが、更新内容は以下のようになっています。

  • 20120810v1.9.8alpha
  • Project butter recents in tabUI (2/2)
  • Quick access hybrid properties by longpressing a recent app
  • More refined hybrid algorithm to reveal more layout containers
  • TabletUI toggles
  • All recent cm merges (Trebuchet, googles 4.1.1 r4 with a whole bunch of fixes for memory leaks, etc)
私はsystem UIはデフォルトのままでランチャーだけTabUIにしているのでいくつかはあまり影響がないかもしれません。二番目の最近使ったアプリボタン長押しでhybrid設定画面にアクセスできるというのは私の現在の環境では動作しません。CM10由来の「phone UI以外では標準のemailでemailを読もうとすると強制終了する」というのが解決されたかが興味があったんですが、それも未確認です。
続報が出たら更新します。

2012年8月11日土曜日

iWnn install用のupdate.zipを作る (失敗)

見事に動作しませんでしたね、ハイ。(2012.08.11更新)

Nexus7にカスタムROM導入時の覚書(自分用)に書きましたがiWnn再インストール時にはiWnnの不足ファイルをバックアップから持ってこないといけません。一回目は手動で頑張りましたが、次回からは自動にしたいです。
そこでxdaのここを参考に自分専用のupdate.zipを作ることにしました。

このページからzipファイルとしてダウンロード。作業用フォルダに展開。展開先・META-INF\com\google\android\updater-scriptをテキストエディタで編集。notepadとかだと改行コード対応してないのでtera padをインストールしました。で、真ん中辺に2行追加しました。

package_extract_dir("system", "/system");
set_perm_recursive(1000, 1000, 0755, 0644, "/system/lib");

展開先\system\libフォルダを作成し、iWnnに必要なファイルをコピーします。

set_perm(1000, 1000, 0644, "/data/app/[PACKAGE].apk");
delete("/data/dalvik-cache/data@app@[PACKAGE].apk@classes.dex");

この2行は削除しました。あとは展開先をzipにアーカイブするだけ。iWnnはTitanium Backupからインストールする予定です。実はまだ動作確認をしてません。というのは、このzipでTitanium Backupもインストールするように変更する予定だからです。

後はいつテストするかが問題なのですが、Paranoid Android以外に試したいカスタムROMがないのが悲しいところです。

動作確認後に追記予定。

2012年8月7日火曜日

Nexus7にParanoid Android 1.97をインストール(失敗?)

Nexus7にParanoid Android 1.97をインストールしました。Nexus7にはどういうわけか1.96はありませんが、HPには1.96までしかないようなので、実質これが1.96なのかな。ちょっと間抜けな失敗をしてしまったので自戒の意味も含めて公開。


goo.imのここのgrouperというフォルダの中にあるpa_grouper-1.97-06AUG2012-141855.zipというファイルをダウンロード/sdcardに保存。Titanium backupで最新データをバックアップ。CWMリカバリを起動後、zipからインストールを選択。先ほどのzipファイルをインストール。特にキャッシュのワイプ等はなしで再起動できました。

ところが、gmailやgoogle playなどのアプリが起動しません。キャッシュデータのワイプ等をしてもダメ。とうとう工場出荷時の設定に戻すオプションまで試しましたが、ダメ。そこでやっと気がつきました。gappsインストールしてないじゃん(涙

というわけであわててgappsをインストール。google playからtitanium backupをダウンロード。バックアップを復元して何とかなりました。実際にはシステムアプリをリストアしていないので完全には復旧していません。(間抜けすぎる)

1.97からはtablet UIとかphone UIとかではなく、それぞれのアプリが持っている設定を直接指定できるらしいです。なんか非常に楽しみなのですが、とりあえず復旧してから頑張ります。

ではでは。

2012年8月6日月曜日

Nexus7にカスタムROM導入時の覚書(自分用)

ファクトリーイメージ
展開すると中にスクリプトが二つ入っているのでそれを参考に。

iWnn
titanium backup復元だけでは不足ファイルがあるため強制終了
ガジェット好きなプログラマーの不定期な戯言さんのこちらの投稿を参考に不足ファイルをファクトリーイメージからバックアップからコピー(2012/8/10訂正)
パーミッションをrw-r--r--に変更(2012/8/6追記)

imgファイルから一部ファイルのみを抽出
からext4_utils.zipをダウンロード。ubuntuの作業用フォルダに展開。make。zlib.hが見つからないエラーは
apt-get install zlib1g-dev
で解決。
./sim2gimg system.img output.img
mkdir tempdir
mount -o loop output.img tempdir
tempdirの中から必要なファイルをコピー

nexus7にParanoid Android 1.95aを導入。

Androidは同じ画面解像度のデバイスでもタブレットとスマホでは表示のされ方が違います。これにはDPIが絡んでいるらしいのですが難しいことはここでは触れません。
GoogleはNexus7にtablet UIでもphone UIでもない第3のphablet UIとやらを導入したらしいです。デフォルトのホーム画面は縦型でどちらかというとスマホっぽく。でも一部のアプリは画面の広さを生かして2ペイン表示。最近のアプリアップデートに良く見られるNexus7に対応ってのはこれのことだと思います。
問題はこの「Nexus7に対応」ってのが大抵スマホかタブレットのどちらかマシな方に合わせたというだけなんですよね。もともとNexus7とは異なるサイズのものに最適化されているので妙に中途半端です。表示フォントサイズをアプリ側で設定できる場合はマシですが、そうでない場合、妙にデカイフォントが表示されたりします。せっかくタブレットに最適となっているアプリをインストールしたのにスマホと同じ画面になってしまうのも興ざめです。

というわけでParanoid Androidを導入しました。アプリごとにUIを設定できるのでまさにNexus7向けのROMと言えると思います。導入時にはtitanium backupで全アプリバックアップしておく方がいいと思います。特にiWnn使用者は。

ここから先は自己責任で。当然ですがメーカー保証とか一切なくなります。
XDAのここを参考にしています。
goo.imのここからromをダウンロード。Nexus7はgrouperを使用。maguroとかは他のデバイス用なので注意。pa_grouper-1.95-02AUG2012-141855.zip、pa_grouper-1.95-BUGFIX1.zipをダウンロードして/sdcardに保存。goo.imのここからgapps-jb-20120726-signed.zipをダウンロードして/sdcardに保存。

CWMリカバリを起動。zipファイルをインストール。ROM, bugfix, gappsの順。再起動。
起動しなかったので、wipeその他を実行。(詳細を忘れた)。再度zipをインストール後、再起動。
起動した!!

初めてのROM導入は必死でやっていたので詳細は覚えていません。もうすぐVer.upらしいのでその時にはメモしながらやろうと思います。

2012年8月5日日曜日

How to root nexus7 (自分用メモ)

Nexus7のルート設定(自分用メモ)
PCのOSはWindows7 64bit。お約束ですが自己責任で。ここに書いてある通りにやって失敗したとか言われても責任とれません。参考にしたというか元ネタはXDAのここ。良く読めば全部書いてあるんだけど作業中は見落とすことがチラホラと。

基本的にリンク先の通りにすればOK。
Step1の前提条件のうちSDKのインストールについてはデフォルトのインストール先(AppData\local\android)ではなく、C:\とかにした方がいいかも。私は作業用フォルダを作ってそこで色々とやるのが好きなので "SDKをインストールしたフォルダ" \platform-toolsにパスを設定しておく。インストール後"SDKをインストールしたフォルダ"\extras\google\usb_driverにあるandroid_winusb.infを編集。64bitなのでGoogle.NTamd64セクションのGoogle Nexus7を探す。最後の部分に
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E44&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_D001
を追加。
Nexus7をPCに接続しても認識されない(ドライバのパスが間違ってるため)。デバイスマネージャを開き、!マークのついたドライバのプロパティから更新。"SDKをインストールしたフォルダ"\extras\google\usb_driverを選択。

Step2のブートローダーのアンロックの元はXDAのここ
CWM recoveryとSuperSUは適当に最新版をゲット。CWM recoveryは作業用フォルダに展開しておく。SuperSUはzipのままでOKだが短い名前の方が後で楽。(今回はrecovery-clockwork-touch-6.0.1.0-grouper.imgとSuperSU v0.94を使用した)
Nexus7のdeveloper optionsからUSB debugを有効にしておく。 PCのコマンドラインを起動。作業用フォルダに移動。次の1行目を実行し、Nexus7の方でOK出すとデータが消えるので/sdcardの中はバックアップした方がいい。(1回目はこれをしてなかったから結構面倒だった)
fastboot oem unlock
fastboot flash recovery CWM-grouper-recovery.img
adb reboot recovery
リカバリモードに入ったところで再度Nexus7がPCから認識されなくなる。再度デバイスマネージャを開き、ドライバのプロパティを更新。今度も"SDKをインストールしたフォルダ"\extras\google\usb_driverを選択。(ここが一番冷や汗かいた)。recoveryの上書きを止めるために以下の作業を行うらしいんだけど、ファクトリーイメージから復旧した場合はrecovery-from-boot.pが見当たらなかった。赤字は元ネタからの修正。

adb shell
mount /system
cd /system
mv recovery-from-boot.p recovery-from-boot.bak
cd /
umount /system
exit
再起動、ブートローダー画面だったかリカバリーまで行くのか忘れた。
adb push CWM-SuperSU-v0.94.zip /sdcard
adb reboot recovery
CWMのメニューから"install zip from sdcard"を選んでSuperSUをインストールして完了。元ネタにはStep 3: True Rooting!というステップがあるがlinuxが必要になるので後回し。titanium backupとかはここまでのステップで使えるようになってるのでOK。