Zaurus/Android

Sharp ZaurusやAndroidなど、Linuxベースの携帯端末系に関する記事

2012年1月16日 (月)

ころぷら for Android

最近いろいろ動作が謎めいてきたコロプラ for Androidが、中にどんなものを持ってるのか。
とりあえず、apktoolでばらしてみた。

・smali/android/net/http/SslError.smali
public class SslError

・smali/com/android/vending/billing/IMarketBillingService.smali 他
アプリ内課金関連
ソフトウェア技術ドキュメントを勝手に翻訳の「2. アプリ内課金」が参考になる。
ここを読むと分かるが、アプリ内課金に、端末IDの取得(android.permission.READ_PHONE_STATE)は必須要件ではない。


・smali/com/felicanetworks/mfc/
Felicaネットワークのモジュール。
おサイフケータイ対応Android携帯電話 アドホック機能のご紹介にて配布されているもの。

・smali/com/github/droidfu/
githubのレポジトリ: kaeppler / droid-fu
解説
・application life-cycle
・background tasks
・HTTP messaging
・(remote) image handling
・custom adapters
という機能がある。

ところで、こいつは「Apache License, Version 2.0」とあるんだが、守られているんだろうか?


・smali/com/google/android/apps/analytics/
Google Analytics関連モジュール

アクセス解析に使用している。


・smali/com/google/android/c2dm/
Android Cloud to Device Messaging Framework
Googleが用意しているWebサービス側から端末側に情報をPUSHする仕組み。
Gmail通知やChrome to Phoneなどでも利用されている。


・smali/com/google/android/zippy/SharedPreferencesCompat.smali
zippy-android
「Tools for writing Zipply Android apps」と説明にあるもの。

2010年のイベント(Android IO)で使われたプレゼン資料 Writing Zippy Android Apps を見ると、アプリが応答待ちになってしまうと、ユーザから見ると、アプリが異常動作をしているのか、それとも待てばいいのかがわかりにくい。
そうならないようにするフレームワークのようだ。

http://code.google.com/p/zippy-android/source/browse/trunk/examples/SharedPreferencesCompat.java をベースに使用しているようだ。


・smali/jp/HAKARU/android/
AdManager.smaliというファイルがあり、広告関連のようで、jp/co/dimage/android/BaseAdManagerを呼び出したりしている。
hakaru.jp というドメイン名をベースとしたアプリだけど、hakaru.jpってタニタだけど関係あるのかな?なさそうな気がするけど。

AndroidManifest.xmlに↓なものが設定されている。

・smali/jp/co/dimage/android/
DIMAGE SHARE社のADMAGEというサービス用のモジュール。
ちなみにマーケットにテストアプリが転がっている。


・smali/jp/colopl/
コロプラ社のものがいろいろ入っている。
というか、アプリ名を入れないでパッケージングしちゃってるんだー、とか思ったりする。
素人開発者説があったけど、ほんとっぽいのが嫌な感じ。


・lib/armeabi
NDK用バイナリ置き場に、いくつかファイルがある。
libcryptograph.so libdcapikey.so libmobfelica.so
まぁ、改ざん防止策用だと想定される。


・android.permission.READ_PHONE_STATEの必要性
おそらく、回線状況の変化を見たいんじゃないかなーと、勝手に推測。(解析してない)
TechBooster: PhoneStateListenerで回線の接続状況の変化を取得する

| | コメント (0) | トラックバック (0)

2010年12月13日 (月)

Androidの着信関連

電話があったら、自動着信して、それをSIP経由で外部に飛ばす、なんて仕組みは作れないだろうか、と調査中。

android-notifier
Wifi/Bluetooth経由でAndroid端末に来た着信のお知らせをLinux/Windows/Macで起動しているアプリに通知するというソフトウェア
オープンソースなので、改造が可能そう


tCallBlocking
「一度電話を取ってから切断する」なんて設定ができるようなので、仕組み的には自動着信は大丈夫そう?

ブラウザからのアプリ起動
まぁ、直接は関係ないけど

・muddy brown thang: Linux上で動くSkype用のbotを作る方法
・橋本商会: skype-socket-gatewayを作った
skypeボットの作り方。

| | コメント (0) | トラックバック (0)

2010年12月 9日 (木)

Xperia X10にAndroid 2.3をのっける

最近、Xperia X10方面はいろいろ動きがあります

