2015年6月12日金曜日

Mac OS X Yosemite 10.10.3でParrot社のDroneSDKをAndroid向けにビルド

いろいろな事前準備と予期せぬエラーで大変だったのでメモしておきます。
間違っていたらご指摘ください。コメントなどで補足いただけると幸いです。

※個人メモのコピペなので親切じゃないです。
パスなど環境は適宜に読み替えてください。
※個人の環境によっても発生するエラーが異なるので
がんばってください。。。orz

公式ブログも合わせてご参照ください。
http://ardroneblog.com/ARDroneBlog/DroneBlog/Entries/2015/2/24_Bebop_SDK_in_OSX.html

-------ここから------
Homebrewをインストールして、brewコマンドを使えるようにしておく

Oracle Javaをインストールしてjava -versionでバージョン表示されるようにする

brewコマンドでgit, wget, automake, autoconf, libtool, yasm, nasm, mysqlあたりはインストールできるはず。
※mysqlはなぜかビルド失敗時にそれ関係のログを吐いたので入れてます

rplは以下のURLからダウンロードして解凍してパスに通しておく
http://sourceforge.net/projects/rpl/files/rpl/rpl-1.5.5/

AndroidSDKとAndroidNDKをそれぞれダウンロードして解凍しておく
適当に~/devディレクトリを作成して、~/dev/sdk、~/dev/ndkのように入れておく
次にANDROID_SDK_PATHとANDROID_NDK_PATHにそれぞれSDKのルートまでのパスをとおしておく。
Macだと~/.bash_profileでいいと思います。

$ANDROID_SDK_PATH/tools/androidを起動してAPI14とAPI19の2つに関するもの、
ADTの最新版をインストールしておく。
SupportLibraryなども入れといた方が良さそうです。

~/dev/android_toolchainsディレクトリを作成し、さらに中に
~/dev/android_toolchains/toolchain_arm,
~/dev/android_toolchains/toolchain_mips,
~/dev/android_toolchains/toolchain_x86の3つのディレクトリを作成する

以下のコマンドで上記の3つのディレクトリにツールを入れる
$ANDROID_NDK_PATH/build/tools/make-standalone-toolchain.sh --platform=android-14 --arch=<arch> --install-dir=<your/installation/dir>
【注意】
<arch>はそれぞれarm, mips, x86
<your/installation/dir>はフルパス指定で作成した3つのディレクトリをそれぞれ指定
(例)
<arch>がarmの場合は、
<your/installation/dir>を/Users/tsuyoshi/android_toolchains/toolchain_arm

上記のすべてが終われば事前準備は完了のはず。はず。

ビルドスクリプトをgitからダウンロードする。
~/dev/dronesdkを作成して
cd ~/dev/dronesdk; git clone https://github.com/ARDroneSDK3/ARSDKBuildUtils.git
すでにclone済みの人はgit pullで最新版にしておいてください。

【注意】
以下は、ARSDKBuildUtilsの中のpythonスクリプトが実行できない場合、改行コードが影響していると思われるエラーが出たらやってください。実行できるなら必要ないです。
ARSDKBuildUtils以下にある.pyファイルの改行コードをLFに変換する。
ARSDKBuildUtils/Utils以下にある.bashファイルの改行コードをLFに変換する。

環境セットアップが正しいかどうか必ずCheckEnv.pyを実行してオールグリーンにしておく
ただし、AndroidSDKのAPI19をインストールしてもMissingって出るのは放置。←10.10.3では出なかったな。。。
Platoforms/Android-19があることを確認して、あればおk。

CheckEnv.phを実行してAndroidセクションがOKであれば次はビルドを実行する

./SDK3Build.py -t Androidとすればビルドが開始される

2015/06/05にビルドしたらopensslのダウンロードで証明証エラーでコケる。
opensslで証明証エラーって怖いな。。と思いつつ、手動でダウンロード。
※これは発生しない場合もあったので注意
wget --no-check-certificate https://www.openssl.org/source/openssl-1.0.2a.tar.gz -O /Users/[USERNAME]/mydev/drone/dronesdk/ARSDKBuildUtils/../openssl/openssl-1.0.2a.tar.gz
【追記】2015/06/12時点で上記のコマンドではエラーになる。原因はopenssl-1.0.2a.tar.gzがないようだ。openssl-1.0.2b.tar.gzになっているので以下のように手動でダウンロードおよび解凍をしてください。--no-check-certificateオプションは必要に応じて。
wget --no-check-certificate https://www.openssl.org/source/openssl-1.0.2b.tar.gz -O /Users/[USERNAME]/mydev/drone/dronesdk/ARSDKBuildUtils/../openssl/openssl-1.0.2a.tar.gz
ダウンロードしたら、手動で解凍します。
cd ../opensslに移動して、tar xzvf openssl-1.0.2a.tar.gzで解凍します。
openssl-1.0.2bと解凍されるので、openssl-1.0.2aにリネームしてください。

