HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2010/02/23

Google Android開発環境の構築のつもり 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の開発環境の構築する。
 Androidの開発環境のディレクトリ構成


 Java SE Development Kit(JDK 6 Update 18)をインストールする。

android-sdk_r04-windows.zip
 を解凍する。

D:\Android\android-sdk-windows
 の
"SDK Setup.exe"(こいつ⇒Android 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
 を追加。

 Android Development Tools (ADT)のインストールで エラーの場合


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版
Google Android開発環境の構築 SDK r10版

  SDK r8から Java難読化&最適化の ProGuardが標準装備されました。(最新のSDK r10版に対応)

Google Android JNI NDKの C/C++言語開発環境の構築のつもり
Google Android JNI NDKの C/C++言語開発環境の構築のつもり

  Android JNI NDKで C言語の Native関数を作って処理速度を高速化

au IS01(SHARP)アンドロイド端末で開発
au IS01(SHARP)アンドロイド端末で開発

  SHARPの Android端末 IS01で開発

au IS01(SHARP)アンドロイド端末で遊ぼう
au IS01(SHARP)アンドロイド端末で遊ぼう

  SHARPの Android端末 IS01の便利な設定や使い方

Android WiFi On/Off Toggle switcher
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/