・FroyoことAndroid 2.2.1を無理矢理のっける技法が開発される
 kernelはAndroid 2.1のままで、上に載せるもろもろを2.2.1に仕立て上げた、というもの
  X10 Custom ROM AOSPの元スレッド
 X10 2.2.1 Custom Rom AOSP
 X10 2.2 Custom ROM Newbie FAQ. 最初に読むもの
 X10 Custom ROM 2.2 AOSP Bug List and Fixes
 X10 Custom ROM AOSP 2.2.1 : How to for dummies (馬鹿でもできるAndroid 2.2.1)

・bootloaderのハック
 初期化・バックアップ・リカバリが行えるようbootloaderのハックが行われている
 [xRecovery 0.0.1-beta]

で、新しく出てきた新技。
Gingerbread 2.3 PREVIEW rom for Xperia X10
Android 2.2.1と同じようにkernelは2.1のままで、上を載せ替えるというもの
今回リリースされたのはAndroid SDKで作成されるAndroid 2.3のイメージファイルから抜き出して移植したものなので、いろんなハードウェアアクセラレータが有効になっておらず、遅い、とのこと。
そして、おそらく、ちゃんと電話として動かないと思われます。

また、今回のこれはxRecoveryを使う必要があり、システムを書き換えてしまいますので、下手すると文鎮化しますので、要注意です。


| | コメント (0) | トラックバック (0)

2010年11月17日 (水)

Xperia X10 mini / mini proでJIT入れ替えをしてみる

ネタ的には某wikiに書いちゃいましたが、こっちにも

Xperia X10向けにJITを置き換えて高速化を図る、という話があります。


情報をしったところ: なむわんがつらつらと。2.1なdocomoファームにJIT導入してみた
ネタ元: xda-developers forumのAndroid 2.1 OPTIMISER V002

