« 2008年09月 | メイン | 2008年11月 »

2008年10月 アーカイブ

2008年10月02日

iPhoneのNDA緩和

iPhone関連のリリース済のものに対するNDAを取り消すそうです。
http://developer.apple.com/iphone/program/

iPhone関連の書籍の出版ラッシュがすごいですね。
これでやっとiPhone関係の情報がたくさん出てきますよね。盛り上がりそうです。

2008年10月22日

Android - ソース公開 & iPhone - 出荷台数

ついにAndroidのソースコードが公開されました。
http://source.android.com/

2.1GBとデカい&gitで公開されていますので、気をつける必要がありそうです。ビルドのことも考えると、Windowsだと色々と面倒そうですね。

また、米ではAppleの第4四半期決算が発表されました。
iPhoneは、この四半期で6,892,000台売れたとあります。
http://www.apple.com/pr/library/2008/10/21results.html

わかりませんが、好調なのではないでしょうか。

2008年10月31日

Android - Eclipseで開発時にAndroid SDKのソースコードを見る方法

Eclipse(ADT)を使ってAndroid Projectで開発している際に、デバッグなどの目的でAndroidのJavaのソースコードを参照したいことがあると思いますが、どうすれば効率がよいかちょっと悩み中です。とりあえず私が現在やっている方法を書きます。ので、もしもっといい方法があれば教えて下さい。

私が悩んだところは以下の2点です。

1. ディレクトリ構成
Repo(git)で取得したpublicリポジトリのディレクトリ構成だと同一の(またはよく似た)Javaパッケージが別のProjectにも入っていたりするので、ソースコードを手軽にアタッチすることが出来ません。なので、SDK部分のソースコードを見たくなったときは、そのソースのある場所を探さなければならないというわずらわしさがあります。私は最初はシンボリックリンクで何とかしようと思ったのですが、面倒すぎて途中で挫折しました。現在は以下のようなrubyスクリプトを書き、必要そうなJavaソースをSDKのホームディレクトリへコピーしています。リポジトリが更新されたら、スクリプトを流しなおします。

require 'fileutils'

#####################################################################
# Android SDK home
$SDK_HOME = "/User/egawa/android/android-sdk-mac_x86-1.0_r1"
# the root directory was pulled down from the public Android repositories
$SRC_ROOT = "/User/egawa/android/gitsources"
#####################################################################

$SDK_SRC_DIR = File.join($SDK_HOME, "sources")

$FILTERS = [
  /.+\/src\/main\/java\/(.+$)/,
  /packages\/.+\/src\/(.+$)/,
  /external\/.+\/src\/(.+$)/,
  /external\/.+\/src\/(.+$)/,
  /frameworks\/base\/awt\/java\/(.+$)/,
  /frameworks\/base\/cmds\/am\/src\/(.+$)/,
  /frameworks\/base\/cmds\/input\/src\/(.+$)/,
  /frameworks\/base\/cmds\/pm\/src\/(.+$)/,
  /frameworks\/base\/cmds\/svc\/src\/(.+$)/,
  /frameworks\/base\/core\/java\/(.+$)/,
  /frameworks\/base\/graphics\/java\/(.+$)/,
  /frameworks\/base\/location\/java\/(.+$)/,
  /frameworks\/base\/media\/java\/(.+$)/,
  /frameworks\/base\/opengl\/java\/(.+$)/,
  /frameworks\/base\/packages\/SettingsProvider\/src\/(.+$)/,
  /frameworks\/base\/packages\/SubscribedFeedsProvider\/src\/(.+$)/,
  /frameworks\/base\/sax\/java\/(.+$)/,
  /frameworks\/base\/test-runner\/(.+$)/,
  /frameworks\/base\/tools\/.*\/src\/(.+$)/,
  /frameworks\/base\/wifi\/java\/(.+$)/,
  /frameworks\/policies\/base\/phone\/(.+$)/
]

def match filepath
  $FILTERS.each do |filter|
    return $1 if filter =~ filepath
  end
  nil
end

STDOUT.sync = true
puts "copying sources from #{$SRC_ROOT} to #{$SDK_SRC_DIR}"
Dir.glob("#{$SRC_ROOT}/**/*.java").each_with_index do |src, index|
  print '#' if index % 100 == 0
  next unless matched_src = match(src)
  dest = File.join($SDK_SRC_DIR, matched_src)
  FileUtils.makedirs(File.dirname(dest))
  FileUtils.cp(src, dest)
  # log
  # puts "#{src} was copied to #{dest}"
end
puts ''
puts 'done.'

2. android.jarの中に含まれていないクラス

ZygoteInitやActivityThreadなどはpublicリポジトリにソースはありますが、SDKのandroid.jarにはクラスが含まれていません。このようなものはコンパイルタイムではEclipseにクラスとして認識されていないので「型を開く(Open by Type)」などでも出てきません。多分アプリを作っている限りは、それらのクラスと直接依存するようなコードを書くことはないと思うので、実際にはあまり不便を感じないかもしれませんが、ランタイムでは、たとえば、デバッグモードで実行し任意の場所で止め、コールグラフからActivityThreadなどのソースに飛びたいことがあります。ソースが見れないときにはEclipseからソースのありかを求められるので、そのときに先ほどのスクリプトで取得したソースコードのディレクトリをexternal folderとして指定することで、参照できるようになります。android.jarに対するソースコードのアタッチとは別になります。

About 2008年10月

2008年10月にブログ「GrandNature」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2008年09月です。

次のアーカイブは2008年11月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。