2011年7月13日水曜日

ksoap2 android SSL対応

・トランスポートで「HttpsTransportSE」を使うだけ。
・オレオレ証明だと、APIでエラーになり使えない。
→テストができない!
実機 :comodoのフリーSSL(3か月間のみ)を使う
エミュ:Androidをroot化してルート証明書を入れる。
KSOAPの一部(HttpsServiceConnectionSE)を作り替える。
全てのHost名を検証にパスするよう素通しのHostnameVerifierを設定する。

※補足:Tomcatを自己証明書でSSLにする方法
JDK標準のkeystoreを使う。
対話形式で色々聞かれるので入力していき、公開鍵を生成する。
これをTomcatに設定すればOK
詳細はここ→http://buzzmemo.blogspot.com/2010/03/tomcatssl.html

※補足:Androidエミュへのルート証明書インストール
事前に…証明書をブラウザからエクスポートしておく必要あり。
BKSのライブラリをDLしてパス通しておく必要あり。
詳細はここ→http://www.glamenv-septzen.net/view/969
↓コマンド例
emulator -avd 2.2 -partition-size 128
adb pull /system/etc/security/cacerts.bks
keytool -keystore cacerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -importcert -trustcacerts -alias shomeisho -file shomeisho.crt
adb remount
adb push cacerts.bks /system/etc/security/cacerts.bks

ksoap2 android のコーディングメモ

だいたい次のような流れ実装

・SOAPの設定値宣言
ネームスペース、メソッド名、soapアクション、リクエストURL

・パラメータの作成
プリミティブ指定とオブジェクト指定がある。
パラメータに属性を付与するためにPropertyInfoオブジェクトを作成し、それにパラメータをセットします。
同じネームスペースのパラメータは、同じネームスペースを設定するといいかんじにしてくれる。

・SOAPエンベロープ作成(中身)

・HTTPトランスポート作成(外側)

・HTTPヘッダ作成(任意)

・リクエスト実施(httpTransp.call(SOAP_ACTION, envelope, headerList))
HTTPトランスポートに、soapアクション、SOAPエンベロープ、HTTPヘッダを渡してcallするのみ

・レスポンス抽出(envelope.getResponse())
レスポンスのタグの数によって勝手に変換されます。
0…null
1…オブジェクト単独で帰ってくる。
2以上…Vectorクラスにレスポンスのオブジェクトが順番に格納さる。

ksoap2 android の インストール

▼Maven化している場合
・pom.xmlに下記を追加のみ
<project>
  ...
  <repositories>
    <repository>
      <id>googlecode-ksoap2-android</id>
      <name>googlecode-ksoap2-android</name>
      <url>http://ksoap2-android.googlecode.com/svn/m2-repo</url>
    </repository>
  </repositories>
  ...
  <dependencies>
    <dependency>
      <groupId>com.google.code.ksoap2-android</groupId>
      <artifactId>ksoap2-android</artifactId>
      <version>2.5.7</version>
    </dependency>
  </dependencies>
  ...
</project>

▼Maven化してない場合
・動くけどEclipseのコンソールにビルドの度に警告が出る。
・サイトからライブラリをDLして、Androidプロジェクトにライブラリとして取り込む。
・サイトのライブラリの場所がわかりずらい。
  「http://code.google.com/p/ksoap2-android/」アクセス
  「downloads」クリック
  「http://code.google.com/~中略~/ksoap2-android-assembly-2.5.7-jar-with-dependencies.jar」クリック
  「View raw file」クリックしてDL

2011年6月16日木曜日

EclipseでのAndroidプロジェクトのMaven化

Windows前提で、上から順にやる。
※version後ろの"+"は、それ以上という意味だけど相性あるかも?

0.JDK1.5+
・言わずもがな。http://java.sun.com/javase/ja/6/download.html
・PATHの追加(%JAVA_HOME%は、JDKのインストールパスです。)
  %JAVA_HOME%\bin;

1.Eclipse Galileo version 3.5+
・言わずもがな。http://mergedoc.sourceforge.jp/

