時々、Linux上で大きなプログラムをいじるとき、昔はemacsだけでやってましたが、最近はもう統合開発環境がないとダメな情けない体になってしまいました。
デフォルトで入っているのが、eclipseなのでよく使います。その時、困るのがフォントです。デフォルトは、monospaceという(英語の)等幅フォントなのですが、日本語のコメント入れると、もうずれまくりです。ぐぐると「こんなフォントを入れるといいよ」とか色々ありますが、ネットに繋がっていない環境でプログラムをいじることが多いので、デフォルトで入っている"Dejavu Sans Mono"を使っています。
2019年8月20日火曜日
2015年6月13日土曜日
既存のgit管理されたCプログラムをeclipseで開発
久しぶりにちょっとした備忘録です。
1.概要
2.eclipseで操作する前の状態
3.eclipseで操作する状態
4.やった方が感じがいいこと
こんな感じで進めていきたいと思います。
1.概要
他のPC、或いは既にプロジェクトが少し進んでいてそれがgit管理されています。そこに参加した、或いは最初はソースコードを書いていただけで、実際のコンパイルをこれから始めるという状況です。
Linuxを想定しますが、eclipse-CDTだとC/C++プロジェクトを作成でき、しかも今はGit管理パッケージが最初から入っています。(数年前はGit管理パッケージが最初は入っていなくて、いちいちEGitを後から入れたりして大変でした)
話を簡単にするために以下の状況を想定します。
・ソースはgithub等のリポジトリにあるわけではなく、何故かローカルでPCに入れてあります。(分散リポジトリなんで、簡単に実現できます)
・~/ProgWork/work以下にgit管理されたソースが入っています。
・そこにはmain.cだけが入っています。
・当然、~/ProgWork/workには .git ディレクトリがあります。
つまり、このgit管理されたものをeclipseで開発を(gitを使いながら)継続したいというわけです。
2.eclipseで操作する前の状態
とりあえずデフォルトの状態として、eclipseの作業ディレクトリは、$HOME/workspaceとしておきます。最初はもちろん何もプロジェクトがなく、空っぽとします。(注:でも最新のeclipseだと、workspace/RemoteSystemTemFilesなんてディレクトリができていました。何でしょこれ?)
3.eclipseで操作する状態
やることは以下の通りです。
(1)eclipseでFileメニューから"Import"を選択する。
(2)選択Dialogが表示されます。その中に、"Git"があります。"Projects from Git"を選択してNextします。
(3)次のDialogで"Existing local repository"というのがでてきますので、これを選択します。(注:ちなみに通常は外部のgithub等からプロジェクトをとってきますから、もう一つの"Clone URI"を選択します。こっちのやり方は以前にも書きましたのでここでは省略します。)
(4)ここで、~/ProgWork/work/.gitを選択します。
(5)後はproject wizardに進みますので、そのまま作業を進めればeclipseで開発が続けれます。
(6)ただこれではプロジェクトを作っただけで、まだ肝心のソースファイルがプロジェクトに入っていません。Fileメニューで作ったプロジェクトにソースファイルを追加してやります。
(7)ただこれだけではまだ、このプロジェクトはGit管理できません。eclipseのTeamメニューでもいつものGit関係のコマンドがでてきません。Teamメニューから"Share project"をしてやる必要があります。
ところでこの状態でディレクトリの状態はどうなっているんでしょう?ここからは実は2通りあります。今回ブログを書くにあたって実験してたら、2通りの状態になってしまいました。どちらが正しい状態かはわかりませんが、どちらも動くようなのでたまたまなのでしょう。
"sample"というc/c++のプロジェクトを作りましたが、~/ProgWork/work/sampleというディレクトリが作成されました。ビルドしたバイナリはここにできます。
問題は、eclipseが管理する、".project"なんですが、これが~/ProgWork/work/sampleにできる場合と、eclipseのデフォルトの、~/workspace/sampleにできる場合の2通りにわかれました。
どちらの場合でも、結局元のソースは~/ProgWork/work/以下にあり、eclipseからは普通に操作できますし、gitでcommitもできます。
(実は、自分はここでworkspace/sample以下にコピーが作成されてしまい、eclipse独自のgit管理に入ってしまうかと予想していましたが、そんなことはありませんでした^^;)
4.やった方が感じがいいこと
1.概要
2.eclipseで操作する前の状態
3.eclipseで操作する状態
4.やった方が感じがいいこと
こんな感じで進めていきたいと思います。
1.概要
他のPC、或いは既にプロジェクトが少し進んでいてそれがgit管理されています。そこに参加した、或いは最初はソースコードを書いていただけで、実際のコンパイルをこれから始めるという状況です。
Linuxを想定しますが、eclipse-CDTだとC/C++プロジェクトを作成でき、しかも今はGit管理パッケージが最初から入っています。(数年前はGit管理パッケージが最初は入っていなくて、いちいちEGitを後から入れたりして大変でした)
話を簡単にするために以下の状況を想定します。
・ソースはgithub等のリポジトリにあるわけではなく、何故かローカルでPCに入れてあります。(分散リポジトリなんで、簡単に実現できます)
・~/ProgWork/work以下にgit管理されたソースが入っています。
・そこにはmain.cだけが入っています。
・当然、~/ProgWork/workには .git ディレクトリがあります。
つまり、このgit管理されたものをeclipseで開発を(gitを使いながら)継続したいというわけです。
2.eclipseで操作する前の状態
とりあえずデフォルトの状態として、eclipseの作業ディレクトリは、$HOME/workspaceとしておきます。最初はもちろん何もプロジェクトがなく、空っぽとします。(注:でも最新のeclipseだと、workspace/RemoteSystemTemFilesなんてディレクトリができていました。何でしょこれ?)
3.eclipseで操作する状態
やることは以下の通りです。
(1)eclipseでFileメニューから"Import"を選択する。
(2)選択Dialogが表示されます。その中に、"Git"があります。"Projects from Git"を選択してNextします。
(3)次のDialogで"Existing local repository"というのがでてきますので、これを選択します。(注:ちなみに通常は外部のgithub等からプロジェクトをとってきますから、もう一つの"Clone URI"を選択します。こっちのやり方は以前にも書きましたのでここでは省略します。)
(4)ここで、~/ProgWork/work/.gitを選択します。
(5)後はproject wizardに進みますので、そのまま作業を進めればeclipseで開発が続けれます。
(6)ただこれではプロジェクトを作っただけで、まだ肝心のソースファイルがプロジェクトに入っていません。Fileメニューで作ったプロジェクトにソースファイルを追加してやります。
(7)ただこれだけではまだ、このプロジェクトはGit管理できません。eclipseのTeamメニューでもいつものGit関係のコマンドがでてきません。Teamメニューから"Share project"をしてやる必要があります。
ところでこの状態でディレクトリの状態はどうなっているんでしょう?ここからは実は2通りあります。今回ブログを書くにあたって実験してたら、2通りの状態になってしまいました。どちらが正しい状態かはわかりませんが、どちらも動くようなのでたまたまなのでしょう。
"sample"というc/c++のプロジェクトを作りましたが、~/ProgWork/work/sampleというディレクトリが作成されました。ビルドしたバイナリはここにできます。
問題は、eclipseが管理する、".project"なんですが、これが~/ProgWork/work/sampleにできる場合と、eclipseのデフォルトの、~/workspace/sampleにできる場合の2通りにわかれました。
どちらの場合でも、結局元のソースは~/ProgWork/work/以下にあり、eclipseからは普通に操作できますし、gitでcommitもできます。
(実は、自分はここでworkspace/sample以下にコピーが作成されてしまい、eclipse独自のgit管理に入ってしまうかと予想していましたが、そんなことはありませんでした^^;)
4.やった方が感じがいいこと
さて、残る問題はeclipseによって勝手に作成される、~/ProgWork/work/sampleというディレクトリです。これがgit管理下には入っていませんから、よくgitから文句を言われます。
こんなときは、~/ProgWork/work/.gitignoreファイルを作り、そこに"sample/"と文字列を追加しておけば、gitはそれは自分の管轄外と思ってくれて無視してくれます。
ただ、さらにいうと今度は".gitignore"も管理に入れろとgitは文句をいってきます。これを.gitignoreに含めるかは、宗教の問題になってきます。会社などで同じ開発環境で作業しているなら、.gitiginore自体も共有すべきだというのが、通常の考え方なんだそうです。ただまあこれは好みの問題で、自分の様に個人で遊んでいる場合には.gitiginoreに自身も含めてしまっています。
(だって、"git status"で毎回なんか文句言われると気になるから)
こんなときは、~/ProgWork/work/.gitignoreファイルを作り、そこに"sample/"と文字列を追加しておけば、gitはそれは自分の管轄外と思ってくれて無視してくれます。
ただ、さらにいうと今度は".gitignore"も管理に入れろとgitは文句をいってきます。これを.gitignoreに含めるかは、宗教の問題になってきます。会社などで同じ開発環境で作業しているなら、.gitiginore自体も共有すべきだというのが、通常の考え方なんだそうです。ただまあこれは好みの問題で、自分の様に個人で遊んでいる場合には.gitiginoreに自身も含めてしまっています。
(だって、"git status"で毎回なんか文句言われると気になるから)
2014年3月13日木曜日
Androidアプリ開発:ADT eclipseの更新 新規プロジェクトの作成が???
この間のAndroid SDKの更新からActionBar用と思われるライブラリプロジェクトが、新規のAndroidプロジェクト作成時に作られてしまうという状態になってしまいましたが、それ以外にもプロジェクト内にデフォルトでsupportライブラリが作成されるようになってしまったようです。(別に害はないんですが気持ち悪い)
1)作成時
ライブラリが作られています。(作成時に、テーマをnoneにしたんですが、styles.xmlにはActionBarが入ってしまっている様子)
2)読み込み時
上記をいったんgitに登録、それを再度読み込んでプロジェクトを作成してみますと以下になります。
ライブラリは特に作成されませんし、普通に動きます。(もちろんこのアプリは簡単なサンプルで、ActionBarは使っていません。)
何かバグっぽい気がしますが、とりあえず問題はおきません。どうも新規プロジェクト作成時のテーマ選択がうまく機能していない気がします。(機能てんこ盛りの状態でプロジェクトを作成してしまう感じ)
1)作成時
ライブラリが作られています。(作成時に、テーマをnoneにしたんですが、styles.xmlにはActionBarが入ってしまっている様子)
2)読み込み時
上記をいったんgitに登録、それを再度読み込んでプロジェクトを作成してみますと以下になります。
ライブラリは特に作成されませんし、普通に動きます。(もちろんこのアプリは簡単なサンプルで、ActionBarは使っていません。)
何かバグっぽい気がしますが、とりあえず問題はおきません。どうも新規プロジェクト作成時のテーマ選択がうまく機能していない気がします。(機能てんこ盛りの状態でプロジェクトを作成してしまう感じ)
2014年3月8日土曜日
Androidアプリ開発:ADT eclipseの更新-appcompat_v7プロジェクトが勝手に作られる!?
ネットでちょっと動かしてみたいアプリのソースがあったのでADT(eclipse)をMacで起動、念のためSDK Managerで更新ライブラリを確認してみたら、新しいのがでてました。いやな予感がしたのですが、念のため更新。するとSDK manager本体も更新しろといってきます。これはeclipseの方から行いますが、その後どうも動きがおかしくなり新規Andoidプロジェクトがうまく作れなくなりました。
色々やっていたので何が原因で、何が起きたのかはっきりしませんが家の中にある他のMac、およびWindows7のADTも更新してみて動作を比較しながらやり、どうにか3台の環境で元々動かしてみようとしたAndroidアプリのソースを動かすことができるようになりました。(SDK Manager本体の更新にAndroid Developper ToolsサイトのURLが"http"ではだめで、また"https"に戻したり・・・、いったいどちらが正解なんだろう?時々、片方ではエラーがでて、片方で更新がうまくいったりします。)
ただ、なんか今度の更新でADTで新規Androidプロジェクトを作成すると、"appcompat_v7"というsrcのないプロジェクトが勝手に作成されます。過去に作成したAndroidアプリを再実行するのには特に必要ありませんが、今回から新規に作成したAndroidプロジェクトでは環境設定でここにある"appcompat_v7.jar"というファイルを参照しているようで、自分が作成した覚えがないからといって削除してしまうとエラーになります。調べてみても、海外のQ&Aサイトで何件か質問がここ最近でていましが、特にこれはという回答が見つかりませんでした。googleのサイトを調べないとだめかな。
また、今回の更新でエラーが出るようになったというのもありましたが、Android SDK Manager/ExtraからAndroid Support Repository、Android Support Libraryをインストールすれば消えたという報告がありました。自分のエラーは他にも原因があり(.classpathの内容にも問題があった)、よくわかりませんが処置してみたら動くようになりました。でも結局、"appcompat_v7"が何者なのかはわからず、、、名前からするとARM v7関係なのかな。ということはintel系のアプリを作成すると別のものができる?→これ違いました、追記します
PS
昨年の夏にAction Barという新しいUIが実装されて、そのライブラリが"appcompat_v7.jar"らしいです。ついでにv7というのはSupport v7のことで、Android SDK Manager/ExtraからAndroid Support Libraryでインストールされるそうです。(だからこれインストールしとかないと実行時にエラーになったのか)だからってPackage Explorerの見えるところにわざわざおかなくてもいいのに。。。昨年の時は手動でプロジェクトを作成しないといけなかったようですが、それを自動的に作成するようにしたみたいです。
ところでこのSupportライブラリはAndroid2.3とか古いバージョンでもこの新しいUIを使えるようにしているということなので、ちょっと考えました。このUIを使う気がないなら、Android Support Libraryを外して、さらにAndroidプロジェクトを作成するときに最低バージョン(通常は2.3にしていますが)を4.0以上にしてやれば、この"appcompat_v7"という空のプロジェクトは作成されなくなります。(正確にはテーマも変えるべきなんですが。昔は"Theme.Ligt"とか"Theme.Black"だったのが、ActionBarという名称が今は追加されてくるはずです。個人的にAndroid4.0以上の端末しか持ってなければこの方がきれいなんですが、もうちょっと実装考えてくれないかな~Googleさん。)
更に調べてみましたが、このappcompatプロジェクトがライブラリプロジェクトとして作成したAndroidアプリのプロジェクトからはリンクする設定になっていました。
(だからPackage Explorer内にプロジェクトフォルダ作っちゃうんだ...)ただ困ったことに、今後新しいアプリのプロジェクトを作成する度に新しいもの(appcompat_v7_2, appcompat_v7_3等)と新しいライブラリプロジェクトを作成してくれちゃう状態になってました。まあ新しいappcompat_v7_*は削除して、新しいプロジェクトの上記リンク設定を最初に作成されたものに設定しなおしてしまえばいいんですが、ちょっとこれはたまりません。それにこのライブラリ自体が更新されたらソースの管理はどうなるんだろう?なんか悩ましい状況になっている気がします。
PS
昨年の夏にAction Barという新しいUIが実装されて、そのライブラリが"appcompat_v7.jar"らしいです。ついでにv7というのはSupport v7のことで、Android SDK Manager/ExtraからAndroid Support Libraryでインストールされるそうです。(だからこれインストールしとかないと実行時にエラーになったのか)だからってPackage Explorerの見えるところにわざわざおかなくてもいいのに。。。昨年の時は手動でプロジェクトを作成しないといけなかったようですが、それを自動的に作成するようにしたみたいです。
ところでこのSupportライブラリはAndroid2.3とか古いバージョンでもこの新しいUIを使えるようにしているということなので、ちょっと考えました。このUIを使う気がないなら、Android Support Libraryを外して、さらにAndroidプロジェクトを作成するときに最低バージョン(通常は2.3にしていますが)を4.0以上にしてやれば、この"appcompat_v7"という空のプロジェクトは作成されなくなります。(正確にはテーマも変えるべきなんですが。昔は"Theme.Ligt"とか"Theme.Black"だったのが、ActionBarという名称が今は追加されてくるはずです。個人的にAndroid4.0以上の端末しか持ってなければこの方がきれいなんですが、もうちょっと実装考えてくれないかな~Googleさん。)
更に調べてみましたが、このappcompatプロジェクトがライブラリプロジェクトとして作成したAndroidアプリのプロジェクトからはリンクする設定になっていました。
(だからPackage Explorer内にプロジェクトフォルダ作っちゃうんだ...)ただ困ったことに、今後新しいアプリのプロジェクトを作成する度に新しいもの(appcompat_v7_2, appcompat_v7_3等)と新しいライブラリプロジェクトを作成してくれちゃう状態になってました。まあ新しいappcompat_v7_*は削除して、新しいプロジェクトの上記リンク設定を最初に作成されたものに設定しなおしてしまえばいいんですが、ちょっとこれはたまりません。それにこのライブラリ自体が更新されたらソースの管理はどうなるんだろう?なんか悩ましい状況になっている気がします。
2014年2月1日土曜日
Ubuntu 13.10でeclipse(adt)のメニューが操作できない!?
Ubuntu13.04のセキュリティアップデートがもうすぐ停止するので、使っている人は13.10に更新してください、というノートがでました。
これまで何度となく13.04から13.10へ更新しないか?、というDialogは出ていたのですが、もうすぐLTSの14.xが出るという話を聞いていたのでずっとそのままで使っていました。(下手に更新して使っているアプリに問題がでるのも嫌だし)さすがにこれはまずかろうということで、13.10に更新しました。(情報を調べていたら日本語設定で行うと問題がでることがあるので、upgrade専用のアカウントを作り、英語設定で行うと問題がでないという話がありました。念の為、英語設定のアカウントで更新は行いましたが、そこにあった情報通り、更新したら設定してあるうち、最低限のリポジトリ以外はoffにされていました。これは後で手動でonにしておきました。)
これまでLinuxではandroidアプリの開発はしてこなくて、eclipseすら入れていない状態だったのですが、何となく開発環境だけでも構築しておこうとgoogleさんからeclipse込のAndroid SDK(abt)をDLして解凍、さてabt内のeclipseを実行しようとしたら・・・、javaが入っていませんでした(^_^;)
ちょっとびっくりしましたが、ソフトウェアセンターでjavaを検索するとOpenJDKの方がでてきます。(デフォルトではOracleのリポジトリ入っていませんしね)まあ、これでよかろうとOpenJDK6をインストールします。(Android SDKがjava6を要求するので)
さて再度、eclipse(adt)を実行です。無事、動きました。デスクトップがUnityなんでメニューの位置がMacみたいに画面の最上部にでてきてちょっと気持ち悪いですが。
まあそのあたりは「慣れ」の問題なんで気にせず、SDK managerを開こうとWindowsメニューをクリックするも、メニューが表示されません!!つまり何も操作できない状態になってます。
最初、OpenJDKにしたのが問題だったかと思い、これを削除、以下の手順でOracleからjava6をインストールしてみました。
しかし状態は変わりません。気を落ち着けてどこかに情報がないか調べてみたらstackoverflowのサイトに同じ状態に対する質問と回答がありました。どうもUbuntu 13.10で発生した問題のようです。メニューをアプリのwindowから画面上部に飛ばすのにeclipse IRCをproxy経由使っているようなのですが、これを切ればいいということらしいです。
具体的にはデフォルトの環境変数で以下のものがあります。
UBUNTU_MENUPROXY=1
これを以下にしてやります。
UBUNTU_MENUPROXY=(空白)
この設定をした端末からeclipse(adt)を実行すると、Unity上で動いているのにも関わらずメニューがアプリのwindow上に表示されます。
そして無事メニューの操作もできるようになりました。
やっぱりシステムを更新するのは怖いんだよな〜
PS
システムを最新の14.04 Trustyにしたら、この現象は消えました。よかった、よかった。
これまで何度となく13.04から13.10へ更新しないか?、というDialogは出ていたのですが、もうすぐLTSの14.xが出るという話を聞いていたのでずっとそのままで使っていました。(下手に更新して使っているアプリに問題がでるのも嫌だし)さすがにこれはまずかろうということで、13.10に更新しました。(情報を調べていたら日本語設定で行うと問題がでることがあるので、upgrade専用のアカウントを作り、英語設定で行うと問題がでないという話がありました。念の為、英語設定のアカウントで更新は行いましたが、そこにあった情報通り、更新したら設定してあるうち、最低限のリポジトリ以外はoffにされていました。これは後で手動でonにしておきました。)
これまでLinuxではandroidアプリの開発はしてこなくて、eclipseすら入れていない状態だったのですが、何となく開発環境だけでも構築しておこうとgoogleさんからeclipse込のAndroid SDK(abt)をDLして解凍、さてabt内のeclipseを実行しようとしたら・・・、javaが入っていませんでした(^_^;)
ちょっとびっくりしましたが、ソフトウェアセンターでjavaを検索するとOpenJDKの方がでてきます。(デフォルトではOracleのリポジトリ入っていませんしね)まあ、これでよかろうとOpenJDK6をインストールします。(Android SDKがjava6を要求するので)
さて再度、eclipse(adt)を実行です。無事、動きました。デスクトップがUnityなんでメニューの位置がMacみたいに画面の最上部にでてきてちょっと気持ち悪いですが。
まあそのあたりは「慣れ」の問題なんで気にせず、SDK managerを開こうとWindowsメニューをクリックするも、メニューが表示されません!!つまり何も操作できない状態になってます。
最初、OpenJDKにしたのが問題だったかと思い、これを削除、以下の手順でOracleからjava6をインストールしてみました。
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
しかし状態は変わりません。気を落ち着けてどこかに情報がないか調べてみたらstackoverflowのサイトに同じ状態に対する質問と回答がありました。どうもUbuntu 13.10で発生した問題のようです。メニューをアプリのwindowから画面上部に飛ばすのにeclipse IRCをproxy経由使っているようなのですが、これを切ればいいということらしいです。
具体的にはデフォルトの環境変数で以下のものがあります。
UBUNTU_MENUPROXY=1
これを以下にしてやります。
UBUNTU_MENUPROXY=(空白)
この設定をした端末からeclipse(adt)を実行すると、Unity上で動いているのにも関わらずメニューがアプリのwindow上に表示されます。
そして無事メニューの操作もできるようになりました。
やっぱりシステムを更新するのは怖いんだよな〜
PS
システムを最新の14.04 Trustyにしたら、この現象は消えました。よかった、よかった。
2013年10月18日金曜日
githubでEclipseプロジェクト(Android)の管理
gitの復習を兼ねてgithubの使い方もわかりました。さて次にコマンドラインではなくGUI、特にeclipseでgit(github)を操作する方法を調べてみます。どんなプロジェクトタイプでも同じでしょうが、特にAndroidプロジェクトのgitでのバージョン管理、複数PCでの開発環境構築について調べてみました。(eclipseにはEGitが入れてあります)
今回も結構手間取りました。ネットをググってみると似たような情報は結構あるんですが、いずれも複数のPCでの開発環境を構築するには足りないというか、部分的な解説しか見つからなかったんです。よくあるのが、
結局、かなり失敗してやり直しましたが(2,3回github上のリポジトリも壊してしまったw)なんとかできたようです。いかに手順を示します。
1.Mac上のeclipseでAndroidプロジェクトを作成し、githubに登録する
2.Windows上のeclipseにgithubからプロジェクトを取得、開発用のAndroidプロジェクトを構築する
大雑把にいって、この2つです。この後、実際に相互にファイルを編集してみて、相手に変更が反映されるのを確認しました。
1.Mac上のeclipseでAndroidプロジェクトを作成し、githubに登録する
まずMac上でAndroidプロジェクトを作成、一応動くことを確認しました。さてこれをgithubに登録するんですが、特にこれは問題なくできました。eclipseのExplorer上のプロジェクトを右クリック→Team→Share Project でダイアログが表示され、そこにリポジトリをどこに置くか聞いてきます。ここで、Mac(或いはwindows)のローカルにリポジトリが作られますが、デフォルトは$HOME/git/以下にどちらも作られました。(この時、プロジェクトは$HOME/workspaceから、$HOME/git/<リポジトリ名>に移動するのに注意。)次に、バージョン管理するファイルを選択、Addしてやります。(Androidのjarとかは当然入れません)そして「最初の」commitをしてやります。(Team→Shareでは、gitリポジトリの入れ物をローカルに作成しただけで、まだ何も入っていない状態です。)そしてPushを選択、githubのリポジトリ(事前にリポジトリの入れ物だけはgithubのHPで作っておきます)を入力して、github上にデータを送ります。ちょっと注意が必要なのが、最初のpushの時何をリポジトリに登録するかです。初めて作ったばかりならmasterのbranchしかないと思っていたら、HEADというのも表示されます。何でこれが表示されるのかわかりませんが、うっかり最初にHEADを選択してリポジトリに登録したら、プロジェクトの登録はできたのですがbranch名がHEADになってしまい、どうやってもmasterにできず結局github上でリポジトリを削除して作り直しました。
別のHPにも情報を後で見つけましたが、
mastre[branch] (refs/heads/master) → refs/heads/master
が正解のようです。あと、議論が分かれるところですがeclipseのプロジェクトでは、".project", ".classpath"というような設定ファイルがあります。デフォルトではこれもリポジトリに登録する設定になっていますが、これはバージョン管理するな/しろ、の意見が半々でした。どちらがいいかはeclipseの環境にどんなplug-inを入れているかにもよるらしく、一律にコレというのはありませんでした。各自の開発環境で判断するしかありません。
(注:.project内にはプロジェクト名=フォルダ名が格納されています。そのため、gitに.projectがないと2項の方法でAndroidプロジェクトを作成するときプロジェクト名として起動時のクラス名が使われます。デフォルトでは新規プロジェクトを作成する時、プロジェクト名がそのまま起動時のクラス名になるので大抵の場合問題がでないんですが、わざとプロジェクト名と起動時のクラス名を変えている場合に問題がでます。)
追記:
gen/R.javaも管理を外しました。branchを変更したり、古いバージョンに戻す時にエラーがでます。プリコンパイル・ファイルなのでRun/Debug時に生成されますから、元のファイル(res/以下)さえ管理対象に入っていれば大丈夫でしう。
とりあえずこれで、このMacだけで開発を進めていく分にはバージョン管理ができるようになりました。
更に追記:
最初にリポジトリにpushしたPCでは、どうもうまくpullができません。色々やってみたのですが、eclipseのGUIでやるとconfigに以下のものが記録されないようです。(hogeは適当に変換してください)
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.master.rebase=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=https://github.com/hogehoge/hogehoge.git
Repository Explorerでプロジェクトを右クリックして、Propertiesを選ぶとwindowがでてくるので、そこに追加で指定してやります。
どういうわけかeclipseから最初にリポジトリに登録してやるとこの5項目が登録されてなくてpullがうまくいきません。(つまりpushしかできない)
登録したら一度削除して、githubから取り出してやったほうが、このあたりの設定をしてくれて楽かもしれません。
2.Windows上のeclipseにgithubからプロジェクトを取得、開発用のAndroidプロジェクトを構築する
OKすると、master branchを取得したとダイアログがでてきます。(今回はmasterしかないし、たいていはmasterを取得するでしょうが、場合によっては別のbranchを取得する場合もあるでしょう)
今回も結構手間取りました。ネットをググってみると似たような情報は結構あるんですが、いずれも複数のPCでの開発環境を構築するには足りないというか、部分的な解説しか見つからなかったんです。よくあるのが、
- githubに既に存在しているリポジトリをeclipseで取得(しかもAndroidじゃない)
- githubにeclipseからAndroidプロジェクトを登録する。但し他のPCでそれをどう使ったらいいかがない。
結局、かなり失敗してやり直しましたが(2,3回github上のリポジトリも壊してしまったw)なんとかできたようです。いかに手順を示します。
1.Mac上のeclipseでAndroidプロジェクトを作成し、githubに登録する
2.Windows上のeclipseにgithubからプロジェクトを取得、開発用のAndroidプロジェクトを構築する
大雑把にいって、この2つです。この後、実際に相互にファイルを編集してみて、相手に変更が反映されるのを確認しました。
1.Mac上のeclipseでAndroidプロジェクトを作成し、githubに登録する
まずMac上でAndroidプロジェクトを作成、一応動くことを確認しました。さてこれをgithubに登録するんですが、特にこれは問題なくできました。eclipseのExplorer上のプロジェクトを右クリック→Team→Share Project でダイアログが表示され、そこにリポジトリをどこに置くか聞いてきます。ここで、Mac(或いはwindows)のローカルにリポジトリが作られますが、デフォルトは$HOME/git/以下にどちらも作られました。(この時、プロジェクトは$HOME/workspaceから、$HOME/git/<リポジトリ名>に移動するのに注意。)次に、バージョン管理するファイルを選択、Addしてやります。(Androidのjarとかは当然入れません)そして「最初の」commitをしてやります。(Team→Shareでは、gitリポジトリの入れ物をローカルに作成しただけで、まだ何も入っていない状態です。)そしてPushを選択、githubのリポジトリ(事前にリポジトリの入れ物だけはgithubのHPで作っておきます)を入力して、github上にデータを送ります。ちょっと注意が必要なのが、最初のpushの時何をリポジトリに登録するかです。初めて作ったばかりならmasterのbranchしかないと思っていたら、HEADというのも表示されます。何でこれが表示されるのかわかりませんが、うっかり最初にHEADを選択してリポジトリに登録したら、プロジェクトの登録はできたのですがbranch名がHEADになってしまい、どうやってもmasterにできず結局github上でリポジトリを削除して作り直しました。
別のHPにも情報を後で見つけましたが、
mastre[branch] (refs/heads/master) → refs/heads/master
が正解のようです。あと、議論が分かれるところですがeclipseのプロジェクトでは、".project", ".classpath"というような設定ファイルがあります。デフォルトではこれもリポジトリに登録する設定になっていますが、これはバージョン管理するな/しろ、の意見が半々でした。どちらがいいかはeclipseの環境にどんなplug-inを入れているかにもよるらしく、一律にコレというのはありませんでした。各自の開発環境で判断するしかありません。
(注:.project内にはプロジェクト名=フォルダ名が格納されています。そのため、gitに.projectがないと2項の方法でAndroidプロジェクトを作成するときプロジェクト名として起動時のクラス名が使われます。デフォルトでは新規プロジェクトを作成する時、プロジェクト名がそのまま起動時のクラス名になるので大抵の場合問題がでないんですが、わざとプロジェクト名と起動時のクラス名を変えている場合に問題がでます。)
追記:
gen/R.javaも管理を外しました。branchを変更したり、古いバージョンに戻す時にエラーがでます。プリコンパイル・ファイルなのでRun/Debug時に生成されますから、元のファイル(res/以下)さえ管理対象に入っていれば大丈夫でしう。
とりあえずこれで、このMacだけで開発を進めていく分にはバージョン管理ができるようになりました。
更に追記:
最初にリポジトリにpushしたPCでは、どうもうまくpullができません。色々やってみたのですが、eclipseのGUIでやるとconfigに以下のものが記録されないようです。(hogeは適当に変換してください)
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.master.rebase=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=https://github.com/hogehoge/hogehoge.git
Repository Explorerでプロジェクトを右クリックして、Propertiesを選ぶとwindowがでてくるので、そこに追加で指定してやります。
どういうわけかeclipseから最初にリポジトリに登録してやるとこの5項目が登録されてなくてpullがうまくいきません。(つまりpushしかできない)
登録したら一度削除して、githubから取り出してやったほうが、このあたりの設定をしてくれて楽かもしれません。
2.Windows上のeclipseにgithubからプロジェクトを取得、開発用のAndroidプロジェクトを構築する
さて次が一番悩んだところです。リポジトリに登録時、Androidプロジェクトだという情報は入っていません。何も考えずにeclipseでgithubからImportしてしまうと、単なるファイルの塊がeclipseのExplorer上にできるだけです。もちろんその状態でファイルの編集/更新を相手に伝えることはできるんですが、Windows上でAndroid実機での動作確認ができない状態です。(Androidプロジェクトになってないから当たり前です)さんざん悩みましたが、以下の手順でいいようです。(一発でやる方法もありますが、あえて一つずつやっていきます。
(1)eclipseのGit Repositoryにgithubからcloneを作る
eclipseで、Window → Show View からGit Repositoryを表示する。そこで右クリック、あるいはボタンで目的のAndroidプロジェクトのcloneを作成する。
これで$HOME/git/以下にローカルなリポジトリが作成されます。
次に、eclipseのExplorer上で右クリックでImport(或いは、FileメニューでImport)します。Sourceは、Git/Projects from Gitを選択します。EGitが入っていると、Local、Urlの2つが選べます。Urlは先ほどのGit Repositoryにcloneを作成する手順に入っていきます。Localはすでに存在するgitリポジトリを指定します。今回は先に作成したcloneとなります。そして以下の画面が表示されます。
ここで3つの選択がありますが、真ん中の"Use the New Project wizard"を選択します。次に、"Android Project from Existing Code"を選択します。
これで既存のコードでAndroidプロジェクトを作成することをeclipseに伝えることになります。次のダイアログで、どこにそのコードがあるのか指定する画面になりますが、$HOME/git/以下に1.で登録したプロジェクトのフォルダが存在しているはずなのでそれを選択してやります。これでOKです。
注:
先に、".project"ファイルをバージョン管理に入れるかという問題がありましたが、どうもこれが入っていないとこの時点で指定したフォルダがeclipseのプロジェクトと認識されないようです。実はこのあたりどう解決すべきか正解が自分にもわかりません。個々の開発環境に応じて考えてください。
また、この手順でWindows上にプロジェクトを作成すると、ちょっと通常のプロジェクトとはファイルの位置が異なります。
・通常のeclipseプロジェクトのファイルの位置
$HOME/workspace/<プロジェクト名>
・今回のgit管理下のプロジェクトのファイルの位置
$HOME/git/<リポジトリ名>/<プロジェクト名>
eclipseのExplorer画面上は同じように見えるので、ちょっと注意が必要です。(eclipseで操作する上では何も差がありません)
さて結果としてWindows上の画面は以下の様になります。
Package Explorer, Git Repositoriesの両方に同じ名前のフォルダがありますが、実体は同じものです。
2013年4月30日火曜日
Android開発環境:ADTの更新にまた苦しみました(>_<)
4月くらいからEclipseで「ADTが21.1になりました」と言ってくるんですが、どうしてもEclipse本体は21.0のままで、21.1を認識してくれません。
毎度のことですが、もう諦めました。GoogleからADT-bundleの最新版DLしてきて入れなおします。(Eclipse自体は特にインストーラも必要なく、フォルダごと変えるだけなので楽です。)しかしこの不安定な更新状況、なんとかならんかね。全然、状態が変わりません。いくら簡単にまるごと入れ替えできるといっても。。。
どうも調べてみると、ADTのSDK-toolsはこういうときEclipseから起動するんじゃなくて単体でSDK-Managerを起動して更新し、その後Eclipseを起動し、SDKの更新を認識させるといいようです。
しかしGoogleもAndroidアプリの開発者増やしたいなら、もう少しtoolの使い勝手を改善してほしい!
毎度のことですが、もう諦めました。GoogleからADT-bundleの最新版DLしてきて入れなおします。(Eclipse自体は特にインストーラも必要なく、フォルダごと変えるだけなので楽です。)しかしこの不安定な更新状況、なんとかならんかね。全然、状態が変わりません。いくら簡単にまるごと入れ替えできるといっても。。。
どうも調べてみると、ADTのSDK-toolsはこういうときEclipseから起動するんじゃなくて単体でSDK-Managerを起動して更新し、その後Eclipseを起動し、SDKの更新を認識させるといいようです。
しかしGoogleもAndroidアプリの開発者増やしたいなら、もう少しtoolの使い勝手を改善してほしい!
2013年1月19日土曜日
初めてのeclipseでc++ プログラミング
これまで散々、C++プログラム作ってきましたが、基本Linuxとかでemacs使うのがほとんでした。(makefileは毎回自作)あるいは、WindowsでVisual Studioだったので、eclipseでC++のプログラム作成/デバッグをしたことがありませんでした。
gdbでデバッグは十分だったんですが、やはりLinuxでも統合環境の使い方覚えといたほうがいいだろうと思い直し、eclipseでC++プログラミングをしてみることにしました。(eclipseでJavaは随分やってきたんですけどね)
最初に悩んだのが、「Makefileどうしたらいいんだ?」ということです。調べてみると、基本的には自動的に作成してくれるようです。(既存のコードをeclipse管理下において、自分でMakefile作成という方法もあるそうです)今回は、とりあえずc++プログラミングとデバッグをしてみたかったので、自動生成で作ってみました。
1.プロジェクトの作成
Linux(Ubuntu)の環境でeclipse+CDTを用意します。そこでまず、C++プロジェクトを作成します。
こんなダイアログがでてきます。"Makefile project"がおそらく自分でMakefileを作成するものなんだろうと思いますが、今回は素直にデフォルトで選択されてるExecutableのEmpty Projectを選択します。(ちなみにCross GCCというのは、ARM等の異なるCPU用にプロジェクトを作成するためのものです)
プロジェクト(StringSample)を作成した直後です。なんと、srcフォルダすらありません。
2.コード作成
まず、自分でsrcフォルダを作成し(このあたりは自分の好みの構成で)、main.cppを作成します。
(単に"Hello!"を出力するだけのお約束のコードを書きました)
さて実はここで問題が起きることがあります。この"cout"が解決できない(not resolved)と言われることが多々あります。ググってみると、結構みんな悩んでいるようです。
あまりに単純な問題で、なんで?と思ってしまうんですが解決方法は簡単です。それはいったんeclipseを終了して、再度実行すればあら不思議、解決されています。どうも、eclipseの反応がにぶいせいのようです。(プロジェクトをいったんcloseして、再openしてもいいようです。)
3.Makefileの作成
さて、コードはできましたがMakefileができてません。どうしたらいいのかと悩んだのですが、右クリックで、Build Configuration→Build Allで自動的に作成してくれます。
これでMakefileを作成してくれて、Buildまでしてくれます。
Buildが成功しました。
今後、ソースファイルが増えてったらどうなるかまだこれからですが、多分Build Configurationで自動的にやってくれるんだろうと思います。(今回はDebugでやりましたが、Release用のMakefileもできちゃってます)
gdbでデバッグは十分だったんですが、やはりLinuxでも統合環境の使い方覚えといたほうがいいだろうと思い直し、eclipseでC++プログラミングをしてみることにしました。(eclipseでJavaは随分やってきたんですけどね)
最初に悩んだのが、「Makefileどうしたらいいんだ?」ということです。調べてみると、基本的には自動的に作成してくれるようです。(既存のコードをeclipse管理下において、自分でMakefile作成という方法もあるそうです)今回は、とりあえずc++プログラミングとデバッグをしてみたかったので、自動生成で作ってみました。
1.プロジェクトの作成
Linux(Ubuntu)の環境でeclipse+CDTを用意します。そこでまず、C++プロジェクトを作成します。
こんなダイアログがでてきます。"Makefile project"がおそらく自分でMakefileを作成するものなんだろうと思いますが、今回は素直にデフォルトで選択されてるExecutableのEmpty Projectを選択します。(ちなみにCross GCCというのは、ARM等の異なるCPU用にプロジェクトを作成するためのものです)
プロジェクト(StringSample)を作成した直後です。なんと、srcフォルダすらありません。
2.コード作成
まず、自分でsrcフォルダを作成し(このあたりは自分の好みの構成で)、main.cppを作成します。
(単に"Hello!"を出力するだけのお約束のコードを書きました)
さて実はここで問題が起きることがあります。この"cout"が解決できない(not resolved)と言われることが多々あります。ググってみると、結構みんな悩んでいるようです。
あまりに単純な問題で、なんで?と思ってしまうんですが解決方法は簡単です。それはいったんeclipseを終了して、再度実行すればあら不思議、解決されています。どうも、eclipseの反応がにぶいせいのようです。(プロジェクトをいったんcloseして、再openしてもいいようです。)
3.Makefileの作成
さて、コードはできましたがMakefileができてません。どうしたらいいのかと悩んだのですが、右クリックで、Build Configuration→Build Allで自動的に作成してくれます。
これでMakefileを作成してくれて、Buildまでしてくれます。
Buildが成功しました。
今後、ソースファイルが増えてったらどうなるかまだこれからですが、多分Build Configurationで自動的にやってくれるんだろうと思います。(今回はDebugでやりましたが、Release用のMakefileもできちゃってます)
登録:
投稿 (Atom)















