Web的な何か

JavaとかPHPとかやってます。最近はAndroidばっかやってます。

CentOS 6.2で作るAndroid開発環境構築 -Eclipse・Android環境構築編-

操作をミスってCentOSを壊してしまったので新しく構築するついでに記事にしてみました。
個人的に必要そうなものをインストールしています。

対象:CentOS 6.2 64bit

今回はEclipseAndroidの環境構築を紹介していきたいと思います。

前回のCentOSの環境はこちらで紹介しています。
http://chuross.hateblo.jp/entry/2012/12/30/021415

内容

Eclipseの導入

1.Eclipseをダウンロードできます。
screenshot
http://www.eclipse.org/downloads/

個人的にはJunoよりIndigoの方が好きなのでここからダウンロードしました。
http://www.eclipse.org/downloads/packages/release/indigo/sr2

Eclipseの日本語化

1.Pleiadesをダウンロードする
screenshot
http://mergedoc.sourceforge.jp/

2.Pleiadesを解凍する
解凍してできた「features」と「plugins」の中にあるフォルダをEclipseフォルダにある同名のフォルダ内にコピーする。
この時フォルダごと上書きしてしまわないように注意。

3.Eclipseフォルダ内のeclipse.iniの最後に一行追加する

-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

4.Eclipseを起動して日本語化できていれば完了です。

Android SDKの導入

1.Android SDKをダウンロードする
screenshot
http://developer.android.com/sdk/index.html

ADT Bundleを使えば面倒な設定はいりませんが、今回はSDKから導入していきます。

2.Android SDKを解凍してパスを通す
解凍場所は好きな場所で大丈夫です。

.bashrcにパスを追加する

$ cd ~
$ vi .bashrc


export PATH=${PATH}:/home/username/android-sdk-linux/tools
export PATH=${PATH}:/home/username/android-sdk-linux/platform-tools

# /home/username/の部分はAndroid SDKを置いたフォルダパスを入力してください。


$ source .bashrc

3.EclipseAndroidプラグインをインストールする
「ヘルプ」→「新規ソフトウェアのインストール」からインストールウィンドウを表示する。
「作業対象」の項目があるので以下のURLを入力して追加ボタンを押す

https://dl-ssl.google.com/android/eclipse/

チェックボックス全てチェックしてインストール開始する。
再起動するかどうか聞かれるので一旦再起動しましょう。

4.Androidプラグインの初期設定をします。
SDKのフォルダ選択画面が表示されるので、先ほどDLしたフォルダを選択します。
するとplatform-toolsフォルダがねーぞ!みたいなこと言われるので、OpenSDKボタンを押してplatform-toolsをインストールしてきます。

ついでにAndroidAPIもいくつかインストールします。
この時はAndroid 4.0とAndroid 2.3.3をインストールしました。

5.platform-toolsを64bitでも動くようにライブラリをインストールする
platform-toolsは32bitで動いているのか、adbを起動するとエラーが出ます。
そこで64bit環境でも動作できるようにライブラリを導入します。

$ yum install libstdc++.i686 ncurses-libs.i686 libXext.i686 zlib-devel.i686

Android NDKの導入

1.Android NDKのダウンロードする
screenshot
http://developer.android.com/tools/sdk/ndk/index.html

2.解凍したNDKにパスを通す

$ cd ~
$ vi .bashrc


export ANDROID_NDK_ROOT=/home/username/android-ndk-r8d
export PATH=${PATH}:$ANDROID_NDK_ROOT
export ANDROID_NDK=$ANDROID_NDK_ROOT

# /home/username/の部分はNDKを置いているフォルダのパスに書き換えてください


$ source .bashrc

3.サンプルプロジェクトをビルドしてみる

$ cd /home/username/android-ndk-r8d/samples/hello-jni/
$ ndk-build

これでビルドできていればNDKは大体完了です。
お疲れ様でした。

CentOS 6.2で作るAndroid開発環境構築 -OS環境構築編-

操作をミスってCentOSを壊してしまったので新しく構築するついでに記事にしてみました。
個人的に必要そうなものをインストールしています。

対象:CentOS 6.2 64bit

今回はEclipse環境構築の前にCentOSに入れるものを紹介していきます。

EclipseAndroidの環境構築はこちらにあります。
http://chuross.hateblo.jp/entry/2012/12/30/021430

内容

日本語化

1.rootでログインする

2.日本語のパッケージをインストールする

$ yum -y groupinstall "Japanese Support"

3.文字設定を変更する

$ vi /etc/sysconfig/i18n


#以下のように変更
LANG="ja_JP.UTF-8"

4.再起動

yumリポジトリの追加

後で説明するgit-flowのインストールのためにEPELパッケージを導入します。

