ラベル API level の投稿を表示しています。 すべての投稿を表示
ラベル API level の投稿を表示しています。 すべての投稿を表示

2014年5月11日日曜日

Nexus7のAndroid versionを古いものに戻す

Nexus7のAndroid versionを古いものに戻す

開発環境: Windows 8 & Eclipse

実機のAndroidのversionを古いものに戻すことができれば、その古いversionでアプリの動作検証をすることができます。そういう意味で、実機を複数所持する必要が無くなります。Nexus7が開発者用端末であると呼ばれる由縁です。

Nexus 端末を出荷時の設定にリセットするに載っている手順は、利用者による設定やインストールしたアプリをリセットする手順であって、AndroidのversionをNexus7の新規購入時点のものに戻す手順ではなく、Androidのversionは変化しません。Nexus 7を他人に譲渡する時に実行する手順なのです。

下記に示す操作は、Windowsパソコンに例えると、Windowsパソコン購入時に添付されたリカバリ用のDVDを使って、Windowsパソコンを出荷時の設定にすることに似ています。なので、Nexus7のデータが全部消えてしまいますので、注意しましょう。

この操作にはAndroid SDKが必要であることを考えると、この操作はAndroid開発者が行うものであって、一般利用者が行うものでは無いと思われます。

古いバージョンに戻すとは言っても、Nexus7の新規購入時点のバージョンは機種依存しているため、そこに戻すことはできません。具体的にどのバージョンに戻せるのかはFactory Images for Nexus Devicesを参照してください。

手順
開発機とNexus7とをUSBコードでつなぐ等を行い、Android SDKのプログラムが動作する環境を整えておく。具体的には、例えば、EclipseのLogCatでNexus7の動作のログが表示できるようにしておく。環境を整えておくという意味なので、実際にEclipseを起動させておく必要は無い。

Factory Images for Nexus Devicesから、Factory Images "nakasi" for Nexus 7 (Wi-Fi) > 4.1.2 (JZO54K)を任意のフォルダーにdownloadする。
(参考)Nexus7の製造名を知る方法

解凍にはLhaca124を使えば良いでしょう、
ここではC:\nakasi-jzo54k\に解凍したものとします。

Windows8の場合、「Windowsシステムツール」の「コマンドプロンプト」をクリックして、「コマンドプロンプト」(黒い画面)を表示させる。
エクスプローラーでfastboot.exeファイルを1回クリックして、「パスのコピー」を実行します。fastboot.exeファイルはAndroid SDKフォルダーの下の\platform-tools\に有ります。
コピーした文字列を、Windowsの「メモ帳」に貼り付けて、(fastboot.exeの部分を除いた)パスの部分だけを「コピー」します。
「コマンドプロンプト」で次のとおり入力します。cdの次は半角スペースを入力します。cdはchange directoryという意味です。
cd 
「コマンドプロンプト」の左上端のアイコンをクリック > 編集 > 貼り付けによって、"cd "の後に、パスの文字列を貼り付けます。
そしてEnterキーを押します。
すると、プロンプトが、fastboot.exeファイルの存在するフォルダーに移動します。
念の為、この画面で、"fastboot"と入力&Enterして、fastbootが動くか確認します。

C:\nakasi-jzo54kフルダー内にimage-nakasi-jzo54k.zipファイルがありますが、このファイルは解凍しなくても良いです。下記のバッチファイルを見て分かるように、zipファイルを直接操作します。

バッチファイルの編集
"C:\nakasi-jzo54k\flash-all.bat"ファイルがありますので、そのファイルを「メモ帳」で開いて内容を編集します。「メモ帳」では改行がありませんが、HTML文書に貼り付けて見ると改行があるのがわかります。
下記の赤色で記した部分を書き込み、上書きします。

@ECHO OFF
:: Copyright 2012 The Android Open Source Project
::
:: Licensed under the Apache License, Version 2.0 (the "License");
:: you may not use this file except in compliance with the License.
:: You may obtain a copy of the License at
::
::      http://www.apache.org/licenses/LICENSE-2.0
::
:: Unless required by applicable law or agreed to in writing, software
:: distributed under the License is distributed on an "AS IS" BASIS,
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
:: See the License for the specific language governing permissions and
:: limitations under the License.

