[Gen8, Gen9, Gen10 Themes and Apps] craigacgomez:
OK, so you have an Archos Gen 8 devices... and you want sync your Facebook contacts with your contacts list on you device... but the Facebook for Android app does show the sync option... now, here's what you need to do...

What do you need?

1. Archos Gen 8 device with Froyo 2.2.1 (firmware 2.0.54 +)

2. Root

3. Read/write filesystem

How do you get a rooted system with a read/write filesystem?

1. UrukDroid (recommended 0.4.1 +)

2. Chulri's sysroot (permanent root) with R/W filesystem

How do you get this mod working?

1. Install UrukDroid or Chulri's sysroot +rw.

2. Download the attached ContactsProvider.apk

3. Use RootExplorer or Terminal or ADB to backup ContactsProvider.apk to /system/app/

4. Use RootExplorer or Terminal or ADB to copy the attached ContactsProvider.apk to /system/app/

5. Make sure you allow it to overwrite the existing ContactsProvider.apk

6. Reboot

7. Install Facebook for Android and add your Facebook account. You will be prompted to select your sync options.

8. Have fun!!!

Why is it a modded system app?

Yes, I'd love to have an alternative, but honestly there is no other alternative. The Facebook contacts sync works in a different way compared to the sync provided by other apps such as Twitter. Facebook keeps the contacts list in the Facebook cloud instead of sharing it with the Google cloud and so it is fundamentally different. More info here... http://searchengineland.com/google-...nexus-s-googlefacebook-battle-continues-65823

What exactly is modified in this apk?

This mod is quite simple... and just involves the addition of the Facebook for Android package definition "com.facebook.katana" to the "unrestricted_packages" of the contacts sync provider.

How was this modified?

1. Decompile the original ContactsProvider.apk using the smali/baksmali tool by JF.

2. In the decompiled package folder, go to res/values/.

3. Edit the arrays.xml file in a linux/unix compliant text (TextPad, EditPlus, GEdit, vi, etc.). Do not use Notepad or Wordpad.

4. This is what the original arrays.xml looks like.

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string-array name="unrestricted_packages">
<item>android</item>
</string-array>
</resources>

5. This is what I have added. This is similar to the contents of the ContactsProvider.apk of the Nexus One.

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string-array name="unrestricted_packages">
<item>com.android.contacts</item>
<item>com.facebook.katana</item>
<item>com.android.mms</item>
<item>com.google.android.gm</item>
<item>com.android.email</item>
<item>com.android.phone</item>
<item>com.google.android.apps.maps</item>
<item>com.android.globalsearch</item>
<item>com.android.calendar</item>
<item>com.google.android.talk</item>
<item>android</item>
</string-array>
</resources>

6. Recompile the apk using the smali/baksmali tool.

7. DO NOT sign the apk.

8. Follow the installation instructions above.

Notes:

1. In the arrays.xml above you could simply add "<item>com.facebook.katana</item>" instead of all and Facebook sync would work.

2. You could use tools like apk-tool by Brut.all or Apk Manager by Daneshm90 to simplify the process of decompiling-recompiling the apk file.

3. Signing the apk will cause boot loops since system apks are not supposed to be signed.

Credits:

mobiousdigital for the original understanding of how Facebook sync works

JesusFreke for smali/baksmali

$auron & chulri for root and filesystem r/w on Gen 8 devices

Google

Archos