1.EPELパッケージをダウンロードする

http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/repoview/epel-release.html

2.rpmをインストールする

$ rpm -ivh epel-release-6-8.noarch.rpm

3.EPELパッケージが入っているか確認する

$ yum repolist

Javaの導入

1.yumからJavaをインストールする

$ yum install java-1.6.0-openjdk.x86_64
$ yum install java-1.6.0-openjdk-devel.x86_64

2.Javaがインストールされているか確認する

$ java -version


#こんな感じのが出力されれば完了
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (rhel-1.50.1.11.5.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

Gitの導入

Gitについて

詳しくはここ参照
screenshot
サルでもわかるGit入門
http://www.backlog.jp/git-guide/

導入

1.yumからGitをインストールする

$ yum install git

2.Gitがインストールされたか確認する

$ git --version


#こんな感じのが出力されれば完了
git version 1.7.1

yumからインストールできるバージョンが低いので、GitHubから最新のコードを持ってきた方がいいかも

git-flowの導入

git-flowについて

詳しくはここ参照
screenshot
git-flow によるブランチの管理
http://www.oreilly.co.jp/community/blog/2011/11/branch-model-with-git-flow.html

導入

EPELレポジトリを入れてあればyumからインストールできます。

1.yumからgit-flowをインストールする

$ yum install gitflow

2.git-flowがインストールされているか確認する

$ git flow


#こんな感じのが表示されれば完了
usage: git flow

Available subcommands are:
init Initialize a new git repo with support for the branching model.
feature Manage your feature branches.
release Manage your release branches.
hotfix Manage your hotfix branches.
support Manage your support branches.
version Shows version information.

Mavenの導入

1.Mavenをダウンロードする
screenshot
http://maven.apache.org/download.cgi

現時点の最新版は3.0.4なのでそれをダウンロードする。

2.ファイルを解凍してMavenのパスを通す
Mavenの置く位置は好きなところでいいと思います。

$ cd ~
$ .bashrc

export M3_HOME=/home/username/apache-maven-3.0.4
export PATH=${PATH}:$M3_HOME/bin


# yumでJavaを入れるとこの位置にあるはず
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre

3.Mavenが認識されたかどうかを確認する

$ mvn -version

これでMavenのバージョンができていれば完了です。

yumで構築できるものばかりなので比較的簡単に導入できるのがいいですね。
次回はEclipseAndroidの設定編を紹介していきます。

冬のコミックマーケットC83に出展します!

この度冬のコミックマケーットに出展します!

日程 2012年12月31日
会場 東京ビッグサイト
場所 東Y14b 「MagicMirror」

ななかInside PRESS vol.2
http://nanaka-inside.net/display/MM/MagicMirror

f:id:chuchuross:20121225175608j:plain

僕はDropbox APIの使い方を紹介してみました。
今回記事のために作ったサンプルプロジェクトがあったのですが、基本的にはAPIの利用方法を大まかにまとめています。

サンプルプロジェクトで工夫した点はあまり書けなかったので、後日ブログあたりで記事にしてみようと思います。
ソースコードはGitHubに公開しているので興味ある方は是非cloneしてください。

https://github.com/chuchuross/ImageGallery

プルリクエスト待ってます!

IntelliJをLinuxにインストールする

先日、IntelliJが75%割引で販売されていたので購入してみました!
VMで使っているCentOSにインストールする時いくつか手順が必要だったので紹介します。

用意するもの

yumでJavaをインストールする

yum install java-1.6.0-openjdk.x86_64
yum install java-1.6.0-openjdk-devel.x86_64

手順

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin
export IDEA_JDK=$JAVA_HOME

  • IntelliJのbinフォルダにあるidea.shを起動するとインストーラが起動するので画面の内容に沿って進める

こんな感じでIntelliJがインストールできます。
自分が陥っていたのはjava-1.6.0-openjdk.x86_64だけインストールしててtool.jarがないというエラーが出ていました。

Google Feed APIを使ってみたよ(JSON)

割と前からある気がするAPIですが、最近触ったので使い方を紹介してみます。
APIjavascriptでも利用できますが、今回はJSONの結果を利用したのでそっちで書きます。

Google feed API
https://developers.google.com/feed/?hl=ja

Google feed APIとは

キーワードからサイトのRSSを検索できたり、RSSのURLをAPIに渡してあげるとそのサイトの記事をJSONで取得することができます。
サイト毎で生成されているRSSの構造に依存しないので、サイト毎にXMLのパースをする必要がないのがいいですね。
ただいつAPIが停止するかわからないので、長期的な運用には向いていないかも?

特徴

  • JSONなのでXMLより値を扱いやすい
  • 導入が簡単
  • デベロッパー登録は不要(2012/12/19時点)

渡せるパラメーター

参考にしたのはここ。
https://developers.google.com/feed/v1/jsondevguide?hl=ja

使ったことあるとこだけ説明

パラメータ 動作
q 用途によって入れる値が変わる。
RSS検索時:キーワード
記事取得時:RSSのURL
v バージョン1.0でいい気がする。
hl 言語。jaとか入れればいいと思うんだけど機能している気がしない。
num 記事取得限定
取得する記事の件数。デフォルトでは100件

ブログ検索

ベースになるURL

https://ajax.googleapis.com/ajax/services/feed/find

このベースになるURLに先ほど紹介したパラメータをセットしていきます。
例)「ポケモン」で検索

