[DEV][AOSP] ICS sources and build instruction for A501

Search This thread

IcedCube

Senior Member
Nov 9, 2010
356
118
Queensland
coburnsdomain.com
Got a question. In the current state that this A501 ROM is in, does it feature working SMS and MMS? I don't really care about the MMS side of things.

If I am allowed to, I will use this as the foundation for my ICS Custom A501 ROM.
 

BPaul

Inactive Recognized Developer
May 9, 2011
2,355
8,117
31
Astana
empireb.ml
hy i fixed your sources. and begin build :D
i think we get a fairly stable 4.1. If not need new proprietaries for nvidia
 

shchers

Senior Member
Apr 11, 2011
72
20
Kiev
hy i fixed your sources. and begin build :D
i think we get a fairly stable 4.1. If not need new proprietaries for nvidia

Hi BPaul, what was you fixed in my sources? I already ported main part and I even have working 3G and GPS on my JB;)

UPD:
Latest JB related patches can be find on github in job branch.
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 8
    1. Preparing environment and building

    1.1. Installing bootloader and recovery

    This step can be done only in Windows (can be done on Linux too, but I didn't find right version of Linux nvflash):
    • Run MS Windows (tested even on Windows 7) on host PC
    • Download this package (Size=12592367 MD5=EA890A3B3E1CEDBBD820D1A798A365A2). Inside package:
      1. Windows drivers for nVidia USB device
      2. nvflash tool and required libraries
      3. Unlocked bootloader, see details here
      4. Batch for automatic update, see original batch here
    • Generate your SBK with your CPUID by this link
    • Connect tablet to PC through USB
    • Turn-off tablet
    • Press and hold reset button on tablet
    • Press power and wait until new USB device will be detected
    • Install USB drivers (can be find in package)
    • Run script run.bat and follow recommendations

    1.2. Downloading sources and building Android

    • Create directory for AOSP sources
      Code:
      mkdir aosp && cd aosp
    • Initializing repo
      Code:
      repo init -u [url]https://android.googlesource.com/platform/manifest[/url] -b ics-mr1
    • Downloading sources
      Code:
      repo sync
    • Download sources of Acer Picasso device
      Code:
      git clone git://github.com/shchers/afs_device_acer_picasso.git device/acer/picasso
    • Download sources of MBM RIL library
      Code:
      git clone git://github.com/shchers/afs_vendor_mbm_mbm-ril.git vendor/mbm/mbm-ril
    • Download sources of MBM GPS library
      Code:
      git clone git://github.com/shchers/afs_vendor_mbm_libmbm-gps.git vendor/mbm/libmbm-gps
    • Download sources of MBM GPS service
      Code:
      git clone git://github.com/shchers/afs_vendor_mbm_mbmservice.git vendor/mbm/mbmservice
    • Setting-up build environment
      Code:
      source build/envsetup.sh
    • Configuring target (Acer A500/A501 == full-picasso)
      Code:
      lunch full_picasso-userdebug
    • Building with using all available CPU cores
      Code:
      m -j`grep -c processor /proc/cpuinfo`

    2. Installing Android to device

    2.1. Updating through CWM recovery

    2.1.1. Creating update archive

    • Go to target output directory
      Code:
      cd ${ANDROID_PRODUCT_OUT}
    • Create folder for updater script. Run in console:
      Code:
      mkdir -p META-INF/com/google/android
    • Copy updater script there
      Code:
      show_progress(0.400000, 0);
      ui_print("> Formating system partition");
      format("ext4", "EMMC", "/dev/block/mmcblk0p3", "0");
      ui_print("> Mounting system partition");
      mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
      ui_print("> Extracting system directory");
      package_extract_dir("system", "/system");
      ui_print("> Creating symlinks");
      show_progress(0.200000,0);
      symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
      symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
      symlink("mksh", "/system/bin/sh");
      symlink("toolbox",
      	"/system/bin/ls","/system/bin/mount","/system/bin/cat",
      	"/system/bin/ps","/system/bin/kill","/system/bin/ln",
      	"/system/bin/insmod","/system/bin/rmmod","/system/bin/lsmod",
      	"/system/bin/ifconfig","/system/bin/setconsole","/system/bin/rm",
      	"/system/bin/mkdir","/system/bin/rmdir","/system/bin/reboot",
      	"/system/bin/getevent","/system/bin/sendevent","/system/bin/date",
      	"/system/bin/wipe","/system/bin/sync","/system/bin/umount",
      	"/system/bin/start","/system/bin/stop","/system/bin/notify",
      	"/system/bin/cmp","/system/bin/dmesg","/system/bin/route",
      	"/system/bin/hd","/system/bin/dd","/system/bin/df",
      	"/system/bin/getprop","/system/bin/setprop","/system/bin/watchprops",
      	"/system/bin/log","/system/bin/sleep","/system/bin/renice",
      	"/system/bin/printenv","/system/bin/smd","/system/bin/chmod",
      	"/system/bin/chown","/system/bin/newfs_msdos","/system/bin/netstat",
      	"/system/bin/ioctl","/system/bin/mv","/system/bin/schedtop",
      	"/system/bin/top","/system/bin/iftop","/system/bin/id",
      	"/system/bin/uptime","/system/bin/vmstat","/system/bin/nandread",
      	"/system/bin/ionice","/system/bin/touch","/system/bin/lsof");
      ui_print("> Applying permissions");
      set_perm_recursive(0, 0, 0755, 0644, "/system");
      set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
      set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
      set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
      set_perm(0, 0, 0755, "/system/etc/bluetooth");
      set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
      set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
      set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
      set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
      set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
      set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
      set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
      set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
      set_perm(0, 0, 0644, "/system/vendor/fake.txt");
      show_progress(0.200000, 10);
      package_extract_file("boot.img", "/dev/block/mmcblk0p2");
      NOTE: Don't rename file! It should be updater-script!
    • Download this archive (Size=149342 MD5=9497D5087FEF04C1EA4EE215A3DC83B8) and extract there
    • Create ZIP archive. Run in console:
      Code:
      zip -r9 full-pack.zip boot.img system META-INF
    • Generate keys. Run in console:
      Code:
      openssl genrsa -out key.pem 1024
      openssl req -new -key key.pem -out request.pem
      openssl x509 -req -days 3650 -in request.pem -signkey key.pem -out certificate.pem
      openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
    • Run signing archive. Run in console:
      Code:
      java -jar ${ANDROID_HOST_OUT}/framework/signapk.jar certificate.pem key.pk8 full-pack.zip full-pack-sign.zip

    2.1.2. Using CWM recovery

    • Upload full-pack-sign.zip on FAT32 formated microSD card
    • Turn-off tabled
    • Insert microSD
    • Press Power button while hold Volume Down button
    • Release Power button when you'll see text in top left corner, some like "cleaning cache partition..."
    • From opened menu select "wipe data/factory reset"
    • Select "Yes -- delete all user data"
    • Press on "install zip from sdcard" menu
    • Select "choose zip from sdcard"
    • In this menu select "full-pack-sign.zip"
    • After installing press "Go back"
    • Press "reboot device"

    2.2. Updating through Android debug

    2.2.1. Updating system partition

    • Get a root access
      Code:
      adb root && adb wait-for-device
    • Remount system partition with R/W permitions
      Code:
      adb shell mount -o remount,rw -t ext4 /dev/block/mmcblk0p3 /system/
    • Sync binaries
      Code:
      adb shell stop && adb sync && adb reboot

    2.2.2. Updating boot partition

    • Reboot to fastboot
      Code:
      adb reboot bootloader
    • Select one of possible methods to use new boot partition
      1. Boot with custom kernel and ramdisk without flashing (boot partition will not be rewrote) - this mode useful for debugging kernel/root
        Code:
        fastboot boot ${ANDROID_PRODUCT_OUT}/kernel ${ANDROID_PRODUCT_OUT}/ramdisk.img
      2. Boot with custom boot.img without flashing (boot partition will not be rewrote) - this mode also can be used for debugging kernel/root
        Code:
        fastboot boot ${ANDROID_PRODUCT_OUT}/boot.img
      3. Flashing new boot.img to boot partition
        Code:
        fastboot flash:raw boot ${ANDROID_PRODUCT_OUT}/kernel ${ANDROID_PRODUCT_OUT}/ramdisk.img

    2.3. Enabling Google services

    To enable Google services on new system, should be copied several Google binaries to /system/app. To do it should b done several steps:
    • Get a root access
      Code:
      adb root && adb wait-for-device
    • Remount system partition with R/W permitions
      Code:
      adb shell mount -o remount,rw -t ext4 /dev/block/mmcblk0p3 /system/
    • Download this (i.e. GAPPS) archive (Size=16449776 MD5=C7E6FAAFE7223A17DE93DD1D7A968734)
    • Extract it somewhere
      Code:
      mkdir GooglePack && cd GooglePack
      unzip googlepack.zip
    • Stop dalvik virtual machine
      Code:
      adb shell stop
    • Upload APK files
      Code:
      for f in `ls *.apk`; do echo "Uploading $f" && adb push $f /system/app/; done
    • Remove Provision.apk - it looks like setup wizard, but SetupWizard.apk much powerful
    • Reboot device to recovery and wipe data partition (use CWM "Wipe" menu for it)
      Code:
      adb reboot recovery
    • Reboot device after wiping
    • Use wizard on system start-up to configure your account
    • Use Android Market to install GMail and other apps

    3. Debugging

    3.1. RILD

    To see rild log should be done:
    Code:
    adb logcat -b radio

    4. FAQ

    Q: WiFi scanner show few AP, but can't connect anywhere...
    A: Try to make factory reset.

    Q: Is it thor2002ro sources?
    A: No, it is my own port.

    Q: What is the version?
    A: ICS MR1 (Current version: 4.0.4).

    5. Supported features

    • 2D/3D acceleration
    • Photo/Video Camera
    • 2G/3G
    • GPS
    • AGPS
    • SMS (tested only in GSM networks)
    • WiFi
    • Bluetooth
    • Audio/Video playback
    • Image viewing
    • External SD Card
    • External USB storage
    • Compass
    • Gyroscope

    6. To do

    1. [rild] Add support for USSD
    2. [rild] Add support/check for MMS
    3. [libsensors] Implement libsensors and replace Acer binaries
    4. [audio] Add support for USB audio devices
    5. [audio] Add support for modem audio input

    7. Screenshots
    • Version
      attachment.php
    • EDGE connection
      attachment.php
    • Speed test results on HSDPA+
      attachment.php

    8. Pre-builds

    • Build #1 (Size=114409141 MD5=11C9E0BE468B21BF061C7ECF6673C9B4)
    • Build #2 (Size=119899802 MD5=4CB798A28B38D02217752C6E09F0E226)
    3
    [reserved]

    Reserved for further updates, if it will be necessary...
    2
    I see that package was 10 times downloaded, but no one comment:)
    2
    Good point, but unfortunately I'd never seen CM source code. May be you can share link to CM Gerrit/Git with me?

    You should find all you need through the following link...

    http://www.cyanogenmod.com/community

    There's also a link to their Git hub on there.