ネタ整理
アルコール注入しつつ。
github な dashboard から、_new repository_ をクリックして出てくるのが以降にローカル側でやんなきゃなソレで以下。
Global setup: Download and install Git git config --global user.name "Yamane Toshiaki" git config --global user.email yamanetoshi@gmail.com Next steps: mkdir Android-Exercise cd Android-Exercise git init touch README git add README git commit -m 'first commit' git remote add origin git@github.com:yamanetoshi/Android-Exercise.git git push origin master
ここまで控えて思ったんですが、整理しつつネタばらしになってる件w
構わず続行
事前に確認してみて下さい、ってコトで (何
上記は Android なプロジェクトの場合はそのまんまヤッちゃうと微妙。Eclipse から Android なプロジェクトを作成してその中で git init する必要あり。
で、git add してくんですが、gen と bin なディレクトリは .gitignore で対象範疇外にしといた方が良さげ。で、git status で様子を見つつ git add していきます。
$ git add .gitignore $ git add .classpath $ git add .project $ git add AndroidManifest.xml $ git add assets $ git add res $ git add src $ git add default.properties $ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: .classpath # new file: .gitignore # new file: .project # new file: AndroidManifest.xml # new file: default.properties # new file: res/drawable-hdpi/icon.png # new file: res/drawable-ldpi/icon.png # new file: res/drawable-mdpi/icon.png # new file: res/layout/main.xml # new file: res/values/strings.xml # new file: src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java # $
あ、あと README も touch して add しといた方が良いみたい。
$ touch README $ git add README $
で、commit 以降のソレをナニ。
$ git commit -m 'first commit' Created initial commit 172e974: first commit 11 files changed, 103 insertions(+), 0 deletions(-) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 AndroidManifest.xml create mode 100644 README create mode 100644 default.properties create mode 100644 res/drawable-hdpi/icon.png create mode 100644 res/drawable-ldpi/icon.png create mode 100644 res/drawable-mdpi/icon.png create mode 100644 res/layout/main.xml create mode 100644 res/values/strings.xml create mode 100644 src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java $ git remote add origin git@github.com:yamanetoshi/Android-Exercise.git $ git push origin master Counting objects: 25, done. Compressing objects: 100% (13/13), done. Writing objects: 100% (25/25), 10.91 KiB, done. Total 25 (delta 0), reused 0 (delta 0) To git@github.com:yamanetoshi/Android-Exercise.git * [new branch] master -> master $
これで master ができあがり。develop な branch も作成。
$ git checkout -b develop master Switched to a new branch "develop" $ git push origin develop Total 0 (delta 0), reused 0 (delta 0) To git@github.com:yamanetoshi/Android-Exercise.git * [new branch] develop -> develop $
これで準備完了。github.com 上でも branch が二つありますな。これで共有リポジトリの初期設定完了。ここで一旦ディレクトリを削除して clone してみます。
$ cd .. $ rm -rf AndroidExercise
で、適当な場所に、って削除は Eclipse からヤらないと駄目ですな。
リポジトリを clone してみる
readonly なソレから clone
$ git clone git://github.com/yamanetoshi/Android-Exercise.git Initialized empty Git repository in /home/rms/tmp/Android-Exercise/.git/ remote: Counting objects: 25, done. remote: Compressing objects: 100% (13/13), done. remote: Total 25 (delta 0), reused 0 (delta 0) Receiving objects: 100% (25/25), 10.91 KiB, done. $
一応 Eclipse から見える事を確認したら branch を作ります。てか develop をナニしてませんな。以下な要領でナニ。
$ git checkout -t -b develop origin/develop M .classpath Branch develop set up to track remote branch refs/remotes/origin/develop. Switched to a new branch "develop" $
何故か .classpath が更新されてますが、おそらくは Eclipse が悪さしたんだろうな。git diff したのが以下。
$ git diff diff --git a/.classpath b/.classpath index 609aa00..6efcbb7 100644 --- a/.classpath +++ b/.classpath @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> + <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="gen"/> - <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry kind="output" path="bin"/> </classpath> $
むむむむ的。とりあえず今から作る branch で吸収な方向。あ、面白そうなのでこれはここで add して commit してみましょう。
$ git add .classpath $ git commit -m 'modify .classpath by eclipse' Created commit 9a5020a: modify .classpath by eclipse 1 files changed, 1 insertions(+), 1 deletions(-) $
で、branch 作成。
$ git checkout -b google-map-feature develop Switched to a new branch "google-map-feature" $ git branch develop * google-map-feature master $
で、修正を盛り込んで実行してみたんですが manifest 方面に permission を盛り込んでない事を思いだしてるんですが、emulator はまだ実行を開始してない件orz
とりあえず以下な操作をナニ。
$ git add assets $ git add AndroidManifest.xml $ git add src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java $
あら?
と思ったら maps.google.com の名前解決に失敗している模様。プロジェクトを refresh してリトライしたら地図が出ました。ので commit。
$ git commit -m 'implement google map' Created commit f5b8ac6: implement google map 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 assets/index.html $
パッチをナニしてみます。
$ git format-patch origin 0001-modify-.classpath-by-eclipse.patch 0002-implement-google-map.patch $
0002-implement-google-map.patch の中身が以下ッス。
From f5b8ac6689087d52b74cc08de056722f066f83ca Mon Sep 17 00:00:00 2001 From: rms <yamanetoshi@gmail.com> Date: Tue, 4 May 2010 17:29:00 +0900 Subject: [PATCH] implement google map --- AndroidManifest.xml | 3 +- assets/index.html | 22 ++++++++++++++++++++ .../androidexercise/AndroidExercise.java | 6 ++++- 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 assets/index.html diff --git a/AndroidManifest.xml b/AndroidManifest.xml index bd3faac..9552ca6 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -13,6 +13,5 @@ </activity> </application> - - +<uses-permission android:name="android.permission.INTERNET"></uses-permission> </manifest> \ No newline at end of file diff --git a/assets/index.html b/assets/index.html new file mode 100644 index 0000000..5fed74e --- /dev/null +++ b/assets/index.html @@ -0,0 +1,22 @@ +<html> +<head> +<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> +<title>Google Maps JavaScript API v3 Example: Map Language</title> +<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=ja"></script> +<script type="text/javascript"> + function initialize() { + var myLatlng = new google.maps.LatLng(-34.397, 150.644); + var myOptions = { + zoom: 8, + center: myLatlng, + mapTypeId: google.maps.MapTypeId.ROADMAP + } + var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); + } +</script> +</head> +<body style="margin:0px; padding:0px;" onload="initialize()"> + <div id="map_canvas" style="width:100%; height:100%"></div> +</body> +</html> diff --git a/src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java b/src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java index bcd5736..d461930 100644 --- a/src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java +++ b/src/jp/shuri/yamanetoshi/androidexercise/AndroidExercise.java @@ -2,12 +2,16 @@ package jp.shuri.yamanetoshi.androidexercise; import android.app.Activity; import android.os.Bundle; +import android.webkit.WebView; public class AndroidExercise extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.main); + WebView webView = new WebView(this); + webView.getSettings().setJavaScriptEnabled(true); + webView.loadUrl("file:///android_asset/index.html"); + setContentView(webView); } } \ No newline at end of file -- 1.5.6.5
わしはこの patch なテキストをそのままメイルに添付して送付してました。
面白い
この状態だと branch を行き来しても上記の patch 達が見えるんですね。とりあえず push 可能な形で clone して patch を apply してみます。
まず clone ですが以下。
$ git clone git@github.com:yamanetoshi/Android-Exercise.git Initialized empty Git repository in /home/rms/eclipse_workspace/Android-Exercise/.git/ remote: Counting objects: 25, done. remote: Compressing objects: 100% (13/13), done. remote: Total 25 (delta 0), reused 0 (delta 0) Receiving objects: 100% (25/25), 10.91 KiB, done. $
で、順に am してみます。
$ cd Android-Exercise/ $ git am ~/tmp/Android-Exercise/0001-modify-.classpath-by-eclipse.patch Applying modify .classpath by eclipse $ git log commit 33419fcfb1c0b09904fee772e2ced811cd258fdd Author: rms <yamanetoshi@gmail.com> Date: Tue May 4 16:51:47 2010 +0900 modify .classpath by eclipse commit 172e974076a3df81360e47015c504bc1dbab5e0e Author: rms <yamanetoshi@gmail.com> Date: Tue May 4 16:36:35 2010 +0900 first commit $
commit として盛り込まれておりますな。もう一つ。
$ git am ~/tmp/Android-Exercise/0002-implement-google-map.patch Applying implement google map .dotest/patch:64: space before tab in indent. WebView webView = new WebView(this); .dotest/patch:65: space before tab in indent. webView.getSettings().setJavaScriptEnabled(true); .dotest/patch:66: space before tab in indent. webView.loadUrl("file:///android_asset/index.html"); .dotest/patch:67: space before tab in indent. setContentView(webView); warning: 4 lines add whitespace errors. $
大丈夫かな。で、動作確認しようとして既存のソレから project 作成ってヤッたら
overlaps the location of another project:'Android-Exercise'
って叱られる。どっかの削除をしくった可能性大orz
仕方が無いので workspace 以外の場所にディレクトリを移動。したら Eclipse でプロジェクト作成できました。このあたりも微妙っちゃ微妙。とりあえず正常動作が確認できたので、これを共用リポジトリに push して一連の流れとしては終了ッスか。
と思ったら
master なブランチしか clone してなくてとほほな件。orz
もっかいヤリ直します。
$ rm -rf Android-Exercise $ git clone git@github.com:yamanetoshi/Android-Exercise.git Initialized empty Git repository in /home/rms/eclipse_workspace/Android-Exercise/.git/ remote: Counting objects: 25, done. remote: Compressing objects: 100% (13/13), done. remote: Total 25 (delta 0), reused 0 (delta 0) Receiving objects: 100% (25/25), 10.91 KiB, done. $ cd Android-Exercise $ git checkout -t -b develop origin/develop Branch develop set up to track remote branch refs/remotes/origin/develop. Switched to a new branch "develop" $ git am ~/tmp/Android-Exercise/0001-modify-.classpath-by-eclipse.patch Applying modify .classpath by eclipse $ git am ~/tmp/Android-Exercise/0002-implement-google-map.patch Applying implement google map .dotest/patch:64: space before tab in indent. WebView webView = new WebView(this); .dotest/patch:65: space before tab in indent. webView.getSettings().setJavaScriptEnabled(true); .dotest/patch:66: space before tab in indent. webView.loadUrl("file:///android_asset/index.html"); .dotest/patch:67: space before tab in indent. setContentView(webView); warning: 4 lines add whitespace errors. $
無理矢理気味ですが、上記盛り込みを Eclipse 上で確認。あ、develop に直接してるな。もうええ加減にしてくれ的orz
再度リトライ
手順を一部略。再度プロジェクトを削除した後にディレクトリも削除して云々。
- clone
- checkout -t -b
で、ブランチ作成。
$ git checkout -b yamanetoshi-feature develop Switched to a new branch "yamanetoshi-feature" $
で、patch 適用。
$ git branch develop master * yamanetoshi-feature $ git am ~/tmp/Android-Exercise/0001-modify-.classpath-by-eclipse.patch Applying modify .classpath by eclipse $ git am ~/tmp/Android-Exercise/0002-implement-google-map.patch Applying implement google map .dotest/patch:64: space before tab in indent. WebView webView = new WebView(this); .dotest/patch:65: space before tab in indent. webView.getSettings().setJavaScriptEnabled(true); .dotest/patch:66: space before tab in indent. webView.loadUrl("file:///android_asset/index.html"); .dotest/patch:67: space before tab in indent. setContentView(webView); warning: 4 lines add whitespace errors. $
ここで Eclipse にプロジェクトを読み込んで試験してみます。地図は表示できたみたいなので、ここで merge して push すれば良いのか。
$ git branch develop master * yamanetoshi-feature $ git checkout develop Switched to branch "develop" $ git merge yamanetoshi-feature Updating 172e974..de7c941 Fast forward .classpath | 2 +- AndroidManifest.xml | 3 +- assets/index.html | 22 ++++++++++++++++++++ .../androidexercise/AndroidExercise.java | 6 ++++- 4 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 assets/index.html $ git push origin develop Counting objects: 23, done. Compressing objects: 100% (8/8), done. Writing objects: 100% (14/14), 1.65 KiB, done. Total 14 (delta 5), reused 0 (delta 0) To git@github.com:yamanetoshi/Android-Exercise.git 172e974..de7c941 develop -> develop $
これで github.com を確認してみるか。