PATH=%PATH%;"%SYSTEMROOT%\System32"
fastboot erase boot
fastboot erase cache
fastboot erase recovery
fastboot erase system
fastboot erase userdata
fastboot flash bootloader C:\nakasi-jzo54k\bootloader-grouper-3.41.img
fastboot reboot-bootloader
ping -n 10 127.0.0.1 >nul
fastboot -w update C:\nakasi-jzo54k\image-nakasi-jzo54k.zip

echo Press any key to exit...
pause >nul
exit

次の手順でNexus7内のデータが全部消えるため注意しましょう。

Building for devicesを読んだところ、次のように書いてあります。
fastboot modeによる起動
まず、Nexus7の電源を切ります。
そして、Nexus7がfastboot modeを使えるようにするため、Nexus7のVolume Downボタンを押しながらPowerボタンを押し、Nexus7を起動します。fastboot modeにすると、端末をflashさせるbootloaderを使うことができるのです(意味不明)。

bootloaderのロック解除
デフォルトではbootloaderはロックされています。
Nexus7の端末がfastboot modeになっているのを確認したら、開発端末(Windowsパソコン)の「コマンドプロンプト」から次のとおり入力し、bootloaderのロックの解除をしてください。
fastboot oem unlock[Enter]

Unlock bootloader
Nexus7に「Unlock bootloader?」という画面が表示されます。Volume Upボタン又はVolume Downボタンを押し下げて、「Yes」の項目を選択し、Powerボタンを押します。
これによる「コマンドプロンプト」のログは次のとおりです。

C:\*\sdk\platform-tools>fastboot oem unlock[Enter]
...
(bootloader) erasing userdata...
(bootloader) erasing userdata done
(bootloader) erasing cache...
(bootloader) erasing cache done
(bootloader) unlocking...
(bootloader) Bootloader is unlocked now.
OKAY [349.022s]
finished. total time: 349.023s

バッチファイルの実行
Windowsパソコンの「コマンドプロンプト」から次のとおり入力してください。
C:\nakasi-jzo54k\flash-all.bat
これによる「コマンドプロンプト」のログは次のとおりです。

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\*\sdk\platform-tools\
C:\*\sdk\platform-tools>C:\nakasi-jzo54k\flash-all.bat[Enter]
erasing 'boot'...
OKAY [  0.987s]
finished. total time: 0.987s
******** Did you mean to fastboot format this partition?
erasing 'cache'...
OKAY [  1.507s]
finished. total time: 1.508s
erasing 'recovery'...
OKAY [  0.934s]
finished. total time: 0.934s
******** Did you mean to fastboot format this partition?
erasing 'system'...
OKAY [  1.112s]
finished. total time: 1.113s
******** Did you mean to fastboot format this partition?
erasing 'userdata'...
OKAY [  7.059s]
finished. total time: 7.059s
sending 'bootloader' (2092 KB)...
OKAY [  0.289s]
writing 'bootloader'...
OKAY [ 10.257s]
finished. total time: 10.546s
rebooting into bootloader...
OKAY [  0.020s]
finished. total time: 0.021s
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
archive does not contain 'system.sig'
--------------------------------------------
Bootloader Version...: 3.41
Baseband Version.....: N/A
Serial Number........: 015d25687c601206
--------------------------------------------
checking product...
OKAY [  0.040s]
checking version-bootloader...
OKAY [  0.024s]
sending 'boot' (4896 KB)...
OKAY [  0.651s]
writing 'boot'...
OKAY [  0.747s]
sending 'recovery' (5240 KB)...
OKAY [  0.701s]
writing 'recovery'...
OKAY [  0.678s]
erasing 'system'...
OKAY [  1.442s]
sending 'system' (446268 KB)...
OKAY [ 57.518s]
writing 'system'...
OKAY [ 33.915s]
erasing 'userdata'...
OKAY [  7.367s]
formatting 'userdata' partition...
Creating filesystem with parameters:
    Size: 6453985280
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8048
    Inode size: 256
    Journal blocks: 24620
    Label:
    Blocks: 1575680
    Block groups: 49
    Reserved block group size: 391
