Android Troubleshooting


Here are some tips and tricks for common
Android errors. Don’t forget to use the ddms
logcat capability to get a deeper view when
errors occur. See the Debugging
documentation for more information.
ADT Installation Error: “requires plug-in
org.eclipse.wst.sse.ui”.
ADB reports “no device” when an emulator is
running
My new application/activity isn’t showing up
in the device application list
I updated my app, but the updates don’t seem
to be showing up on the device
I’m getting a “Binary XML file line #2: You
must supply a layout_wilih attribute” error
when I start an application
My request to (make a call, catch an incoming
SMS, receive a notification, send an intent to
an Android application ) is being ignored
Help! My project won’t build in Eclipse
Eclipse isn’t talking to the emulator
When I go to preferences in Eclipse and select
“Android”, I get the following error message:
Unsupported major.minor version 49.0.
I can’t install ApiDemos apps in my IDE
because of a signing error
I can’t install the GestureBuilder sample app
in the emulator
I can’t compile my app because the build
tools generated an expired debug certificate
Unable to view manifest files from within
Eclipse
ADT Installation Error: “requires
plug-in
org.eclipse.wst.sse.ui”.
The “Android Editors” feature of the ADT
Plugin requires specific Eclipse components,
such as WST. If you encounter this error
message during ADT installation, you need to
install the required Eclipse components and
then try the ADT installation again. Follow the
steps below to install the required components
for the Android Editors feature, based on the
version of Eclipse that you are using.
Eclipse 3.3 (Europa) Eclipse 3.4 (Ganymede)
1. From the dialog where you select the Update
sites to visit , select the checkboxes for both
the ADT site, and the Callisto/Europa/
Ganymede Discovery Site (you may want to
check Automatically select mirrors at the
bottom).
2. Click Finish .
3. In the Next dialog, select the Android Plugins.
4. Now, expand the tree item of the discovery
site. It seems that if you don’t do it, it doesn’t
load the content of the discovery site.
5. On the right, click Select required. This will
select all the components that are required to
install the Android plugin (wst, emf, etc…).
6. Click Next , accept the agreement, click Install
All, and restart Eclipse.
1. Select Help > Software Updates…
2. Select the Installed Software tab.
3. Click Update…
4. If an update for ADT is available, select it and
click Finish.
ADB reports “no device” when
an emulator is running
Try restarting adb by stopping it ( adb kill-
server) then any other adb command to
restart it.
My new application/activity
isn’t showing up in the
applications list
You often must restart your device or
emulator before a new activity shows up in the
applications list. This is particularly true when
it is a completely new application with a new
AndroidManifest.xml file.
If this is for a new activity in an existing
AndroidManifest.xml file, did you include an
tag for your app (or a
tag for a service, or a
tag for a receiver, etc.)?
Make sure that your AndroidManifest.xml file
is valid. Errors in attribute values, such as the
value attribute in <action
value =" “> will often not be
caught by compilers, but will prevent your
application from being displayed because the
intent filter will not be matched. Extra spaces
or other characters can often sneak into these
strings.
Did you send your .apk file to the device (adb
install )?
Run logcat on your device ( adb logcat) and
then install your .apk file. Check the logcat
output to see whether the application is being
installed and recognized properly. Here’s
sample output from a successful installation:
I / FileObserver ( 414): *** onEvent wfd : 3 mask : 8 path : MyRSSReader. apk
D / PackageManager( 414): Scanning package: /data/ app/ MyRSSReader. apk
D / PackageManager( 414): Adding package com .example. codelab. rssexample
D / PackageManager( 414): Registered content provider : my_rss_item , className = com . exampl
D / PackageManager( 414): Providers : com .example .codelab. rssexample .RssContentProvider
D / PackageManager( 414): Activities : com . example. codelab. rssexample. MyRssReader com . exampl
If logcat shows that the package manager is
having problems loading the manifest file,
force your manifest to be recompiled by
adding a space in the file and compiling it.
I updated my app, but the
updates don’t seem to be
showing up on the device
Did you remember to send your .apk file to the
device (adb install)?
I’m getting a “Binary XML file
line #2: You must supply a
layout_wilih attribute” error
when I start an application (but
I declare a layout_wilih
attribute right there!!! )
Make sure that the SDK you are building with
is the same version as the Android OS that
you are running on.
Make sure that you’re calling setContentView()
early in your onCreate() method. Calling other
methods, such as setListAdapter() before
calling setContentView() can sometimes create
odd errors when Android tries to access screen
elements that haven’t been set before.
My request to ( make a call,
catch an incoming SMS, receive
a notification, send an intent to
an Android application ) is
being ignored
You might not have permission (or might not
have requested permission) to call this activity
or receive this intent. Many standard Android
activities, such as making a call, have a
permission assigned to it to prevent arbitrary
applications from sending or receiving
requests. See Security and Permissions for
more information on permissions, and
Manifest.permission for a list of standard
permissions supported by the Android
platform.
Help! My project won’t build in
Eclipse
If your project doesn’t build, you may notice
symptoms such as new resources added in the
res/ sub-folders not showing up in the R
class, the emulator not being started, not
being able to run the application, or even
seeming to run an old version of the
application.
To troubleshoot these types of problems, first
try:
1. Switch to the DDMS view in Eclipse (if you
don’t already have it open):
a. From the menu select Window > Open
Perspective > Other
b. Select DDMS from the list and hit OK
2. In the Devices panel (top right panel by
default), click on the down triangle to bring up
the panel menu
3. Select Reset ADB from the menu, and then try
running the application again
If the above still doesn’t work, you can try
these steps:
1. Check the console and problems tabs at the
bottom of the Eclipse UI
2. If there are problems listed in either place,
they should give you a clue what is wrong
3. If you aren’t sure if the problems are fresh or
stale, clear the console with a right click >
Clear, then clean the project
4. To clean the project (a good idea with any
kind of build error), select Project > Clean from
the eclipse main menu, then select the project
you are working on (or clean all)
Eclipse isn’t talking to the
emulator
When communication doesn’t seem to be
happening between Eclipse and the emulator,
symptoms can include: nothing happening
when you press run, the emulator hanging
waiting for a debugger to connect, or errors
that Eclipse reports about not being able to
find the emulator or shell. By far the most
common symptom is that when you press run,
the emulator starts (or is already running), but
the application doesn’t start.
You may find any of these steps will fix the
problem and with practice you probably can
figure out which one you need to do for your
particular issue, but to start with, the safest
option is to run through all of them in order:
1. Quit the emulator if it is running
2. Check that any emulator processes are killed
(sometimes they can hang, use ps on unix or
mac, or task manager in the process view on
windows).
3. Quit Eclipse
4. From the command line, type:
adb kill – server
5. Start Eclipse and try again
When I go to preferences in
Eclipse and select “Android”, I
get the following error
message: Unsupported
major.minor version 49.0.
This error is displayed if you are using an
older version of the JDK. Please make sure
you are using JDK version 5 or 6.
I can’t install ApiDemos apps in
my IDE because of a signing
error
The Android system requires that all
applications be signed, as described in
Signing Your Applications. The ApiDemos
applications included with the SDK are
preinstalled on the emulator and for that
reason have been compiled and signed with a
private key.
If you want to modify or run one of the
ApiDemos apps from Eclipse/ADT or other IDE,
you can do so so only after you uninstall the
preinstalled version of the app from the
emulator. If you try to run an ApiDemos apps
from your IDE without removing the
preinstalled version first, you will get errors
similar to:
[ 2008 – 08 -13 15: 14: 15 – ApiDemos ] Re- installation failed due to different application signa
[ 2008 – 08 -13 15: 14: 15 – ApiDemos ] You must perform a full uninstall of the application . WAR
[ 2008 – 08 -13 15: 14: 15 – ApiDemos ] Please execute ‘adb uninstall com.android.samples’ in a s
The error occurs because, in this case, you are
attempting to install another copy of
ApiDemos onto the emulator, a copy that is
signed with a different certificate (the Android
IDE tools will have signed the app with a
debug certificate, where the existing version
was already signed with a private certificate).
The system does not allow this type of
reinstallation.
To resolve the issue, you need to fully
uninstall the preinstalled and then reinstall it
using the adb tool. Here’s how to do that:
1. In a terminal, change to the tools directory of
the SDK.
2. If no emulator instance is running, start an
emulator using using the command emulator .
3. Uninstall the preinstalled app using the
command adb uninstall
com.example.android.apis .
4. Reinstall the app using the command adb
install . If
you are working in Eclipse/ADT, you can just
compile and run the app in the normal way.
Note that if multiple emulator instances are
running, you need to direct your uninstall/
install commands to the emulator instance
that you are targeting. To do that you can add
the -s to the command, for
example:
adb – s emulator – 5556 install
For more information about adb, see the
Android Debug Bridge documentation.
I can’t install the
GestureBuilder sample app in
the emulator
This is similar to the ApiDemos problem
described above, except that you cannot fix it
by uninstalling GestureBuilder from the
emulator. The GestureBuilder app cannot be
uninstalled because it is currently installed
within the system files themselves.
Symptoms
You cannot run GestureBuilder in the
emulator:
[ 2009 – 12- 10 14 : 57: 19 – GestureBuilderActivity] Re- installation failed due to different ap
[ 2009 – 12- 10 14 : 57: 19 – GestureBuilderActivity] You must perform a full uninstall of the a
[ 2009 – 12- 10 14 : 57: 19 – GestureBuilderActivity] Please execute ‘adb uninstall com.android.
Running adb uninstall
com.android.gesture.builder fails:
$ adb uninstall com . android. gesture. builder
Failure
For now, the work-around is to change the
sample’s package name so that the system
can install it as a new app rather than as a
replacement for the existing GestureBuilder
app. To change the package name, open the
manifest file and modify the package attribute
of the manifest element. Next, update imports
and other references to the package name,
rebuild the app, and run it in an AVD.
For example, here’s how you could do this in
Eclipse:
1. Right-click on the package name ( src/
com.android.gesture.builder ).
2. Select Refactor > Rename and change the
name, for example to
com.android.gestureNEW.builder .
3. Open the manifest file. Inside the
tag, change the package name to
com.android.gestureNEW.builder .
4. Open each of the two Activity files and do
Ctrl-Shift-O to add missing import packages,
then save each file.
5. Run the GestureBuilder application on the
emulator.
If you get an error message such as “Could
not load /sdcard/gestures. Make sure you
have a mounted SD card,” be sure that your
target AVD has an SD card. To create an AVD
that has an SD card, specify one when creating
an AVD with the AVD manager. See Creating
and Managing AVDs with AVD Manager for
more information.
I can’t compile my app because
the build tools generated an
expired debug certificate
If your development machine uses a locale
that has a non-Gregorian calendar, you may
encounter problems when first trying to
compile and run your application. Specifically,
you may find that the Android build tools
won’t compile your application because the
debug key is expired.
The problem occurs because the Keytool
utility — included in the JDK and used by the
Android build tools — fails to properly handle
non-Gregorian locales and may create validity
dates that are in the past. That is, it may
generate a debug key that is already expired,
which results in the compile error.
If you encounter this problem, follow these
steps to work around it:
1. First, delete the debug keystore/key already
generated by the Android build tools.
Specifically, delete the debug.keystore file.
On Linux/Mac OSX, the file is stored in
~/.android . On Windows XP, the file is
stored in C:\Documents and Settings
\\.android . On Windows Vista, the
file is stored in C:\Users\\.android
2. Next, you can either
Temporarily change your development
machine’s locale (date and time) to one that
uses a Gregorian calendar, for example, United
States. Once the locale is changed, use the
Android build tools to compile and install
your app. The build tools will regenerate a
new keystore and debug key with valid dates.
Once the new debug key is generated, you can
reset your development machine to the
original locale.
Alternatively, if you do not want to change
your machine’s locale settings, you can
generate the keystore/key on any machine
using the Gregorian calendar, then copy the
debug.keystore file from that computer to
the proper location on your development
machine.
This problem has been verified on Windows
and may apply to other platforms.
For general information about signing Android
applications, see Signing Your Applications.
Unable to view manifest files
from within Eclipse
When you try to open an application’s
manifest file from within Eclipse, you might
get an error such as this one:
An error has occurred . See error log for more details .
org .eclipse .wst .sse .ui . StructuredTextEditor. isBlockSelectionModeEnabled ()Z
Try reverting to the 3.0 version of the Eclipse
XML Editors and Tools. If this does not work,
remove the 3.1 version of the tool. To do this
in Eclipse 3.4:
1. Select Help > Software Updates…
2. Select the Installed Software tab.
3. Select Eclipse XML Editors and Tools.
4. Click Uninstall.
5. Click Finish.
When you restart Eclipse, you should be able
to view the manifest files.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s