2.Android Developer Tools plug-in version 0.9.9+
・Eclipse使用可能ソフトウェアサイト使用:https://dl-ssl.google.com/android/eclipse/
・Android SDKの入れ方とかは、どうぞおググりください。
・PATHの追加(ANDROID_HOMEは、SDKのインストールパスです。)
  %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;
・後の手順でMavenリポジトリにAndroidライブラリを入れますが、SDKで入れているAPIレベルしか入りません。
  何も考えず全入れしたいのであれば、android-3~12、google-apis-3~12、compatibility-v4を入れときます。

3.Maven2.2.1系
・右記からDL:http://Maven.apache.org/download.html
・3.0系だと後の手順でエラーとなる可能性があるので止めた方が、君子危うきになんとやら。
・PATHの追加(MAVEN_HOMEは、Mavenのインストールパスです。)
  %MAVEN_HOME%\bin
・「settings.xml」細かい設定とかは、どうぞおググりください。

4.M2Eclipse plug-in version 0.12.0+
・Eclipse使用可能ソフトウェアサイト使用:http://m2eclipse.sonatype.org/sites/m2e/
・0.1が入っていると入れれないので消す。
・コマンドから「mvn -Declipse.workspace=workspaceのパス eclipse:add-maven-repo」
・入れた後「ウィンドウ→設定→Maven→インストール→追加」でインストールしてるMavenを指定する。

<----ここまで普通にMavenをEclipseで使う方法
---->ここからAndroid対応

5.Maven Android Plugin version 2.6.0+
・mvnコマンドで「android:~」というゴールが使えるようになる。
・ここ http://www.sonatype.com/books/mvnref-book/reference/android-dev.html を読みながらやる。
  =====要約=====
  14.2.2.MavenリポジトリへのAndroid Artifactのインストール
    ・ここ https://github.com/mosabua/maven-android-sdk-deployer の右上の[Downloads]からDL
    ・何も考えず全入れする場合:コマンドから解凍したフォルダ直下(pom.xmlがある)に移動して「mvn install」実行!
      選んで入れる場合:「mvn install -P 2.2」とかでできる。詳細は、上記サイトをよく読んで。
  14.2.3.プラグインの設定
    ・Mavenの「settings.xml」に下記を追加する。
      <pluginGroups>
        …
        <pluginGroup>com.jayway.maven.plugins.android.generation2</pluginGroup>
        …
      </pluginGroups>
  14.3.動かす
    ・コマンドベースでごにょごにょ仕方が書いてあるが、あとでEclipseプラグインから動かすので無視!。
    ・ここ http://code.google.com/p/maven-android-plugin/wiki/GettingStarted を参考にしてまずサンプルを動かす。
    ・文書内のリンクを辿りサンプルをゲット「Samples→Download samples from the stable branch→DownLoad.zip」
    ・解凍したフォルダ中のフォルダ「helloflashlight」フォルダ直下(pom.xmlがある)に移動して「mvn eclipse:eclipse」実行!
    ・Eclipseから「helloflashlight」プロジェクトをインポート。プロジェクトをリフレッシュしてエラーが出なければとりあえずOK。
    ・エミュを起動しておきコマンドから「mvn install android:deploy -Dandroid.device=emulator」とかすればアプリがエミュに入るはず。

6.m2eclipse-android-integration
・Eclipse使用可能ソフトウェアサイト使用:https://svn.codespot.com/a/eclipselabs.org/m2eclipse-android-integration/updates/m2eclipse-android-integration/
・ここ http://code.google.com/a/eclipselabs.org/p/m2eclipse-android-integration/wiki/GettingStarted の
  「2. Create Eclipse Project」の「If you are starting with a new project 」の箇所の手順を行う。
・エミュを起動しておき、mvnの実行構成からゴール「android:deploy」などとして実行すれば、アプリがエミュに入るはず。

所信表明

Androidに関する覚えを書き綴る。
 願わくば次の千年紀に役立たんことを(無理)