実施手順
1. xda-developers forumのAndroid 2.1 OPTIMISER V002より「ver.002」入手
2. 上記ファイル内の「vmlibsv1/libdvm.so」と「vmlibsv2/dalvikvm」だけをSDカードにコピー
3. rootで入って/systemをrw,remount
4. 現在の「/system/bin/dalvikvm」と「/system/lib/libdvm.so」をSDカードにバックアップ
5. 変わりに新しいdalvikvmとlibdvm.soをコピーする
6. パーミッションが変わっている場合は「chmod 755 dalvikvm」「chmod 644 libdvm.so」
7. 現状のキャッシュファイルを削除「rm -r /data/dalvik-cache/*」
8. 再起動
9. キャッシュが再構築されるので、通常より起動に時間がかかる

なお、dalvik.vm.heapsizeを24mから32mに増やす、ということをやってみましたが
効果が薄い、というより少ないメモリがさらに減って逆に重く感じることが多かったため、標準の24mに戻しています。
なので、上記の手順にはbuild.propの入れ替え、というものはありません。


ベンチマーク的には以下のようになっています。


標準状態(heap 24m)heap増加(heap 32m)JIT置き換え+heap 24mJIT置き換え+heap 32m
Quadrant486499523506
Neocore42.5FPS44.1FPS45.4FPS44.2FPS

| | コメント (0) | トラックバック (0)

2010年11月15日 (月)

apkとodex

Android端末で/system/appを見てみると、apkという拡張子のファイルとodexという拡張子のファイルが見つかる。

で、odexとは何か?を調べた

SC3WO06Aさんのblogより:de-odexing
8796.jp管理日誌より:[Android] deodexをしてみよう

ようは、通常はapk内に含まれるdexという拡張子のファイルをサポートするのがodexファイル。
ただ、odexがあると、apk内にdexというファイルは不要なので、システムとしては容量削減のためapk内のdexを削除することが多い。
このdexが削除されているapk内に、odexファイルからdexファイルを生成し戻す、という手順がdeodexというもの。

で、なんでdeodexしたいかというと、プレインストールソフトを、他のAndroid端末で使ってみたいから、というものだったり・・・

| | コメント (0) | トラックバック (0)

2010年11月 1日 (月)

Xperia X10 mini/mini proをAndroid 2.1へアップデートする

10/31から徐々に配信中のAndroid 2.1へのアップデータ。

現時点ではGerman firmwareであれば提供されているらしい。

情報の起点
xdaのto update x10 mini pro
build.propを「1238-8536」に書き換え、German版にすると、2.1へのアップデータが適用できる、という話。

ただし、German、つまり、ドイツは、キーボードが英語配列ではなく、ドイツ語配列となっており、「Z」と「Y」の位置が逆転しています。
これを解消するにはおそらく/system/usr/keychars/qwerty.kcm.bin の書き換えが必要になるのかと思います。

詳しいことは後ほど、更新・・・

| | コメント (1) | トラックバック (0)

2010年10月28日 (木)

マンガをAndroidで見るには?

マンガをAndroidで見るには?

Droid Comic Viewer
画像形式: JPEG, PNG, BMP
アーカイブ形式: CBZ/ZIP, ACV, CBR/RAR
言語: English, French, German,Italian, Polish, Portuguese, Spanish

かなりいろんな機能が搭載されているビューアー。
特に各種操作をカスタマイズできる機能がすごいと思う。
以前はACV(Android Comic Viewer)と名乗っていた。

独自のACV形式でRobot Comicsというところで英語コミックを販売している。また、Android以外にもiPhone/iPadNintendo DSi用にも提供されている。
ただ、基本的にはACV形式およびコミック毎のアプリ化はRobot Comicsに委託することになる。
とはいっても、ACV形式の書式はZIP形式+comic.xmlで、Introduction to creating comics for Droid Comic ViewerACV 2 format specificationに詳細がある。
xmlでは読み終わった後に次話を開いたりする設定ができるようだ。

COMICROID
画像形式: PNG, JPG, BMP, GIF
アーカイブ形式: zip, rar, cbz, cbr, lzh
言語: English, Japanese, Chinese

日本人作者が作成しているビューアー


Androbook
画像形式: 内部的にはJPG
アーカイブ形式: アプリ化(apk)されているので内部的にはzip
言語: 日本語

日本人作者が作成しているコミックアプリ作成ソフト?
ビューアーとしての機能はかなり低レベル。
JPG画像をzipで固めて、アップロードすればアプリになり、それをAndroidMarketで公開できる。
という点のみ、見るべき点がある。


| | コメント (0) | トラックバック (0)

2010年10月21日 (木)

QVGA端末のAndroid Marketに出てこないアプリの検証

androbookで作り、Android Marketに掲載されている作品が、QVGA端末のMarketに出てこない件について調査。

マニフェスト問題だろう、というあたりはあったので、とりあえず適当にandrobookで作り、apk入手。

# apktool d パッケージ名

で、展開して、AndroidManifest.xmlの内容を確認。

想定通り、supports-screens設定がされていない。
参考: Y.A.Mの雑記帳: Android multi screen 対応 より

<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true" />

とりあえず、AndroidManifest.xmlを編集して、上記を追加。
あと、「android:versionCode」の値を増やして更新版であることを認識させる。

次に、「apktool b ディレクトリ名 新apk」でapkファイルを作ってみる。
でも、このapkファイルは署名してないということで、marketにアップロードできなかった。

じゃぁ、日本語リソース追加手法と同様にすればいいのかな?
ディレクトリ名/build/apkにあるAndroidManifest.xmlとresources.arscだけ置き換えればいいかな?と思ったので・・・

「apktool b ディレクトリ名」でbuildディレクトリを作ったあと、
「zip -u 元々のapkファイル名 -0 AndroidManifest.xml resources.arsc」を実行してみる。
あと、Android Marketにアップしてみたらzipalign実行しろと言われたので「zipalign -v 4 元apk 新apk」。


で、これでできた新apkファイルをアップロードしてみると、ちゃんとQVGA端末のMarketで出てくるアプリができあがった。


でも、このapkファイルをインストールしようとしたら、「Unknown reason: -102」というエラーでインストールが失敗しましたけどね。

まぁ、ここによると改変したのが原因っぽいエラーコードになってますね

102: Installation failed: Invalid package.
The application cannot be installed properly because some of the package contents are invalid or missing.


とりあえず検証自体はできたので、okかなっと
-------------------------------------------------------


で、もうちょっと、ちゃんとしてみようかな?と思って、継続

/usr/java/jdk~/bin/keytool -genkey -v -keystore my-release-key.keystore -alias 名前 -keyalg RSA -keysize 2048 -validity 10000

でkeyを作成。
そのあと、
apktool b ディレクトリ名 apk名
でapkファイル作成

その後、
/usr/java/jdk~/bin/jarsigner -verbose -keystore my-release-key.keystore apkファイル 名前
でapkに署名

そのあと、jarsigner -verbose -verify apkファイル名で検証
で、zipalignで整えてMarketにアップロード。

・・・いままでの署名と違う、と言われる


仕方がないのでもうちょっと手を入れる
どうせなので、アプリケーション名も自分のにしちゃえ

・AndroidManifest.xmlのpackage=を自分の独自のものに変更
・smaliディレクトリ内部にあるディレクトリ構造を、上記の自分独自のものに変更
・「~.smali」ファイル内にあるpackage名の部分をsedを使って置き換え
・apktool bでapk作成
・jarsignerで署名
・zipalignで最適化

・・・パッケージファイルが無効です。ですか・・・

もしかして「net.~.androbook.001」なんてパッケージ名が不可?
「net.~.androbook.book001」という名前で再チャレンジ→インストール成功!!

| | コメント (0) | トラックバック (0)

2010年10月20日 (水)

Android Hauwei IDEOS U8150-B

ハーウェイのIDEOS U8150-Bがなかなか興味深い。

Weekly ASCIIでの紹介: ファーウェイのAndroid端末『IDEOS』がすごくイイ!

今回買ったモデルはU8150-Bと、末尾に-Bがつきます。このモデルの対応周波数はW-CDMA 2100/1900/850/1700MHz。海外端末で1700対応というと、アメリカT-Mobileの1700/2100MHz(Band IV)のものが一般的なのですが、8150-Bの対応バンドは“Band IX”らしい。これ、イーモバイルとドコモが使っている日本で言うところの1700MHz。ってことは香港で買ったIDEOSはイーモバイルで……? 残念ながらIDEOSには技適マークがないので、日本で使っちゃいけないのでなんとも……この先は謎ということで(笑)。


で、調べてみると
使えない精神科医の独語(仮称): イーモバイル赤SIMでアンドロイド

「Setting」→「Wireless & Networks」→「Mobilenetwoks」
→「Access Point Names」 ホームの隣のメニューキーを押し「New APN」

Name:emnet
APN:emb.ne.jp
Proxy:not set
Port:not set
Username:em
Password:em
Server:not set
MMSC:not set
MMS proxy:not set
MCC:440
MNC:00
Authentication type:not set
APN type:not set


ちなみに、FOMAプラスエリアは無理っぽい。

Rey.さんのtwitter発言より

ドコモのプラスエリア地域で IDEOS U8150-B を試したら、予想通り圏外でした。プラスエリア対応機種の NM706i はアンテナピクト 7本全部立っていたので、受信感度差では無い筈。(http://twitter.com/rey_k/status/26274465278)
同じ場所 (神奈川県西部の山間部) で、IDEOS U8150-B でキャリアを検索すると、Softbank だけが出てきます。奈良の田舎でもそうでしたが、都市部以外で UTMS 2.1GHz (プラスエリア非対応機) を使うには、やはり Softbank が強いです。(http://twitter.com/rey_k/status/26275430824)


なお、U8150はバリエーションがあるので注意
Blog of Mobile!!~最新ケータイ情報~: Huawei IDEOS U8150-DがGCF通過


U8150-AはW-CDMA 2100/1700(Band IV)/900 MHz, GSM 1900/1800/900 MHz
U8150-BはW-CDMA 2100/1900/1700(Band IX)/850 MHz, GSM 1900/1800/900 MHz
U8150-DはW-CDMA 2100/900 MHz, GSM 1900/1800/900 MHz

イーモバイルで使用しているW-CDMA 1700(Band IX)対応はU8150-Bのみなので要注意
同じ1700MHzとあっても、Band IVは別物!


---------------------------------------------
2010/11/17追記

Blog of Mobile!!~最新ケータイ情報~:Huawei Ideosが技適通過!!
2010/09/30付けでIdeosが技適を通過したとのこと

groundwalker.com:Huawei IDEOS U8150-B を入手してみた
root取得方法とかの解説あり

| | コメント (0) | トラックバック (0)

2010年10月 7日 (木)

App Inventorについて調査中

App Inventor Idea Book より


大きすぎる ImageSprite 画像の縮小
画面に収まらない画像が自動縮小されるが、その法則性について


カメラの起動
カメラで撮った画像を、ファイル選択で選択して表示する例
これは古いやりかた

Camera Test
カメラで撮った画像を直接貼り付ける例


Googleのフォーラムより
TidyDBを使う例


| | コメント (0) | トラックバック (0)