・2010/02/23
Google Android開発環境の構築のつもり
(Eclipse重い重い! Javaって相変わらずクソ重いね!)
Tags: [Android開発]
必要なソフトウェア
Sunの Java SE Development Kit ダウンロード
Java SE Development Kit(JDK 6 Update 18)
jdk-6u18-windows-i586.exe
jdk-1_5_0_22-windows-i586-p.exe
JDKと JREの両方必要。
File Description and Name Size
Java SE Development Kit 6u21
jdk-6u21-windows-i586.exe 75.91 MB
Java SE Runtime Environment 6u21
jre-6u21-windows-i586.exe
下記は要らないので削除
自動実行の Runのレジストリ
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"SunJavaUpdateSched"="\"C:\\Program Files\\Common Files\\Java\\Java Update\\jusched.exe\""
アップデート チェック関連のファイルも削除
C:\Program Files\Common Files\Java\Java Update
jaucheck.exe
jaureg.exe
jucheck.exe
jusched.exe
task.xml
task64.xml
※ 下記コンパネで設定も無効にする。
Java Quick Starter を無効にする手順
jqs.exeも要らない
1.「コントロールパネル」をクリックします。
2.「Java コントロールパネル」のアイコンをダブルクリックします。
3.「Java コントロールパネル」の「詳細」ダブをクリックします。
4.「その他」まで移動し、ツリーを展開します。
5.「Java Quick Starter」のチェックボックスをオフにします。
6.「了解」をクリックし、コンピュータを再起動します。
※ キャッシュなども無効にする。
Android SDK(Android SDKのダウンロード)
Download the Android SDK
Windows android-sdk_r06-windows.zip 23293160 bytes 7c7fcec3c6b5c7c3df6ae654b27effb5
Ant(Apache Ant コンパイルに必要)
Ant(Apache Ant)
apache-ant-1.8.0-bin.zip
統合開発環境 Eclipse(動作が超クソ重い)
Eclipse IDE for Java Developers (92 MB) eclipse-java-galileo-SR1-win32.zip
●Windows インストーラ サービスにアクセスできませんでした。セーフ モードで Windows を実行している場合、または Windows インストーラが正しくインストールされていない場合に発生する可能性があります。
アプリケーションのインストール時にエラー メッセージ "Windows インストーラ サービスにアクセスできませんでした" が表示される。
解決方法:コマンドラインで下記を実行する。
MSIEXEC /unregister
MSIEXEC /regserver
ネイティブ アプリケーションの開発は Android NDKを使う
Native Development Tools(Android NDKのダウンロード)
Download the Android NDK
Windows android-ndk-r4-windows.zip 45778965 bytes 1eded98a7f5cd5e71f8ac74565f73f11
※ ネイティブ アプリケーションの開発は Android NDKが必要。
Androidの開発環境の構築
とりあえず、
D:\Android\
を基準にして Androidの開発環境の構築する。
Java SE Development Kit(JDK 6 Update 18)をインストールする。
android-sdk_r04-windows.zip
を解凍する。
D:\Android\android-sdk-windows
の
"SDK Setup.exe"(こいつ⇒
)
を実行する。
Android Development Tools (ADT)のインストール
Version 1.5以降から有れば十分、1.1とかは既に過去の遺物。
下記エラーが出る場合は、
Failed to fetch URL https://dl-ssl.google.com/android/repository/repository.xml,
reason: HTTPS SSL error.
You might want to force download through HTTP in the settings.
C:\Documents and Settings\{USER NAME}\.android
の
androidtool.cfg
に
sdkman.force.http=true
を追加。
Googleに情報を送信しない。
C:\Documents and Settings\{USER NAME}\.android
の
ddms.cfg
に
pingOptIn=false
Android DroidDraw Beta(droiddraw)
GUI配置ツール
AndroidのUIデザインがマウス操作でできる。
Android DroidDraw
droiddraw-r1b14.zip
DroidDraw Tutorials
http://www.droiddraw.org/tutorial.html
ボタンを押した時にイベントを発生させる方法。(イベントとプログラムを連携する。)
[Property]タブを開いて
[Click Listener Classname]にリスナーを設定する。
AVD(Android Virtual Device)作成方法
[Virtual Devices]の [New..]で作成
・Android 1.5 Platform Release 3 (API Level 3, rev 4) ← これは不用
・Android 1.6 Platform Release 2 (API Level 4, rev 3)
・Android 2.1 Platform Release 1 (API Level 7, rev 2)
・Android 2.2 Platform Release 1 (API Level 8, rev 1)
※ Android 2.0 Platformの API Level 5と Android 2.0.1 Platformの API Level 6は無視する。
プロジェクト作成方法
D:\Android\android-sdk-windows\tools
android -v create project -t 2 -p ./hello -a Hello -k com.example.hello
Created project directory: {Project Directory}\hello
Created directory {Project Directory}\hello\src\com\example\hello
Added file {Project Directory}\hello\src\com\example\hello\Hello.java
Created directory {Project Directory}\hello\res
Created directory {Project Directory}\hello\bin
Created directory {Project Directory}\hello\libs
Created directory {Project Directory}\hello\res\values
Added file {Project Directory}\hello\res\values\strings.xml
Created directory {Project Directory}\hello\res\layout
Added file {Project Directory}\hello\res\layout\main.xml
Added file {Project Directory}\hello\AndroidManifest.xml
Added file {Project Directory}\hello\build.xml
ターゲットの種類(-tの引数)
android list
で表示の idを指定する。
Available Android targets:
id: 1 or "android-3"
Name: Android 1.5
Type: Platform
API level: 3
Revision: 1
Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
id: 2 or "android-4"
Name: Android 1.6
Type: Platform
API level: 4
Revision: 1
Skins: HVGA (default), QVGA, WVGA800, WVGA854
お決まりの Hello, World
http://developer.android.com/resources/tutorials/hello-world.html
import android.widget.TextView;
TextView tv = new TextView(this);
tv.setText("Hello, Android !!");
setContentView(tv);
Antでコンパイル
Antを実行すると tools.jarが無いと怒られる場合。
Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar
環境変数の
JAVA_HOME
に JDKのディレクトリを設定する。
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18
(空白が有っても大丈夫。)
コンパイル方法
ant debug
ant release
全自動インストール(エミュレータ起動状態で実行する)
ant install
全自動アンインストール(エミュレータ起動状態で実行する)
ant uninstall
エラーが出る場合は諦めて adb uninstallを使う。
uninstall:
[echo] Uninstalling ${application-package} from the default emulator...
[exec] Failure
Androidの Javaのソースリストに日本語を含む場合、Antでコンパイルでエラーが出る。
[javac] D:\Android\Project\hello\src\com\example\hello\Hello.java:**:
警告: この文字は、エンコーディング ascii にマップできません。
sdk\platforms\android-x.x\templates
の中の
android_rules.xml
の encoding="ascii"を encoding="utf-8"に書き換える。
<javac encoding="utf-8" target="1.5" debug="true" extdirs=""
さらに、下記の警告が出る場合は
compile:
[javac] D:\Android\android-sdk\platforms\android-1.6\templates\android_rules.xml:248:
warning: 'includeantruntime' was not set, defaulting to build.sysclass
path=last; set to false for repeatable builds
includeAntRuntime="true"を追加する。(これをしないと日本語が化けるようだ)
<javac includeAntRuntime="true" encoding="utf-8" target="1.5" debug="true" extdirs=""
Webのサンプルをコンパイルしたらエラーが出る。
[javac] D:\Android\Project\xxx\src\com\example\android\service\Main.java:45:
メソッドはそのスーパークラスのメソッドをオーバーライドしません。
[javac] @Override
Androidのバージョン間で APIの仕様が変更されて互換性が無い場合があるので適宜修正が必要。
(Googleも模索してるんだね。)
古くに発行された Androidの参考書は注意が必要です。自分の開発する Androidの Platformに対応しているか確認必要。
バージョンの異なる書籍は参考に成りません。1.5の書籍は 1.6の開発の役には立たない。
importするパッケージが異なったり、APIが変更されていたり。
1.6から 2.0以降でも使用するパッケージや関数、果ては手法までもが違う事があります。
あと、希望として公式に 2.0以降の拡張機能を 必要な部分を個別に選択できるようにして 1.6にバックポートした物を出して欲しい。
常駐アプリが作成できるAndroidの“サービス”とは
http://www.atmarkit.co.jp/fjava/rensai4/android07/android07_2.html
エミュレータ起動方法
emulator @AND15
emulator @{AVD名}
※ タイトルバーの [5554]はエミュレータ デバイスのシリアル番号(複数動作時の識別番号)。
エミュレータ起動時の この表示は何だろう?
emulator: WARNING: 4: missing expected assignment operator (=). line ignored
emulator: emulator window was out of view and was recentred
インストール方法(emulatorが動いている状態で実行する)
adb install {apkのファイル名}
※ ant installの方が楽
.\hello\bin>adb install Hello-debug.apk
8 KB/s (4362 bytes in 0.500s)
pkg: /data/local/tmp/Hello-debug.apk
Success
アンインストール方法
adb uninstall {AndroidManifest.xmlの Packageを記述}
※ ant uninstallの方が楽
.\hello\bin>adb uninstall com.example.hello
Success
プロジェクトに build.xmlが無い場合、Antでビルド失敗の時(BUILD FAILED)
build.xml:49: taskdef class com.android.ant.SetupTask cannot be found using the classloader AntClassLoader[]
プロジェクトのアップデートを行う。build.xmlが生成される。
android update project -t 2 -p .
File build.xml is too old and needs to be updated.
Android Marketでアプリケーションを配布
AndroidManifest.xmlファイルに以下の属性が必要です。
android:versionCode
android:versionName
android:name
さらに、アプリケーションでSDKの最小バージョン番号の指定が必要な場合は、
AndroidManifest.xmlファイルで要素を使って記述します。
それと、Android Marketデベロッパー登録(開発者登録)で $25の登録料が必要。
Android Marketデベロッパー登録(開発者登録)
配布用は Javaに署名が必要
有効日数は 10000日を指定
keytool.exe -genkey -keystore myapp.key -validity 10000 -alias myapp
jarsigner -keystore myapp.key -verbose Hello-unsigned.apk myapp
※ keytool.exeと jarsigner.exeは Java SDK(JDK)の binの中に有る。
ZipAlignで apkファイルを最適化する。同時に Java高速化の効果も有るらしい。
Zipalign: an easy optimization
zipalign -v 4 source.apk destination.apk
こんな感じ
Verifying alignment of .\bin\IS01.apk (4)...
50 META-INF/MANIFEST.MF (OK - compressed)
365 META-INF/FREE_WIN.SF (OK - compressed)
744 META-INF/FREE_WIN.DSA (OK - compressed)
1578 res/layout/main.xml (OK - compressed)
1978 AndroidManifest.xml (OK - compressed)
2676 resources.arsc (OK)
3589 classes.dex (OK - compressed)
Verification succesful
Androidアプリの多言語対応 L10nDemo App L10nDemo.zip
https://groups.google.com/group/android-developers/web/localizing-android-apps-draft
java.util.Date().toString() が非常に遅い。
INFO/Resources(2825): Loaded time zone names for en_US in 225ms.
ListViewAdapter での java.util.Date の扱い方
http://groups.google.co.jp/group/android-group-japan/msg/bc680f6a2f54a23e
android tip ? don’t call toString() on a Date object!
http://dweebos.com/?p=56
●コンパイル時の中間ファイルを削除する。バックアップを取る時にファイル数と容量を減らせます。
classesディレクトリと classes.dexファイルを削除する。
コマンドライン
for /f "tokens=*" %d in ('dir /b /s /a:d classes') do rmdir /q/s "%d"
for /f "tokens=*" %d in ('dir /b /s classes.dex') do rmdir /q/s "%d"
※ バッチファイルの場合は %%dと記述する。
●アプリケーションインストール時に Failure [INSTALL_FAILED_CONTAINER_ERROR]
SD-Cardの中の
.android_secure
ディレクトリの中の
smdl2tmp1.asec
このファイルを消す。
Eclipseも Javaも相変わらずクソ重いんだけど、バージョンアップ毎に安易な機能強化?ばかりで、速度面の改善は考えに無いんだろうか?
きっと Javaの開発陣は超スーパーコンピュータを使っているんだろう。
(Sunの描く理想の世界(絵に描いた餅)はいつ来るんでしょうか?)
開発環境として メモリの空きエリアが最低でも 230MB位必要です。
Eclipseがクソ重い場合の解決方法
・開発用の超速いパソコンを買う
・Eclipseを捨ててコマンドラインで ANTを使って開発する(俺の選択)
Androidエミュレータがクソ重い場合の解決方法
・開発用の超速いパソコンを買う
・デバグ用に本物の端末を買う
・ひたすら忍耐(俺の選択)
Sunの Javaをインストールせずに Android開発をする方法。
(Javaのインストーラで環境を汚染されるのが心底嫌な人や Sunの Javaが死ぬ程嫌いな人向け)
生贄パソコンに JDKをインストールする。
生贄パソコンの
C:\Program Files\Java\
C:\Documents and Settings\{ユーザー名}\.android
C:\Documents and Settings\{ユーザー名}\Application Data\Sun
を全部コピーする。
レジストリの
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft]
を全部コピーする。
開発パソコンにファイルをコピーして、レジストリを登録する。
環境変数に
set ANDROID_HOME=D:\Android\android-sdk
set ANT_HOME=D:\Android\apache-ant
set JAVA_HOME=D:\Android\Java\jdk1.6.0_18
を設定する。
環境変数の PATHに
D:\Android\apache-ant\bin (Apache Ant)
D:\Android\android-sdk-windows\tools (Android)
C:\Program Files\Java\jdk1.6.0_18\bin (Java JDK)
set PATH=%JAVA_HOME%\bin;%ANDROID_HOME%\tools;D:\Android;%PATH%
を追加する。
(゚Д゚)ウマー
※ jdk-1.5.0.22でも同様に可だがライブラリが jdk-1.6を要求する事が有るので jdk-1.6を推奨。
D:\Android\Java\jdk1.5.0_22
D:\Android\Java\jre1.5.0_22
この辺のレジストリはどうなの?
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in\1.6.0_18]
"UseJava2IExplorer"=dword:00000001
"UseNewJavaPlugin"=dword:00000001
"HideSystemTrayIcon"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_18\MSI]
"SYSTRAY"="1"
"EULA"="0"
"IEXPLORER"="1"
"MOZILLA"="0"
"JAVAUPDATE"="1"
"AUTOUPDATECHECK"="1"
"AUTOUPDATEDELAY"=""
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Update\Policy]
"EnableJavaUpdate"=dword:00000000
"NotifyDownload"=dword:00000001
"NotifyInstall"=dword:00000001
Tags: [Android開発]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
Google Android開発環境の構築 SDK r10版
SDK r8から Java難読化&最適化の ProGuardが標準装備されました。(最新のSDK r10版に対応)
Google Android JNI NDKの C/C++言語開発環境の構築のつもり
Android JNI NDKで C言語の Native関数を作って処理速度を高速化
au IS01(SHARP)アンドロイド端末で開発
SHARPの Android端末 IS01で開発
au IS01(SHARP)アンドロイド端末で遊ぼう
SHARPの Android端末 IS01の便利な設定や使い方
Android WiFi On/Off Toggle switcher
WiFiのON/OFFを交互に切り替えの簡単操作の便利ツール
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2010 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/android/android/