Created filesystem with 11/394352 inodes and 52512/1575680 blocks
sending 'userdata' (102525 KB)...
writing 'userdata'...
OKAY [ 28.454s]
erasing 'cache'...
OKAY [  1.457s]
formatting 'cache' partition...
Creating filesystem with parameters:
    Size: 464519168
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 7088
    Inode size: 256
    Journal blocks: 1772
    Label:
    Blocks: 113408
    Block groups: 4
    Reserved block group size: 31
Created filesystem with 11/28352 inodes and 3654/113408 blocks
sending 'cache' (9052 KB)...
writing 'cache'...
OKAY [  3.828s]
rebooting...

finished. total time: 136.937s
Press any key to exit...

bootloaderのロック設定
Nexus7が起動し、画面には、Welcome画面が表示されますが、ロック設定を忘れてはいけないので、直ちに、電源を切ります。
そして、Nexus7のVolume Downボタンを押しながらPowerボタンを押し、Nexus7を起動します。ドロイド君が倒れている画面が表示されていることを確認します。
「コマンドプロンプト」から次のとおり入力し、bootloaderのロックをしてください。
fastboot oem lock[Enter]

これによる「コマンドプロンプト」のログは次のとおりです。
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\*\sdk\platform-tools\
C:\*\sdk\platform-tools>fastboot oem lock[Enter]
...
(bootloader) Bootloader is locked now.
OKAY [ 10.495s]
finished. total time: 10.496s

Androidを起動する
ドロイド君が倒れている画面の右上にStartと表示されていることを確認して、Powerボタンを押します。
アカウント等の設定を済ませて、「設定」>「タブレット情報」>「Androidバージョン」を見ると「4.1.2」になっています。

2012年2月6日月曜日

稼働環境のバージョンを知る

稼働環境のバージョンを知る

稼働中の端末のPlatform(API level・バージョン)を取得するでも触れた、Build.VERSIONについて調べた。

結論は次のとおり。
我々のような一般的なプログラマから見て、実用的なのは、Build.VERSION.SDK_INTだけである。これ以外の定数を使う機会はない。

Build.VERSIONは稼働しているAndroidのバージョンを知るクラスである。自分のアプリのバージョンを知る道具ではない。

エミュレータの4.0.3上での実行結果は次のとおりであった。
Build.VERSION.CODENAME : REL
Build.VERSION.INCREMENTAL : 237985
Build.VERSION.RELEASE : 4.0.3
Build.VERSION.CODENAME : ICE_CREAM_SANDWICH_MR1

sample codeは次のとおりである。
String s, s1, s2, s3;
TextView tv;

s1 = "Build.VERSION.CODENAME : " + Build.VERSION.CODENAME +"\n";
s2 = "Build.VERSION.INCREMENTAL : " + Build.VERSION.INCREMENTAL +"\n";
s3 = "Build.VERSION.RELEASE : " + Build.VERSION.RELEASE +"\n";
switch(Build.VERSION.SDK_INT){
case Build.VERSION_CODES.DONUT: s = "DONUT"; break;
case Build.VERSION_CODES.ECLAIR: s = "ECLAIR"; break;
case Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1: s = "ICE_CREAM_SANDWICH_MR1"; break;
default: s = "unknown";
}
s = s1 + s2 + s3 + "Build.VERSION.CODENAME : " + s;

tv = (TextView)findViewById(R.id.Text);
tv.setText(s);

2012年2月5日日曜日

稼働中の端末のPlatform(API level・バージョン) を取得する

稼働中の端末のPlatform(API level・バージョン) を取得する

稼働しているPlatform(API level・バージョン)によって、動かなくなる機能があります。このため、自分のアプリが稼働している端末のPlatformを知る必要があります。

稼働しているPlatformによって動かなくなる例として、『「本体設定」の「音の設定」画面の表示』を挙げることができます。

概要は、「本体設定」の「音の設定」画面を表示するに書いておきました。その記事では、「Platform 2.2の場合」と「Platform 1.6の場合」を、startActivityForResultが発生するエラーによって切り分けていました。これは「エラーになるんだな」という学習にはなりますが、適切なcodeではありません。
稼働中のPlatformを取得し、そのPlatform毎に対応するのが適切です。

