2012年12月28日金曜日

【Android】AVDManagerで作成したAVDを好きな場所に保存する方法

環境変数

ANDROID_SDK_HOME

を設定すればその場所配下に「.android」が作成されます

2012年12月27日木曜日

PANIC: Could not open

ようやく原因がわかりました。。。

■問題
AVDManagerを起動してAVDを作成するがStartするとPANIC: Could not openとなりAVDを起動することができない

■解決策
C:\Users\username\Documents\.android

にあるフォルダを

C:\Users\username\.android

に移動します

■原因
AVDManagerでAVDを作成するとドキュメント配下にAVDのファイルが作成されるが
AVDManagerでStartとすると参照する先がusername直下の「.android」を参照しにいく


えーって感じだけど自分だけなのかなー。
起きた背景としてはeclipseを3.7から3.8にバージョンアップしたのと
SDKManagerからアップデートしただけなんだけどなー

まぁとりあえずはAVDを作成したらコピーして緊急対応したいと思います

2012年12月25日火曜日

eclipseをバージョンアップする方法

  1. eclipseを起動します
  2. メニューバーから Windows→Preferences を選択します
  3. ダイアログが表示されるので、左メニューから Install/Update を選択します
  4. Available Software Sites でアップデートしたいバージョンのアップデートサイトが登録されているか確認します(以下、例を参照)
    • 4.4・・・http://download.eclipse.org/releases/luna/
    • 4.3・・・http://download.eclipse.org/eclipse/updates/4.3
    • 4.2・・・http://download.eclipse.org/eclipse/updates/4.2
  5. 確認できたら一旦ダイアログを閉じます
  6. メニューバーから Help→Check for Updates でアップデートします

eclipseの公式サイトからわざわざダウンロードしなくてもeclipseから直接アップデートできます
お試しあれー

・バージョンアップサイト一覧

・Tips
自分が経験したのでメモしておきますが、上記方法でupdateしたらうまくeclipseが起動できなくなることがありました
その場合は最新版のeclipseのzip版ををダウンロードして既存のディレクトリに上書き展開したら起動しました
ただ、プラグインがうまく動作しないものがあったのでその場合は面倒ですが、該当するプラグインをuninstall -> install しました
「-clean」オプションを付与するとうまく起動する可能性もありますが自分はダメでした 


2012年12月24日月曜日

Location of the android sdk has not been setup in the preferences

eclipseをJUNO(3.8)にアップデートしたらタイトルのエラーが出るようになった

eclipseからAVDManagerが起動できなくなった。。。

ちゃんとパスも設定されているのになぜだ。とずっと悩んでいたがようやく原因がわかった。

パスの設定に「\」が入っているとダメになる場合があるようで

「\」→「/」

にするとエラーがなくなり、設定したVirtualDeviceも認識されるようになった。

うーん、バグなのかな。

P.S
最後にも「/」を入れてあげるようにしましょう

P.S2
どうやらeclipseのバージョンが3.8(Juno)である場合には毎回Android SDKのパスを設定する必要があるみたいです
毎回「/」を入れて(あったら削除して)読み込んであげないとダメみたい・・・バグだろ

githubに公開されているAndroidリポジトリをeclipseプロジェクトにする方法

すいません、この記事何度も追記しております。。。
20140603の追記がちょっと下にありますのでその手順が一番いいと思いますのでその手順を参考にしてみてください

  1. git cloneでリポジトリをローカルにコピー
  2. eclipseで適当な名前でいいのでAndroidプロジェクト(Android Application Project)をデフォルトの設定で作成
  3. cloneしたリポジトリのファイルから「libs」「res」「src」「AndroidManifest.xml」「proguard-project.txt」「project.properties」を作成したプロジェクト配下に上書きコピー
  4. プロジェクトをcleanする(おそらくエラー状態になります)
  5. src 配下のデフォルトで作成されたパッケージを削除します
  6. bin, gen フォルダを削除して再生成させます
  7. 一旦eclipseを再起動でエラーが解消されると思います

自分がやった限りだとこれが一番手っ取り早い気がします。

ただ、この場合eclipseからコミットできないんですよね。。。
コミットしたら再度上書き保存でプロジェクトclean。。。せつない。。。

なんか他に良い方法とかあるのかなー。。。

P.S 20140116
もっと簡単な方法があったので紹介します
  1. githubからandroidプロジェクトのリポジトリをcloneします
  2. eclipseを開き「Package Explorer」のどこかで右クリックしNew->Otherをクリックします
  3. ウィザードで「Android Project from Existing Code」を選択しNextをクリックします
  4. RootDirectoryの選択で先ほどcloneしたフォルダの1つ上のフォルダを選択します
  5. ※C:\git\android-ncmb-sampleにクローンしたら「C:\git」を選択します
  6. Finishをクリックすればプロジェクトの作成が完了です

P.S 20140131
上記の既存コードをプロジェクトにする方法ですが自分がやった感じだと3系のeclipseだとうまくいかないことがありました
ルートフォルダを選択してもうまくAndroidのプロジェクトを探してくれません
4系のeclipseだと問題なくインポートできたので4系にする必要があるかもしれません

