@blog.justoneplanet.info

日々勉強

Factory Imagesを使ってAndroidのバージョンを上げる

Factory Images for Nexus Devicesからダウンロードする。

wget https://dl.google.com/dl/android/aosp/hoge-fuga-factory-piyo.tgz
tar xvzf hoge-fuga-factory-piyo.tgz
cd hoge-fuga/
adb reboot bootloader
fastboot oem unlock
fastboot flash bootloader bootloader-xxxx-yyy.img
fastboot reboot-bootloader
fastboot flash radio radio-xxxx-zzz.img
fastboot reboot-bootloader
fastboot update image-hoge-fuga.zip

書いてなかったので書いておく。

Mountain Lion上でCocoaPodsを導入する

メモ。

ln -s /usr/bin/gcc /usr/bin/gcc-4.2
sudo gem install cocoapods
pod setup
cd your_project
vim Podfile

以下のようにプラットフォームと使用するライブラリを記述する。

platform :ios,'6.0'
pod 'JSONKit','~> 1.4'

以下のコマンドでインストールする。

pod install

Podfileから特定のライブラリが削除されていれば、この時にライブラリが削除される。

ビルドできなくなる

以下の表示になってビルドが止まる。

library not found for -lPods

以下のコマンドでxcodeを起動すれば良い。

open your_project_name.xcworkspace/
  • your_project_name.xcworkspace
  • your_project_name.xcodeproj

libraryを入れるとビルドできなくなる

libraryを入れると以下のエラーが表示されてビルドできなくなる。

duplicate symbols for architecture i386

CocoaPodsで導入したライブラリと直接入れたライブラリが衝突している場合に起こる。直接入れたライブラリを削除する。

■PonyDebugger

サーバー

以下のコマンドでローカルのサーバーをインストールして動作させる。

curl -sk https://cloud.github.com/downloads/square/PonyDebugger/bootstrap-ponyd.py | python - --ponyd-symlink=/usr/local/bin/ponyd ~/Library/PonyDebugger

以下のコマンドで起動する。

ponyd serve --listen-interface=127.0.0.1

クライアント

vim Podfile

以下のようにライブラリを追記する。

platform :ios,'6.0'
pod 'PonyDebugger'

以下のコマンドでインストールを行う。

pod install

AppDelegate.m

#if DEBUG
#import <PonyDebugger/PonyDebugger.h>
#endif
PonyDebuggerがNotFoundでimportできない。

target header search pathsに$(inherited)を追記する。

#if DEBUG
    PDDebugger *debugger = [PDDebugger defaultInstance];
    [debugger enableNetworkTrafficDebugging];
    [debugger forwardAllNetworkTraffic];
    [debugger enableCoreDataDebugging];
    [debugger enableViewHierarchyDebugging];
    [debugger connectToURL:[NSURL URLWithString:@"ws://localhost:9000/device"]];
#endif

ブラウザでlocalhost:9000/deviceにアクセスする。

URL SchemeでiOSアプリを起動する

自分用のメモ。まず、プロジェクトのURL Typesを開きURL Schemesを追加する。2つ以上の場合はカンマで区切る。

AppDelegate.m

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    if ([[url scheme] isEqualToString:URL_SCHEME_HOGE] && [[url host] isEqualToString:URL_HOST_HOGE]) {
        // do something
    }
}

jarを作る

mkdir bin
javac -d bin *.java
cd bin
jar cvf hoge.jar ./

Androidのソースコードを取得してビルドする

■準備

必要なパッケージをインストールする。その他は適宜。

sudo yum install make git bison libxslt flex gperf gcc-c++ glibc-devel zlib-devel

以下はUbuntu12.0.4の場合である。

sudo apt-get install git 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

OpenJDKが邪魔なので一旦消す。

sudo yum remove java-1.6.0-openjdk 

Ubuntuは以下のコマンドを実行する。

sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*

OpenJDKでビルドしようとすると以下のようにエラーがでる。

Checking build tools versions...
************************************************************
You are attempting to build with an unsupported JDK.
 
You use OpenJDK but only Sun/Oracle JDK is supported.
Please follow the machine setup instructions at
    https://source.android.com/source/download.html
************************************************************

oracleのサイトに行って、JDK6をダウンロードしてインストールする。かなり省略するが、以下の様な感じにPATHを通せば良い。

PATH=$PATH:$HOME/jdk1.6.0_39/bin
JAVA_HOME=$HOME/jdk1.6.0_39
export JAVA_HOME

oracleアカウントが必要になってかなりイライラさせられるが、ダウンロードの準備をする。

mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
PATH=~/bin:$PATH
mkdir android
cd android
repo init -u https://android.googlesource.com/platform/manifest

以下のコマンドでbranchをリストアップし切り替える。

ls -1 .repo/manifests.git/logs/refs/remotes/origin/
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

■ダウンロード

以下のコマンドでダウンロードする。恐らく1時間以上かかる。

repo sync

■ビルド

source build/envsetup.sh

largeでも4時間以上かかるらしいのでそれよりも大きいインスタンスを選択する事を勧める。

make

考えてみたらlargeだと4コアなので以下のコマンドでビルドする。

make -j4

ちなみにOpenWnnをビルドしたかったので以下のように実行した。smallインスタンスでも1時間以上かかるのでlarge以上にするのが良い。

make OpenWnn

共有ライブラリは以下のパスに生成される。

out/target/product/generic/obj/lib/libwnndict.so
out/target/product/generic/obj/lib/libWnnJpnDic.so
out/target/product/generic/obj/lib/libWnnEngDic.so

OpenWnnのソースの取得

リモートのソースをそのまま持ってきても問題ないのだが、OpenWnnのソースの取得だけだったら、以下のコマンドですぐに終わる。

git clone https://android.googlesource.com/platform/packages/inputmethods/OpenWnn.git

ちなみに中国語は以下のディレクトリにある。

git clone https://android.googlesource.com/platform/packages/inputmethods/PinyinIME.git

その他の言語はLatin語としてまとまっていて以下のコマンドを実行する。

git clone https://android.googlesource.com/platform/packages/inputmethods/LatinIME.git

必要ならば適切なブランチに切り替える。

git checkout -b ics-mr1-release origin/ics-mr1-release

以下のコマンドを実行してリモートの共有ライブラリをローカルに配置する。

cd OpenWnn/libs/
mkdir armeabi
cd armeabi
scp -i your_key.pem user@host:/home/user/android/out/target/product/generic/obj/lib/libwnndict.so ./
scp -i your_key.pem user@host:/home/user/android/out/target/product/generic/obj/lib/libWnnJpnDic.so ./
scp -i your_key.pem user@host:/home/user/android/out/target/product/generic/obj/lib/libWnnEngDic.so ./

EclipseのProject ExplorerでImport > Existing Android ProjectでImportする。この時、Copy projects into work spaceにチェックを入れる必要がある。

参考