この問題の解決には次のサイトを見ながらcodingしていけば良いです。
Build.VERSION_CODES

sample codeは下記のとおりです。
public class SettingsActivity extends Activity
    implements
    OnClickListener
    {
    final String TAG = "me";
    Button bu;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        bu = (Button)findViewById(R.id.Button);
        bu.setOnClickListener(this);
    }

    @Override
    public void onClick(View v){
        if(v==bu){
            Intent it;
            
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR){
                //Platform 2.0以上の場合
                Log.d(TAG, "Platform 2.0 and later");
                it = new Intent(Settings.ACTION_SOUND_SETTINGS);
            }
            else{
                Log.d(TAG, "Platform 2.0 before");
                it = new Intent(Settings.ACTION_DISPLAY_SETTINGS);
            }
            try{
                startActivityForResult(it, 0);
            }
            catch(ActivityNotFoundException e){
                Log.e(TAG, "ActivityNotFoundException");
            }
        }
    }
}

上記例では、Platformが2.0以上か未満かを判別しています。エミュレータをPlatform毎に用意して試してみれば良いでしょう。

なお、Platformの判別を適切に行い、かつPlatformが1.6でも稼働するアプリを作るには、次の措置を講じる必要があります。
  1. Android SDKを最新版にする。
  2. Eclipseのメニューコマンド>Project>Properties>Android>Project Build Target>platformを最新(最高)のものを選択する。
  3. AndroidManifest.xmlに次の1行を追加する。
<uses-sdk android:minSdkVersion="4"/>

上記2に書いたように、Project Build Target>platformを最新版にすることにより、codeの中でBuild.VERSION_CODES.ICE_CREAM_SANDWICHという定数を書くことができます(コンパイルエラーにならないようになります)。
上記3の措置を講じることにより、Platformが1.6でも無事稼働するようになります。

2011年12月3日土曜日

AdMob Version 4.3.1の実装

AdMob Version 4.3.1の実装

AdMobは、アプリ内に広告を表示する機能を提供する。教科書どおりに作れば良い。ここでは、難易度の高かった項目を解説する。

問題意識
現在、androidのplatform 2.2 API level 8で稼働するアプリを開発している。
教科書では、AndroidManifest.xmlに次の1行を挿入するように指示がされている。
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
ところが、screenSize及びsmallestScreenSizeは、platform 3.2 API level 13以上が必要とされるため、Error: String Types not allowedというコンパイルエラーが発生する。

screenSize及びsmallestScreenSizeを削除すると、次の趣旨の実行時エラーが発生する。
E/Ads(11952): The android:configChanges value of the com.google.ads.AdActivity must include screenSize.
E/Ads(11952): The android:configChanges value of the com.google.ads.AdActivity must include smallestScreenSize.
E/Ads(11952): You must have AdActivity declared in AndroidManifest.xml with configChanges.
どのようにすれば良いのか。

結論
回答はAdmob in Android 2.2にあった。この問答から、次のような手順を講じれば良いことがわかった。
  1. Eclipseを最新版にする。(必須では無い)
  2. Android SDKを最新版にする。
  3. (重要)Eclipseのメニューコマンド>Project>Properties>Android>Project Build Target>platform 4.0 API level 14(最新版)を選択する。このコマンドはJava Build Path>Librariesに連動している。
  4. AndroidManifest.xmlに次の1行を追加する。
    <uses-sdk android:minSdkVersion="8"/>
  5. Project>Cleanを実行する。
Project>Properties>Java Build Path>Librariesの設定は手作業で行うのではなく、上記3の操作を行えば、自動的にJava Build Path>Librariesの設定が行われる。

この手順によって作成されたアプリは、platform 2.2 API level 8で無事稼働する。
上記の各手順の値を具体的にどうするかは、各プログラマーの置かれた立場によって異なる。

参考:AdMob
教科書:Google AdMob Ads SDK

実機をテスト用端末に設定する方法
開発者は、広告をクリックしてはいけない。広告を誤ってクリックしてしまうことを避けるため、広告を(本物の広告では無く)開発用の広告にしておかねばならない。

AndroidManifest.xmlの書き方は、教科書に掲載されているとおり、そのまま書けば良い。