P.S 20140603
いろいろ書きましたがやり方自体が間違っていたようです
以下の手順が一番簡単なインポート方法かと思います

1. githubから対象のandroidプロジェクトのリポジトリをcloneします
git clone https://github.com/kakakikikeke/android-data-trade-sample.git
※Windows環境でgitコマンドが使えない場合は「git for Windows」や「msysgit」をインストールしてください

2. eclipseを開き右上のパースペクティブの選択で「Git」を選択します
※eclipseでgitを使うにはプラグインで「EGit」をインストールする必要があります
※EGitのインストールはEclipse Marketplaceを使うのが簡単です


3. パースペクティブが切り替わったら左ペインから「Add an existing local Git repository」をクリックします


4. eclipseに追加するリポジトリを選択します、先ほどcloneしたディレクトリを入力して「Search」をクリックするとgitリポジトリを検索してくれます
リポジトリが見つかったチェックボックスをONにしてFinishをクリックします
※Searchしてもリポジトリが見つからない場合は検索しているディレクトリがcloneしたディレクトリになっているか確認してください


5. リポジトリが追加されたらリポジトリを選択し右クリックで「Import Projects...」を選択します


6. プロジェクトとしてインポートする方法を選択するウィザードが開きますので「Import existing projects」を選択しNextを押します


7. プロジェクトとしてeclipseにインポートする際のプロジェクト名が表示されますのでFinishをクリックしてインポート完了です


このとき「No Projects found」となって以下のようなエラーになる場合には


Githubからcloneしたリポジトリ内に「.classpath」と「.projects」ファイルがないのが原因です
大抵のJavaプロジェクトはGithubで公開するときに .classpath や .projects ファイルを .gitignore に記載してコミットしないようにしています
eclipseはこの2つのファイルを元にプロジェクトをインポートするので、この2つのファイルが存在しないとインポートできません
すでにeclipseに他のプロジェクトがある場合はその配下にある .classpath と .projects ファイルをコピーしてもいいですが、内容が全く同じではダメなので適宜書き換える必要があります
もし既存のプロジェクトもない場合に一度インポートするプロジェクトと同じプロジェクトをeclipse上に作成し、そのプロジェクト配下から .classpath と .projects をコピーしてくるのがいいかと思います
また、今回インポートしようしとしているプロジェクトはAndroidプロジェクトなので別途作成するプロジェクトはAndroidプロジェクトを作成してください
MavenプロジェクトやTomcatプロジェクトを作成すると .classpath や .projects の内容が大きく異なりますのでご注意ください(主に異なるのは .classpath になるかと思います)
.classpath と .projects をcloneしたリポジトリにコピーしたら.projectsファイルのを開いて<name>タグの部分を編集します
ここにはeclipseにインポートする際のプロジェクト名を記載する必要がありますので、既存のプロジェクト名と重複しないようにして好きなプロジェクト名を入力してください
編集が完了したら再度 6. の手順からインポートするとエラーとならずインポートできるかと思います

8. インポートが完了したらパースペクティブをGitからJavaに変更すればインポートしたプロジェクトが左ペインに表示されているかと思います
ここでプロジェクトにエラーが発生している場合は一度プロジェクトをcleanしてみるといいかもしれません
それでもエラーが発生している場合は「クラスパスの問題」や「足りていないライブラリある」「文字コードがおかしい」等いろいろな要因が考えられますので
eclipseのデバッグコンソールからエラー内容を確認して対処していくのがいいと思います

rsyncでproxyを使う方法【Squid編】

■Squidインストール
yum -y install squid

■Squid設定
vi /etc/squid/squid.conf
574行目あたり
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 873      # ← add 873
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl Safe_ports port 873         # for rsync proxy ← new
acl CONNECT method CONNECT

■rsyncdの設定(xinit.dの設定)
vi /etc/xinetd.d/rsync
service rsync
{
        disable = no # ここをnoにする
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}
/etc/init.d/xinetd reload

■rsync設定
export RSYNC_PROXY=proxy_server:873

■実行
rsync -av test.txt root@dest_server:/root/




とか必死こいていろいろググったりして設定したけど結局正解は以下でしたw
vi /root/.ssh/config
Host dest_server
        ProxyCommand ssh root@proxy_server nc %h %p
http://kakakikikeke.blogspot.jp/2012/03/10ssh.html
sshのノンパス設定を実施してからすれば2回パスを聞かれることもありません

ヒントになったのは以下のエラーメッセージでした
ssh: connect to host 172.29.32.206 port 14022: Connection timed out
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(463) [receiver=2.6.8]

ネットの情報も全部信じちゃダメよってことですね

2012年12月23日日曜日

init_cache_dir /var/spool/squid... /etc/init.d/squid: line 62: 9145 アボートしました

■エラーメッセージ詳細
init_cache_dir /var/spool/squid... /etc/init.d/squid: line 62: 9145 アボートしました$SQUID -z -F -D >> /var/log/squid/squid.out 2>&1
squid を起動中: /etc/init.d/squid: line 42: 9146 アボートしました$SQUID $SQUID_OPTS >> /var/log/squid/squid.out 2>&1

■対処方法
vi /etc/squid/squid.conf
visible_hostname hostname
service squid start