ビルドするときにエラーが出る(Localizable.stringあたり?)
iPhoneアプリの知識ゼロなので、根本的な原因はいまいち理解できていないですが…;;
今後も発生しそうなのでメモしておきます。
エラーが起こった状況
os:MacOSX 10.6.4 Xcode:バージョン3.2.5 iOS SDK:4.2 状況:ビルド時にエラー
エラーメッセージ
Command /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copystrings failed with exit code 71
解決策
ターミナルでrubyのパスを修正
$ mv /usr/bin/ruby_org /usr/bin/ruby
実は、デフォルトで入っているrubyではなくて、MacPortsでインストールしたrubyを使うため、オリジナルの物はリネームしていました。
なぜrubyのパスが必要なのかなどなど詳しい事は調査中です- -;
また、一度ビルド成功すると、元の設定(MacPortsでインストールしたrubyを使う設定)に戻しても大丈夫なようです。
2011/1/10追記
なぜrubyのパスが必要かわかりました><
ちゃんとエラーメッセージ読めばわかりました;;
エラーメッセージ
Command /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copystrings failed with exit code 71
copystringsをみてみると…
#!/usr/bin/ruby # # copystrings [options] SRCFILE ... DSTDIR$ # # Copyright (c) 2008-2009 Apple Inc. All rights reserved. # # This script copies one or more localization .strings files from the provided # source file paths to the destination directory. The destination files wil # have the same names as the source files. The validity of each source file is # optionally checked before the file is copied. Also, the encoding of each of # the files is converted to the specified output encoding (usually UTF-16) as # the file is copied. The output encoding can be specified # as "binary" to get a binary format instead of a text file. #
思いっきりruby呼んでますね…。このパスを自分の環境に合ったものに変えたらOKなのだと思います。
eclipseでエラーが消えない
すごくご無沙汰です。
色々ありましたがブログは更新できず…でした。
久々の更新です。
今後はもう少し色々書いていけたらな…と思っています。
さてさて、eclipseで作業をしていたところ、エラーが消えない事がありました。
エラーが起こった状況
os:WindowsXP eclipse:3.6(Helios) 状況:エラーのあるファイルを削除した際に プロジェクト名のところについたエラー印(赤い×)が 消えず、ビルドができなくなる
エラーメッセージ
Unparsed aapt error(s)! Check the console for output.
解決策
プロジェクトのクリーンを実行
[プロジェクト]>[クリーン]
最初はわざわざプロジェクトをエクスポートして、再度インポート…とやっていたのですが、クリーンを実行すればエラーが消えました…。
しょうもなー!って感じですが、一応自分用にメモですw
xamppでVirtual Hostの設定をすると403エラー
ご無沙汰してしまいました…。
ちょっと違う仕事をしていたため、最近開発ができず…orz
xamppでちょっと手間取った事があるのでメモします。
エラーが起こった状況
os:WindowsXP xampp:version 1.6.8 エラー内容:VirtualHostを設定したがエラーが出てアクセス出来ない。
エラーメッセージ
Access forbidden! 要求されたディレクトリへのアクセス権限がありません。 インデックスドキュメントが存在しないか、 ディレクトリの読み込みが許可されていません。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。 Error 403
httpd.confの設定(抜粋)
<VirtualHost *:80> DocumentRoot "C:/xampp/htdocs/v_dir" </VirtualHost> <VirtualHost *:8080> DocumentRoot "C:/xampp/htdocs/v_dir2" </VirtualHost>
解決策
virtualhostを設定した際は、再度Directoryディレクティブの設定を行わないと行けないみたいです。
xampp1.7.3では設定しなくてもエラーはでなかったのですが…。
修正したhttpd.conf
(ローカルからのみアクセス可の設定)
<VirtualHost *:80> DocumentRoot "C:/xampp/htdocs/v_dir" </VirtualHost> <VirtualHost *:8080> DocumentRoot "C:/xampp/htdocs/v_dir2" </VirtualHost> # 追加 <Directory "C:/xampp/htdocs/v_dir"> Options Indexes -FollowSymLinks Order deny,allow Deny from all Allow from localhost </Directory> <Directory "C:/xampp/htdocs/v_dir2"> Options Indexes -FollowSymLinks Order deny,allow Deny from all Allow from localhost </Directory>
これで問題なくアクセスできるようになりました。
あとxamppの最新版だとPHP切り替えができない等色々ありましたが、それは別記事でまとめたいと思います。
CygwinでUnable to access jarfile
eclipseでAndroid SDKのソースコードを見る
デバッグ中にAPIのソースコードをみたくなる事ありますよね。そこでeclipseからAndroid SDKのソースコードを見る方法を調べました。
1.gitをインストール
Git(ギット)とは,ソフトウエアのリビジョンおよびソースコードを管理するために使われるオープンソースの分散型バージョン管理システムです。
http://itpro.nikkeibp.co.jp/article/Keyword/20090508/329716/
(中略)
話題の携帯機器向けOS「Android」のソースコードもGitを使って管理されていたりします。
このgitを使ってソースコードをダウンロードします。
調べてみるとWindowsでgitを使うにはCygwinを入れてアレコレする方法が出てきたのですが、ちょっと面倒だなーと思いさらに調べると、便利ツールがありました。
msysgit-http://code.google.com/p/msysgit/
Windowsからgitを使うためのソフトウェアで、インストーラーでサクっとインストールできます。
ここではGit-1.7.0.2-preview20100309.exeをダウンロードしてインストールします。
後でコマンドラインから呼び出すのでパスを通しておいてください。
私の環境では下記をPATHに追加しました。
C:\msysgit\msysgit\cmd
2.ソースを取得
まず、作業用のディレクトリを作成します。
ここでは下記のようにしました。
C:\android\mydroid
mydroidにgitで取得したソースコードをダウンロードしてきます。
コマンドプロンプトを起動してC:\android\mydroidに移動します。
そして下記コマンドを実行します。
git clone git://android.git.kernel.org/platform/frameworks/base.git
しばし待つ(環境によってはかなり時間がかかるかもしれません)とソースコードが取得できます。
3.eclipseでソースを見れるように設定
私の環境は下記のようなディレクトリ構成です。
androidのバージョン毎にディレクトリが分かれています。
C:\android |__android-sdk-windows |__add-ons (略) |__platforms |__android-2 ←------Android1.1 |__android-3 ←------Android1.5 |__android-4 ←------Android1.6 |__android-5 ←------Android2.0 |__android-6 ←------Android2.0.1 |__android-7 ←------Android2.1-update1 |__android-8 ←------Android2.2
プロジェクトでターゲットに設定したバージョンのディレクトリ内にソースコードを配置することで、eclipseからソースが見れるようになります。
例)Android1.6(android-4)にソースコードを配置する場合
1.ソース配置用ディレクトリsourcesを作成
(ディレクトリ名を間違えないよう注意)
C:\android\android-sdk-windows\platforms\android-4\sources
2.sourcesディレクトリにgitで取得したソースのうちmydroid\base\core\java以下をコピー
3.core配下に無いソースで必要なものがあればmydroid\baseから同様にコピー
4.eclipseを再起動
4.Android SDKのソースを見てみる
4.1.適当なプロジェクトを開く(該当するバージョンのディレクトリにソースコードを配置しておくこと)。
4.2.パッケージエクスプローラからAndroidx.x(該当するバージョン)を選択。
4.3.見たいソースのパッケージを選択する。ここではandroid.appを選択。
4.4.見たいソース(.classが付いている)を選択。ここではActivity.classを選択。
ソースコードが表示される。
自分で書いたソースコード中で「宣言を開く」としてもソースを見ることができます。
補足
- ソースコードをブラウザから直接見たい場合は下記URLからアクセスすると見れます。
見たいソースコードの"raw"をクリックしてください。
projects / platform/frameworks/base.git / tree
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tree;f=core/java/android/app;hb=HEAD
- もし、ソースが見れないときは、sourceディレクトリ配下に該当するパッケージが配置されているか確認してください。もし無いようでしたら、おそらくmydroid\base配下にあると思うので、それをsourceディレクトリにコピーしてください。
- 注意:gitでダウンロードしたソースはバージョンが最新のものだと思われます。そのため違うバージョンをターゲットにしたプロジェクトで見るとズレ等が起こる事があります。
参考URL
http://d.hatena.ne.jp/yhanada/20090731/1249045594
SQLiteに直接アクセスする
DBアクセスをするサンプルアプリを動かしていて、「本当にDBに書き込みできてるのかな??直接見てみたいなぁ」と思い、方法を調べてみました。
なかなか方法が見つからず、まさか無理なわけないよな…と思っていたら、公式の開発ガイドに載っていました…。
灯台下暗しもいいところですね…。
と、いうわけで、困ったらまずは開発ガイドやリファレンスを読みましょうという事で><
SQLiteのデータベースにアクセスする方法
(windowsの場合)
1.コマンドプロンプト起動
2.android SDKのtoolsの中にあるadbコマンド*1を使う
2.1.エミュレータの端末IDを取得
>adb devices List of devices attached emulator-5554 device ←-----これが端末ID
2.2.エミュレータにシェルで接続
>adb -s emulator-5554 shell #
2.3.接続したいデータベースを指定してSQLite3コマンドを実行
ここでは下記条件の場合になります
パッケージ名 | アプリ名 | DB名 |
---|---|---|
jp.co.test.android | SQLiteTest | test.db |
# sqlite3 /data/data/jp.co.test.android.SQLiteTest/databases/test.db sqlite3 /data/data/jp.co.test.android.SQLiteTest/databases/test.db SQLite version 3.5.9 Enter ".help" for instructions sqlite> .databases ←-----目的のDBに接続できたか確認 .databases seq name file --- --------------- ---------------------------------------------------------- 0 main /data/data/jp.co.test.android.SQLiteEx/databases/test.db ↑-----ここに指定したDB名が表示されていればOK
2.4.SQLを実行してみる
sqlite> select * from test; select * from test; 0|2000|りんご 1|1000|みかん
(補足)
このままだとちょっと見づらいかなーと思うので、カラム名の表示をONにします。
sqlite> .header on .header on sqlite> select * from test; select * from test; id|price|name 0|2000|りんご 1|1000|みかん
おそらく実機にも同様の手順でDBにアクセスできるかと思います。
参考URL
http://developer.android.com/intl/ja/guide/developing/tools/adb.html#shellcommands
*1:toolsフォルダのパスを通していない時はtoolsフォルダに移動してからコマンドを実行する
アプリ実行時のエラー:emulator-5554 disconnected!
またもサンプルプログラムを動かしていたら次のようなエラーがでました。
emulator-5554 disconnected! Cancelling 'net.npaka.surfaceviewex.SurfaceViewEx activity launch'!
原因はわからないのですが、下記方法で対処できました。
- 《実行》-《実行構成》を選択
- 実行構成ウィンドウの《共通》タブを開きます
- 画面下の「バックグラウンドでの起動」チェックボックスを外します
あとはエミュレータのリセットという方法もあるようですが、エミュレータが初期化されるので最終手段ということで…。
参考URL
http://bsabi.blogspot.com/2010/04/android_15.html
- Android Help -emulator-5554 disconnected!
http://androidforums.com/android-developers/5398-android-help-emulator-5554-disconnected.html