layout用のxmlは、例えば、次のようにする。普通にlayoutを作成すれば良いだけだ。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <LinearLayout
        android:id="@+id/AdView"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true"
        >
    </LinearLayout>
(以下省略)

上記layout用xmlを用いるとして、Javaにおけるsourceは、取り合えずonCreateメソッド内で次のとおり書いて、一旦、実機で実行させる。
        AdView adView;
        LinearLayout ll;
        AdRequest ar;
        
        //第三番目の引数にはAdMob publisher IDを指定する。
        adView = new AdView(this, AdSize.BANNER, "xxxxxxxx");  
        ll = (LinearLayout)findViewById(R.id.AdView);  
        ll.addView(adView);
        
        ar = new AdRequest();
        //ar.setTesting(true);//4.0.4の場合使える。4.3.1では使えない。
        ar.addTestDevice(AdRequest.TEST_EMULATOR);
        adView.loadAd(ar);

上記プログラムを実機で実行させると、LogCatに次の趣旨の行が出力される。
I/Ads(12492): To get test ads on this device, call adRequest.addTestDevice("yyyyyyyy");
この"yyyyyyyy"の部分を引用して、adView.loadAd(ar);の直前に、次の行を書き込む。
        ar.addTestDevice("yyyyyyyy");
そうすると、次回の実行時から、実機では、本物の広告を表示するのでは無く、テスト用の広告を表示する。

本番では、addTestDeviceメソッドを削除する。
もっとも、削除を忘れても実害は無い。何故なら、指定したIDの端末だけがテスト用になっているだけだからだ。(このあたりは、実際には試してはいません。)

そういう意味で、Version 4.0.4に比べて、4.3.1は進化したと言える。Ver.4.0.4では、setTesting(true)メソッドにより、全ての端末がテスト機になってしまう。このメソッドの削除を忘れて出荷した場合、喜劇悲劇が生まれる。

ここで、敢えて、Ver.4.0.4を使い、setTesting(true)を実装させたまま、出荷してしまうってのも、一興である。「削除を忘れたのではありません。敢えて、残しておいたのです」と。(-_-;)

いや、それはダメです。パブリッシャー様向けのガイドラインとポリシーには、「アプリ内広告では SDK のメソッドのみを使用し、SDK の最新のバージョンを使用する必要があります」と書かれています。

2011年7月7日木曜日

EclipseのEGitを使ってAndroidのSourceを取得する

EclipseのEGitを使ってAndroidのSourceを取得する

Eclipseの版が、HeliosからIndigoに上がりました。
この改版のアナウンスの中で、「EclipseでEGitが使える」という記事を読みましたので使ってみました。

私は、これまではsourceの取得方法が分からなくて、困難な方法で行いましたが、EGitを使えば簡単にandroidのsourceを取得できます。

インストール
EGitを使うには、まずEGitをインストールしなければなりません。
  1. Help>Eclipse Marketplace
  2. 画面下にあるオレンジ色の○印に「Yoxos Marketplace」と書かれているものをクリックする。
  3. 「Search」欄に「Eclipse EGit」欄がある。その右に「Install」があるのでクリックする。


使い方
  1. File>Import>
  2. Git>Projects from Git>Next
  3. "Check Home Directory"は無視してokを押す。
  4. clone
  5. 「URI」欄に次のとおり入力する。
    git://android.git.kernel.org/platform/frameworks/base.git
  6. next
  7. 「Clone Git Repository」画面>「Branch Selection」画面が出る。
  8. Cupcake,donut,Eclair,Froyo,gingerbread といった文字列の中から、自分が欲しい版を選択する。
  9. Next
  10. 「Local Destination」画面の「Directory」画面で出力先を選択する。出力先は、android SDKディレクトリ内の、platformsディレクトリ内の、対応するAPI level名のディレクトリを指定する。
    例えば、Froyoを選択した場合は、Android-8ディレクトリを選択する。
  11. Next>Finish
  12. 作業が終わるまで待つ
  13. javaのプログラム内で、sourceを表示したい適当なキーワード(例えば、"Activity")にカーソルを当てて、F3キーを押す。
  14. 「Source not found」画面が出る。「Change Attached Source」ボタンを押す。
  15. 「Source Attachment Configulation」画面の「External Folder」ボタンを押す。
  16. 先ほど選択したAndroid-8ディレクトリの下にbaseディレクトリが作成されているので、それを選択する。okする。
  17. 再度、任意のキーワードの箇所でF3キーを押し、sourceが表示されるのを確認する。
