Many many thanks to Clockworx, enjoys1, oozeeh, Noah98 and many others For figuring this out.
FIX THE ANDROID MARKET ON SLATES
Your download never starts because you do not have a working androidID after you sign into the market.
So what we are going do is get one from another android device with a working market. Copy down the androidID and insert it on to the slate.
There are 2 main ways:
- Copy one from A Phone
- From The Emulator
Get AndroidID From A Phone
I don't have a Android phone so Just some instructions here for now. (send me some Screen shots and I will add them here)
Using the ADB tool from the sdk Connect your device and give this command:
adb shell sqlite3 /data/data/com.google.android.googleapps/databases/gls.db "select * from meta";
The androidID will be displayed. Save it and go to Copy to slate section
Make a new androidID with the Emulator
- If you have not done so already install the SDK.
- Download Special System.img for market.
- Launch SDK Setup
- Select Installed packages
- Make sure the following packages are Installed in the SDK:
- Android SDK Tools Revision 6
- SDK Platform Android1.6, API4, revision 3
- USB Driver package, revision 3
- Market Licensing package, revision 1
- If packages not installed use Available packages to install them.
- Select Virtual Devices and press New
- fill out box with Name: "Market Fix", Target: "Android 1.6", SD Card Size: 10, Skin: Default (HVGA), Hardware: LCD Density "160", Device Ram Size "1024", Touchschreen Support
- Some users report crashes with above settings if so try
- Name: "Market Fix", Target: "Android 1.6", SD Card Size: 0, Skin: Default (HVGA), Hardware: LCD Density "160", Device Ram Size "96", Touchschreen Support
- Press OK
- Press details and Note path listed.
- Go to the Path listed and copy the system.img you downloaded earlier.
- Back at the SDK close the details window and press start.
- Since you have a Google account already set up on your slate Press Sign In
- If you get a Slide Keyboard message.
- Enter Username and Password
- Press Sign In
- If you get a Slide Keyboard message.
- You will see the roundish Synch symbol in the Notification Bar.
- When it is gone, you are done with the emulator for now Lbut LEAVE IT OPEN
- Open a Cmd Window and go to the SDK Tools Folder
- Enter the Command
adb shell sqlite3 /data/data/com.google.android.googleapps/databases/accounts.db "select * from meta";
- You will then see the androidID
- Save the AndroidID Number
- Close the Emulator and the SDK
Enter the androidID into your slate
- There two ways to connect to with ADB Choose only one
1. USB
- Make Sure USB Debugging is On Settings-> Appications->Development->USB Debugging
a.Plug in USB Cable
OR
2. TCP/IP
a. Connect device to network. Wi/fi or Lan. Note what IP address you are using.
b. adb Connect IPAdress:5555
- Back at the CMD Window Enter
adb devices
this is a TCP/IP connected Device
adb shell sqlite3 /data/data/com.google.android.googleapps/databases/gls.db "update meta set intvalue='number_from_previous_commands' where name='androidId'";
- When the command line returns you are done at the PC.
- Unplug the USB cable or
- Disconnect TCP/IP
adb disconnect IPAddress:5555
- Reboot your Slate
- Open the Market Select an app and download.
Trouble Shooting
- There are so many things that can go wrong that I expect that this area will be larger than the rest of the How To
SQLite Issues
When you give the command
adb shell sqlite3 /data/data/com.google.android.googleapps/databases/gls.db "update meta set intvalue='number_from_previous_commands' where name='androidId'";
You get the error
- /system/bin/sh: sqlite3: not found
adb shell means run the rest of this on the device
So this means the database program SQLite is missing or not setup properly on your device.
Since SQLite is part of the SDK we can run the program from the PC side.
But the gls.db is on the device and the SQLite program is on the PC.
Adb pull is a command to copy from the device to the PC so enter this command in your cmd window:
adb pull /data/data/com.google.android.googleapps/databases/accounts.db
Depending on your device this might work.
Or you get a permission error.
- Skip this step if the command worked for you.
So now we need to change permissions on accounds .db
adb shell
su
- Check your device you may have a screen asking if you will allow SU permissions Press allow
taking a screen shot of the su permissions page crashed my device so for now no screenshot here
your CMD screen should look like this:
chmod 777 /data/data/com.google.android.googleapps/databases/accounts.db
exit
to exit the su area
exit
to exit the ADB shell area
you should be back at the command line in the tools folder
- Now we enter the pull command again
adb pull /data/data/com.google.android.googleapps/databases/accounts.db
Now that we have accounts.db local, we need to put the AndroidID in it.
- Enter the command and cange the xxxxxxxxxxxxx to your AndroidId
sqlite3 accounts.db "update meta set intvalue='xxxxxxxxxxxxxxxxxxx' where name='androidId'"
Next put the corrected accounts.db back into the device.
adb push accounts.db /data/data/com.google.android.googleapps/databases/
Done Market should work now.
ADB Issues
- Some people are having problems with installing USB drivers for ADB under Windows 7
- if your device supports it connect by TCP/IP as shown in the main part of this How To
- A more complete troublsooting guide is coming but for now see [ADB Forum Win 7 Fix]
- Make Sure USB Debugging is On Settings-> Appications->Development->USB Debugging
Emulator Issues
- There are some reports of the emulator sometimes crashing under windows XP. Cause and Fix are unknown at this time.
Contact mogrith [here] or in the forums if you have more info.