Wednesday, November 16, 2011

GalaxyTab, Motorola Xoom Screen Desity and Size

Galaxy Tab (7") is 170dpi, it is close to 160dpi, and should be mdpi . However, it is declared as "hdpi" and "large" by Samsung, because it's look better with a hdpi configuration. The new GalaxyTab 10.1 is the same size and resolution as Motorola Xoom, it should be mdpi and xlarge.(situee's blog)

-->
(situee's blog)

Density Screen Size Resolution
Samsung GalaxyTab 7 hdpi 7" large 1024 x 600
Motorola Xoom mdpi 10.1" xlarge 1280 x 800

Pre-scaling, Auto-Scaling and Screen Density

Designing android layout for multiple screens is really confusing.

Pre-scaling

Pre-scaling resource is an important concept.
If resources are not available in the correct density, the system loads the default resources and scales them up or down as needed to match the current screen's density.

Examples:
for an hdpi device, when there is only mdpi image 100x100, then the image will be pre-scaled to 150x150;
for an mdpi device, when there is only hdpi image 150x150, then the image will be pre-scaled to 100x100;

Sunday, November 06, 2011

ERROR: Unknown command 'crunch'

I upgraded the Android ADT to version 15. Everything seems fine until I tried to run an app.

ERROR: Unknown command 'crunch'

Now, use the new Android SDK Manager to upgrade the Android SDK Tools. Then we can forget about the "crunch" problem.

Tuesday, September 13, 2011

dex2jar Decompile APK file

When I find difficult to do something on Android, I will decompile the APK file and try to learn from the messy java code. But anyway, you may really find something useful that help you out.

Let's see how to decompile. We need some tools to decompile. That is dex2jar. You can find it here. And jd-gui to view the jar as java files.


  1. uncompress the apk. On Windows, use winrar to open the apk and extract.
  2. run command "dex2jar.bat classes.dex", "classes.dex.dex2jar.jar" is generated.
  3. use jd-gui.exe to open jar file and view the java code.

Friday, September 09, 2011

Enable/Renew Team Provisioning Profile:*

There is a Team Provisioning Profile:* in Current Provisioning Profiles in iDP portal.
It's a Wildcard AppID. You don't need to create a AppID and download specified provisioning profile for that AppID. You can use any bundle name and test your app on device with the Team Provisioning Profile:*

Check that whether your certificate is in the certificate list of the Team Provisioning Profile.
If there is not, don't worry. It is managed by Xcode. You can enable it in your Xcode.

Thursday, August 25, 2011

C2DM Implementation Checklist Step by Step

Android C2DM helps your app server push message to your app. It's a mechanism that the server ask the mobile app to fetch new data from server and update itself. C2DM is still in beta version, or Labs version. To use C2DM with your Android applications, you must first signup to request access.

The official doc has a lot of content.
To make it clear, I make the following checklist:


Tuesday, August 23, 2011

C2DM: Get ClientLogin Authentication Token

To send C2DM messages, you should create a new google account as an app-based sender ID and get the ClientLogin Authentication Token.
The most convenient way is using Curl:

curl https://www.google.com/accounts/ClientLogin -d Email=$1 -d Passwd=$2 -d accountType=GOOGLE -d source=companyName-applicationName-versionID -d service=ac2dm

Saturday, July 30, 2011

Android Push Notification Service and C2DM

Apple has support push notification since iOS 3.0
But what about Android??
Android can do this using a long-polling service or keep connected to server.
There are implementations of Android push notification.

1. Cloud to Device Messaging (C2DM) official service by Google
2. AndriodPN at http://sourceforge.net/projects/androidpn/files/
3. Urban Airship Service
4. IBM's MQTT

Thursday, July 21, 2011

_gzwrite _gzclose referenced from - symbol(s) not found

If you are suffering from this build error
just add framework "libz.dylib" to your iPhone project.

It's a "link" error.
For problems like "xxxx reference from ... symbol(s) not found", try to find the missing framework.

Search the link-error method, and "Jump to Definition", you would probably see what framework it is referencing from.

Sunday, July 10, 2011

Info.plist, Failed to launch simulated application: unknown error

I downloaded an opensource iphone project. Failed to build it.

The error message is

could not read data from '/xxxx/xxxx/xxxx/Info.plist': The file “Info.plist” couldn’t be opened because there is no such file.