API Levelと、androidの版と、その名前との対応関係は次のとおりです。

3    1.5    cupcake
4    1.6   donut
      2.0    Eclair
      2.1    Eclair
8    2.2    Froyo
9    2.3    gingerbread


これを書いた時点では上記のとおりで上手くいったのですが、時間の経過とともにコマンドが変化しており、上記のままでは上手くいきません。
特に、上記のURIだと失敗するかもしれません。

【開発環境】
OS:Windows Vista
Eclipse IDE for Java Developers Version: Indigo Release

2011年4月28日木曜日

Project has no default.properties file! Edit the project properties to set one.

他人が作成したアンドロイドプロジェクトを自分のEclipseにimportすると次のエラーメッセージが出る。
Project has no default.properties file! Edit the project properties to set one.
インターネットでは、「他のプロジェクトに存在するdefault.propertiesファイルを、importしたプロジェクトにコピーして組み込め」という趣旨の解決方法が提案されている。
default.propertiesが無いという趣旨のエラーメッセージであるから、この解決方法で問題は無い。
私なりの解決方法の提案は次のとおりである。
  1. 「import」しようとするプロジェクトのAPI levelを、まず最初に決める。ここではAPI levelを8とする。
  2. このAPI levelに対応するサンプルフォルダーを、Android SDKのフォルダーの中から特定する。私の環境では、「C:\Users\XXX\Documents\Android\android-sdk-windows\samples\android-8」である。
  3. このフォルダーに「import」しようとするプロジェクトのフォルダーとファイルをコピーする。後述するように、実際にはimportはしない。
  4. Eclipseでプロジェクトを生成する。手順は次のとおりである。File>New>Project>Android Project>Next>'Create project from existing sample'をチェック>Build TargetでAndroid 2.2(API level 8)をチェック>'Samples:'で目的のプロジェクトを選択する>Finish
次の警告が出る。
WARNING: Application does not specify an API level requirement!

これの解決方法は既に「警告:API level」で書いたとおりである。


【開発環境】
OS:Windows Vista
Eclipse IDE for Java Developers Helios Service Release 2
Pleiades:1.3.3.20110326

2011年4月22日金曜日

Android 1.5 (API Level 3)以下と、これを超えた版

API levelを8にして新規プロジェクトを作成し、その後、そのプロジェクトのAPI levelを3に引き下げた場合、そのプログラムは正常に稼働しない。
API level 8で作成した際に、リソースのフォルダーが次のように3個作成されてしまうからだ。
  • /res/drawable-hdpi
  • /res/drawable-ldpi
  • /res/drawable-mdpi
API level 3では、これらのフォルダーを取り扱えない。
これらの3個のフォルダーを、1個にまとめて/res/drawableという名前に変更すれば正常に稼働する。
つまり、プロジェクトの作成においては、下位互換性は保障されないということだ。一旦、新しいAPI levelで作り始めると、古いのに戻るには苦労をするということですな。

これに関して、次のサイトに情報が掲載されていました。
Providing Resources
Providing screen resource compatibility for Android 1.5

2011年4月20日水曜日

Can't dispatch DDM chunk

Can't dispatch DDM chunk

Consoleで次のメッセージが出る場合があります。
ActivityManager: Can't dispatch DDM chunk 46454154: no handler defined
ActivityManager: Can't dispatch DDM chunk 4d505251: no handler defined
このメッセージが出るのは、Project Build Target(プロジェクト>プロパティー>Android)及びVirtual devises(ウィンドウ>Android SDK及び...)の両方のAPI levelを3にした場合です。
少なくとも、Virtual devisesのAPI levelを4に上げた場合には発生しません。
Project Build TargetのAPI levelを上げてもよろしいです。

【開発環境】
OS:Windows Vista
Eclipse IDE for Java Developers Helios Service Release 2
Pleiades:1.3.3.20110326