そしたら、またARSDKBuildUtilsディレクターに戻って、
再度./SDK3Build.py -t Androidを実行してください。

スペックに依存しますが、10分前後くらい時間かかります。
正常にすべてのビルドが終了すると以下のような表示になるはずです。
そうするとARSDKBuildUtils/Targetsの中にビルド結果ができてますね。
結構面倒です。
がんばってください。。。

2015年1月23日金曜日

LOVE TOHO(Android版も)で映画上映時間をサクッと確認

映画好きの方に朗報です!
TOHOシネマズで映画をよく観る、という方のために「LOVE TOHO」というアプリを制作しました。
iOS版→https://itunes.apple.com/JP/app/id864004130
Android版→https://play.google.com/store/apps/details?id=jp.tajisoft.android.lovetoho2&hl=ja

アプリを起動するだけで上映時間が表示されます。
劇場を選択することで全国のTOHOシネマズの上映時間を観ることができます。
「マイシネ」として登録しておくと以降の起動で優先的に表示されます。


映画タイトルをタップすると映画の詳細情報が表示されます。

さらに上映予定のタイトル一覧も見れます。もちろん詳細情報も見れます。
通知登録すると前日にプッシュ通知してくれます。
観たい映画を見逃すこともなくなりますよ。


←iOS版












←Android版

2015年1月6日火曜日

Android StudioでFacebook SDKを追加する際に発生するエラーの回避

OS: Mac OS X 10.10
Android Studio: 1.0.2
Facebook SDK: 3.21.1

主に2つのエラーに出くわしました。
・SDKに関するプロパティがない
・bolts-androidがない
前者はわりと簡単に解決できました。
後者は他のブログでおっしゃっているような方法とちょっと異なっていたので、
メモしておきます。
例えば下記のブログエントリーではboltsのパスを書き換えればよいと書いてある。

android studioでfacebook sdkを使えるようにするまでにやった事


でも実際のbuild.gradleは以下のような記述になっています。
compile 'com.parse.bolts:bolts-android:1.1.2'
しかし、しっかりとbolts-androidは存在していた!なのになぜ?!
もしかして、mavenCentral()って書いてあるけど見てない??
facebookのbuild.gradleのリポジトリはmavenCentral()となっているけど、
作成したプロジェクトのbuild.gradleはjcenter()ってなってる!!!?ん??
ん??もしかしてこれに上書きされているのか!?
もっと調べてみるとSOFでこんな投稿を見つけた。
http://stackoverflow.com/questions/24852219/android-buildscript-repositories-jcenter-vs-mavencentral
どうやらまだ統一されていないようだ。

いろいろgradleファイルのrepositoryを書き換えてリビルドしたけど結局解決しないので、libsにあるものを見るようにしてあげた。これで一応ビルドは通るけどしっくりこないんだよね!!
//compile 'com.parse.bolts:bolts-android:1.1.2'
    compile files('libs/bolts-android-1.1.2.jar')

原因が分かる方いましたら教えてくださいm(_ _)m

とりあえずこれで。
まとめると以下のような手順。

1.SDKファイルをダウンロードする
ダウンロード先:https://developers.facebook.com/docs/android?locale=ja_JP
2.Android Studioにインポートする
2−1.Android Studioを起動する
2−2.ダウンロードしたzipファイルを解凍する
2−3.Android Studioの[File]-[Import Module...]を選択する
2−4.回答したフォルダ(例:facebook-android-sdk-3.21.1)の中のfacebookというフォルダを選択する
2−5.下記のようなエラーメッセージが表示される
Error:(8, 0) Could not find property 'ANDROID_BUILD_SDK_VERSION' on project ':Todo'.
2−6.gradle.propertiesフィアルに以下を追加する
※編集できないというメッセージが出ても強制編集
ANDROID_BUILD_TARGET_SDK_VERSION=18
ANDROID_BUILD_TOOLS_VERSION=20
ANDROID_BUILD_SDK_VERSION=18
ANDROID_BUILD_MIN_SDK_VERSION=14
2−7.Android Studioの[Build]-[Rebuild Project]を選択する
3.Android Studioの[File]-[Project Structure...]を選択する
4.左側の[app]を選択し、[Dependencies]タブを選択する
5.左下の[+]ボタンを選択肢[Module Dependency]を選択する
6.先ほど追加した[:facebook]を選択してOKを選択する
7.さらにOKで画面を閉じる
8.今度は以下のようなエラーメッセージが表示される
bolts-android.jarがありません
9.追加したfacebookモジュールのbuild.gradleを開く
10.11行目をコメントアウトし以下のように追加する
    //compile 'com.parse.bolts:bolts-android:1.1.2'
    compile files('libs/bolts-android-1.1.2.jar')
