Twitterのウィジェットがあったのね
こんなお気軽なTwitterのウィジェットがあったのですね。知りませんでした。
http://twitter.com/about/resources/widgets
こんなお気軽なTwitterのウィジェットがあったのですね。知りませんでした。
http://twitter.com/about/resources/widgets
しばらく見ないうちに
android-pluginがsbt 0.11に対応されていた。
https://github.com/harrah/xsbt/tree/0.11
というか、sbt0.10をつかったことがないうちに、sbt0.11 にバージョンアップしていることに気づきました。
https://github.com/harrah/xsbt/tree/0.11
時間ができたら、つかってみようと心に思う
“adb.exe”の格納ディレクトリを書き換えるとか面倒なので、
“create_project.sh” の最新版を調べてみると、
最新版ではディレクトリが、”platform-tools” に直っていました。
最新版は sbt-android-plugin のバージョンが、”0.5.2SNAP-SHOT” と開発バージョンになっていたので、
今回は、ちょっと古い
https://github.com/jberkel/android-plugin/commit/e7acf15c5f424e8f67f2c0a193d754b0c63c3238#script
を使って、”create_project.sh” をscalaオブジェクトに変換してみました。
今後新しいバージョンが出てきた場合は、同じやり方でできるのではないかと思います。
一番上に以下のobject宣言を追加します。
object CreateProject {
def main( args:Array[String] ){
一番下に以下の閉じ括弧を2つ追加します。
}
}
> scalac create_project
scalac create_project.scala
あとは、先日の手順のと同様に実施すればうまくいきました。 ( http://ti.que.jp/p/2011/07/02/sbtscalaandroidhowto/ )
なお、
override def adbPath = androidSdkPath / “platform-tools” / adbName
の加工部分は不要になります。
Windowsで作業した内容です。Java、Scala、Android_SDKはインストール済みでかつ、
エミュレータが”SDK Manager”などで作成されている状態のの前提で書きます。
sbt の WIKI の http://code.google.com/p/simple-build-tool/wiki/Setup で説明されているとおりに、 [SBT_HOME] に sbt.bat を作成する。
set SCRIPT_DIR=%~dp0
java -Xmx512M -jar “%SCRIPT_DIR%sbt-launch-0.7.7.jar” %*
[SBT_HOME]を、環境変数 PATH に追加しておく
“[SBT_HOME]/createProject” に、create_project.scala を配置する。
このディレクトリは[CREATE_PROJECT_HOME]と呼ぶことにする。
[CREATE_PROJECT_HOME]で、create_project.scala をコンパイルする。
[CREATE_PROJECT_HOME]以下に10ファイル強のclassファイルができる。
scalac create_project
プロジェクトを作成するワークスペースディレクトリに移動する。このディレクトリを[WK_SP]と呼ぶことにする。
[WK_SP]に、Scalaアンドロイドプロジェクトを作成するためのバッチファイル”createProject.bat”を作成する。
cd %~dp0
set API_LEVEL=8
set PROJECT_NAME=SampleProject
set PACKAGE_NAME=sample.a.b
set SCALA_VERSION=2.9.0
set ACTIVITY_NAME=SampleActivityset CREATE_PROJECT_DIR=[CREATE_PROJECT_HOME]を指定する
cmd scala -cp .;%CREATE_PROJECT_DIR% CreateProject ^
%PROJECT_NAME% %PACKAGE_NAME% ^
–api-level %API_LEVEL% ^
–scala-version %SCALA_VERSION% ^
–activity %ACTIVITY_NAME%
- 2行目からのsetで環境変数を指定している部分は、作成したいプロジェクトに応じて値を変更する。
- API_LEVEL=9(Android 2.3 に対応したAPI)ではプロジェクトは作れたがうまく動作しなかった
PROJECT_NAMEで指定したディレクトリができている。
(上の例では、”[WK_SP]/SampleProject”。以後[PROJECT_ROOT]と呼ぶ)
[PROJECT_ROOT] に移動してsbtコマンドを発行する。
sbt
update
package-debug
- これで、[PROJECT_ROOT]以下に、依存しているリソースがダウンロードされる。
最新の Android SDK では、”adb.exe” の格納ディレクトリが、
“[ANDROID_SDK_HOME]/tools” から “[ANDROID_SDK_HOME]/platform-tools” に変更されている。
自動生成された。インストールされている”[Android SDK]/tools” に “adb.exe”がなければ、
“[PROJECT_ROOT]/project/build/プロジェクト名.scala”(上の例では”SampleProject.scala”)
中の”MainProject”クラスと”TestProject”の関数”adbPath”を以下のようにオーバーライドする。
(現時点のsbt-android-pluginは、”[ANDROID_SDK_HOME]/tools/adb.exe”を使おうとしてしまう)
class MainProject(info: ProjectInfo) extends AndroidProject(info) with Defaults with MarketPublish {
val keyalias = “change-me”
val scalatest = “org.scalatest” % “scalatest” % “1.0” % “test”override def adbPath = androidSdkPath / “platform-tools” / adbName
}
class TestProject(info: ProjectInfo) extends AndroidTestProject(info) with Defaults{
override def adbPath = androidSdkPath / “platform-tools” / adbName
}
書き換えが終わったら。sbt コマンド reload を実行する。
reload
コンパイルする
compile
Androidエミュレータを起動する
start %ANDROID_SDK_HOME%\tools\emulator -avd %EMULATOR_NAME%
Androidエミュレータにデプロイする
sbtコマンド install-emulator を実行する
install-emulator
- “[PROJECT_ROOT]/target/scala_[scalaバージョン番号]” に”プロジェクト名.apk” ができる。
Androidエミュレータからアンデプロイする
uninstall-emulator
デバイスへのインストール
以下のコマンドで実施できる模様。実機を持っていないので未確認。
install-device
かなりはまりましたが何とか、Sampleをandroidエミュレータで動作させられました。
はまったのは、sbtでエミュレータにデプロイしようとするとこんなエラーがでたところです。
[info] == SampleProject / reinstall-emulator ==
java.io.IOException: Cannot run program “[android-sdkのホームディレクトリ]\tools\adb”: CreateProcess error=2, ?w?????t?@?
意味がわからなかったのですが、[android-sdkのホームディレクトリ]\tools のディレクトリを覗くと
“adb_has_moved.txt” というファイルがあって
The adb tool has moved to platform-tools/
If you don’t see this directory in your SDK,
launch the SDK and AVD Manager (execute the android tool)
and install “Android SDK Platform-tools”Please also update your PATH environment variable to
include the platform-tools/ directory, so you can
execute adb from any location.
と書いてあります。
英語が不得意な私ですが、”platform-tools/” に引越ししたということぐらいは
理解できましたので、”platform-tools/”を覗いてみると、”adb.exe” がありました。
sbtのプロジェクト以下のファイルを探し回っていると
“SampleProject/project/plugins/src_managed/sbt-android-plugin-0.5.0/AndroidProject.scala”
に、adb のパスが定義されていました。
“AndroidProject.scala”の書き換えを試みるも、プラグインのコンパイル方法がわからず
プロジェクトのscala 自体が、AndroidProjectクラスのサブクラスだったのでこっちをオーバーライドしてみました
override def adbPath = androidSdkPath / “platform-tools” / adbName
sbt で reload の後、
start-emulator でインストールできました
Scala を使わず、Maven+Android でプロジェクトをビルドするところまではうまくいくのですが、
Scalaをpom.xml に記述すると以下のようなエラーがでて解決できませんでした。
Embedded error: ANDROID-040-001: Could not execute: Command = cmd.exe /X /C “C:[android-sdkのパス]\platform-tools\dx.bat –dex
–output=C:[プロジェクトのパス]\target\classes.dex C:[プロジェクトのパス]\target\android-classes”, Result = 2
“cmd.exe /X /C …..” のコマンドを直接実行しても原因究明にいたる情報が見つけられず、
一旦あきらめて、sbtとScalaとAndroidで動作させる方向にします。。。残念
Scala,Android,Mavenで動かしてみたいと思います。
何でということはないのですが、なんとなく
この組み合わせがきになったので仕様がありません。
いろいろ探し回ったあげく、「もうちょいかな」というところまでビルドできましたが、Maven package に失敗してます。
proguard-maven-plugin が、何が気に入らないのかエラーになってます。
。。。。
うまくいったらまた書くかも。
うまくいかなかったら、忘れることにします。
よくなったところ
わるくなったた点
Netbeansでプロジェクト新規作成から、ブラウザを作っていったのですが
あまりにあっさりできてしまったのでちょっと驚きです。
見た目も、ページが右から左にスーと動いてかっこよい感じです。
いまのところ、マウスでぺたぺたデザインするようなエディタは
ないですが、単独のデザイナをできるらしいので、
楽しみです。
2011-4-13(水)新宿で開催された「Eric Evans氏来日記念 チュートリアル”Domain Driven Design(DDD)” 」に参加させていただきました。
大変おお白かったです。
社用のため、2時半で早退しなくてはならなかったので、とても残念です。。。
講義で聴いた内容をマインドマップでノートしたのですが、その清書をさらしてみます。
あまり理解できていないかもしれませんが、とても興味深かったので、先日出版された、本を買って勉強したいと思います。
DDDチュートリアル マインドマップ (現時点私が理解している内容)
http://domainlanguage.com/newsletter ・・・ 講義中紹介されたサイト
amazonへのリンク
楽天booksへのリンク
![]() 【送料無料】エリック・エヴァンスのドメイン駆動設計 |
名前を忘れてしまうから備忘録
オープンリダイレクタ脆弱性
引数に特定のURLを受取、そのページへジャンプさせる単純なWebアプリケーションが、悪意のあるサイトの入り口として使われてしまう脆弱性