https://ajax.googleapis.com/ajax/services/feed/find?q=%e3%83%9d%e3%82%b1%e3%83%a2%e3%83%b3&hl=ja&v=1.0

試しに上のURLを表示してみるとJSONで結果が取得できます。

取得できる項目

記事取得

ベースになるURL

https://ajax.googleapis.com/ajax/services/feed/load

このベースになるURLに先ほど紹介したパラメータをセットしていきます。
例)4Gamer.net

https://ajax.googleapis.com/ajax/services/feed/load?q=http://www.4gamer.net/rss/index.xml&num=10&hl=ja&v=1.0

試しに上のURLを表示してみるとこれもJSONで結果が取得できます。

取得できる項目

  • 著者
  • feedの説明文
  • 記事の配列
    • 著者
    • カテゴリ配列
    • 内容
    • 記事のURL
    • 更新日時
    • 記事名
  • feedのURL
  • サイトURL
  • サイト名
  • feedのタイプ
  • エラー文
  • HTTPステータスコード

あとはこれらで取得できる項目をJavaPHPなどで利用するだけです。
興味がある方は是非試してみてください。

気が向いたらjavascriptでも使ってみます。

SQLiteOpenHelperのonCreate内でAsyncTaskを使用してinsertする時の注意点

久しぶりに更新します。

SQLiteOpenHelperを継承したクラスのonCreate内で、AsyncTaskを使ってSQLiteにテストデータをinsertする処理を書いていたら、SQLiteDatabaseのところでNullPointerExceptionで落ちてしまった。

大まかなコードはこんな感じ

@Override
public void onCreate(final SQLiteDatabase db) {
  
  ~Create Table~

  new AsyncTask<Void, Void, List<Entry>> (){

      @Override
      protected List<Entry> doInBackground(Void... params){
          return 非同期で行う処理;
      }

      @Override
      protected void onPostExecute(List<Entry> result) {
          ContentValues values = new ContentValues();
          values.put("id", result.getId());
          values.put("title", result.getTitle());
          db.insert(TABLE_NAME, null, value);
      }

  }.execute();

}

これで実行するとdb.insert(TABLE_NAME, null, value);の行でNullPointerExceptionが起きたので以下のような感じに修正してみた。

@Override
public void onCreate(final SQLiteDatabase db) {

  ~Create Table~

  new AsyncTask<Void, Void, List<Entry>> (){

      @Override
      protected List<Entry> doInBackground(Void... params){
          return 非同期で行う処理;
      }

      @Override
      protected void onPostExecute(List<Entry> result) {
          ContentValues values = new ContentValues();
          values.put("id", result.getId());
          values.put("title", result.getTitle());
          getWritableDatabase().insert(TABLE_NAME, null, value);
      }

  }.execute();

}

原因はよくわかってないけど、onCreate後に引数で渡されてるSQLiteDatabaseがcloseされたりしているなかなと思ってgetWritableDatabaseでSQLiteDatabaseを呼び出したら動いた。

SQLiteOpenHelper内でAsyncTask使うことあんまりない気もするけどなんとなく書いてみた。

【Android】ActionbarSherlockインポート時Overrideの行でエラーが出る時の対処法

今回のアプリにはActionbarを試そうということでActionbarSherlockを導入した。

しかしながらインポート時にOverrideするメソッドがないよみたいな事言われたので、
何が原因なのかなかなか見つからず、英語圏のサイトを漁ってみた。

すぐ見つかったので意外と多い問題なのかも
http://stackoverflow.com/questions/7132204/greendroid-or-actionbarsherlock-setup

一応原因はjavaコンパイラーのバージョンが1.5になっていたためで、
これを1.6に上げれば問題なく動くようになった。

メモ書き: LinearLayoutとRelativeLayoutの使い方

Androidのレイアウトはわかってない事も多かったので、ネットで色々探していたらいい感じに勉強できそうな記事を見つけた。


何かと参考になりそう。
http://d.hatena.ne.jp/Korsakov/20110131/1296504108

http://d.hatena.ne.jp/Korsakov/20110131/1296504108