11.Android Studioの[Build]-[Rebuild Project]を選択する

2014年12月22日月曜日

Swift:オプショナル型「!、?」とnil coalescing operator「??」

Swiftコードで見かけて困惑しました。
なんだ、このビックリマークは!
例えば「Int!」「Int?」とかいうキーワード。

なんだこれ??

「??」も含めてまとめてみます。


  • 「?」はオプショナル(Optional)型
  • 「!」は暗黙的開示オプショナル(Implicitly Unwrapped Optional)型
  • 「??」はnil併合演算子(nil coalescing operator)
変数宣言時に使う?と!。
Playgroundで確認してみると怒られているのはInt!にnilを代入しようとする時だけです。

なぜだろうか。

var a: Int? = 10
この宣言は
var a: Optional<Int> = 10
と同等です。
nilが入る可能性があるよという意味らしい。
Intという整数型の値がOptional<>にラッピングされてる!

だから、使うときはラッピングを解いてあげないといけません。
var d = a! - 1
こんな感じです。この作業をアンラッピング(開示)というらしいです。

いちいち面倒くさい!!
暗黙的にやってくれよ!というのが「!」です。
var a: Int! = 10
そうすると、
var d = a - 1
とできます。
var d = a! - 1
としてもエラーは起きないようです。


ちなみに?と!どちらも宣言時はnilが入ってるようです。

?にはOptional Chainingというもう一つ意味があるらしい。
※これはまた今度調べよう。

それよりも「??」が気になる。
ほかの言語でもよく見かける三項演算子の形
var a: Int? = 10
と宣言されているとnilの可能性があるので
var b = a != nil ? a! : 0
というようにnilかどうかチェックするのに便利なのが三項演算子
めんどーーーい!!
var b = a ?? 0
とかけるよ!

以下のサイト(http://qiita.com/cotrpepe/items/518c4476ca957a42f5f1)と書籍を参考にしています。

2014年12月18日木曜日

iOSアプリの64bit対応義務化

アップルからデベロッパー向けにメールが来ました!
2015/2/1からは64bit対応必須、iOS8でビルドするようにと。

ほとんどはビルドオプションを変更すればいいけど、32bitで作ってる部分は修正が必要そうだ。

今後のXcodeはデフォルトで64bitビルドになるのかな?

2014年11月28日金曜日

Mac YosemiteでChrome39がクラッシュする

Chromeがクラッシュする。
リセットしてもクラッシュする。

とりあえずダウングレードしてバージョン38に戻して回避。
以下の方法がGoogle Chrome Help Forumで提案されてました。

1.Chromeを終了する
2.必要あらば、~/Library/Google/Chromeと~/Library/Preferences/com.google.Chrome.plistをバックアップ
3.アプリケーションからGoogle Chrome.appを削除
4.自動更新を無効にする
$defaults write com.google.Keystone.Agent checkInterval 0
5.ここから38をダウンロードしてインストール
※google chromeについてっていうメニューをみない!ここを見ると更新トリガーが入るようで39になってしまう。

とりあえずこれで回避して、
安定したという情報をゲットしてからアップします。

2014年11月6日木曜日

Mac OS X 10.10 YosemiteでPhp Storm 8が起動しない場合

PhpStormを最近愛用しているけど、Yosemiteにアップデートしたら起動しない。

OS:Mac OS X 10.10 Yosemite
PhpStorm:8
Java:1.7, 1.8 両方ともOracle

Appleのデベロッパーフォーラムですでにスレッドが立っていますが、
(https://devforums.apple.com/thread/246986)
Dyld Error Message:
  Symbol not found: _CGContextSetAllowsAcceleration
  Referenced from: /Library/Java/JavaVirtualMachines/1.6.0_29-b11-397.jdk/Contents/Libraries/libawt.jnilib
  Expected in: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices

上記のようなエラーが吐かれてPhpStormは落ちます。
問題はJava1.6にあるようですが、いろいろやるのも面倒なので1.8で動くようにしてあげたら起動した。
動作保証外だと思うので自己責任で。
PhpStorm.appのパッケージを表示してContents/Info.plistの
<key>JVMVersion</key>
<string>1.6*</string>
を
<key>JVMVersion</key>
<string>1.8*</string>
にしちゃう。1.7をインストールしてるひとは1.7でいんじゃないかな?