Skip to content

Instantly share code, notes, and snippets.

@kimmoli
Last active August 24, 2016 23:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kimmoli/b47469dcca41c73704421074e5c58738 to your computer and use it in GitHub Desktop.
Save kimmoli/b47469dcca41c73704421074e5c58738 to your computer and use it in GitHub Desktop.
onyx sfdroid - Android patches and builds
#!/bin/bash
source build/envsetup.sh
set -e
SOURCE_DIR=~/android/system
INSTALLDIR=~/onyx_sfdroid
DEVICE=onyx
sudo mkdir -p $INSTALLDIR/root
SFDROID_PATH=/usr/libexec/sfdroid
HW_PATH=$SFDROID_PATH/system/lib/hw
BIN_PATH=$SFDROID_PATH/system/bin
LIB_PATH=$SFDROID_PATH/system/lib
FRAMEWORK_PATH=$SFDROID_PATH/system/framework
PRIV_PATH=$SFDROID_PATH/system/priv-app
sudo mkdir -p $INSTALLDIR/root/$LIB_PATH
sudo mkdir -p $INSTALLDIR/root/$HW_PATH
sudo mkdir -p $INSTALLDIR/root/$BIN_PATH
sudo mkdir -p $INSTALLDIR/root/$FRAMEWORK_PATH
sudo mkdir -p $INSTALLDIR/root/$PRIV_PATH/Settings
sudo mkdir -p $INSTALLDIR/root/$PRIV_PATH/SystemUI
sudo chown root:root -R $INSTALLDIR/root
lunch cm_$DEVICE-eng
echo ==== building libhardware ====
cd hardware/libhardware
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/lib/libhardware.so $INSTALLDIR/root/$LIB_PATH
sudo chown root:root $INSTALLDIR/root/$LIB_PATH/libhardware.so
## netd
echo ==== building netd ====
cd system/netd/server
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/bin/netd $INSTALLDIR/root/$BIN_PATH
sudo chown root:root $INSTALLDIR/root/$BIN_PATH/netd
# surfaceflinger
echo ==== building surfaceflinger ====
cd frameworks/native/services/surfaceflinger
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/lib/libsurfaceflinger.so $INSTALLDIR/root/$LIB_PATH
sudo chown root:root $INSTALLDIR/root/$LIB_PATH/libsurfaceflinger.so
# sensorservice (sfdroid sensors)
echo ==== building sensorservice ====
cd frameworks/native/services/sensorservice
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/lib/libsensorservice.so $INSTALLDIR/root/$LIB_PATH
sudo chown root:root $INSTALLDIR/root/$LIB_PATH/libsensorservice.so
echo ==== building sfdroid sensors ====
cd hardware/libhardware/modules/sfdroid_sensors
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/lib/hw/sfdroid_sensors.default.so $INSTALLDIR/root/$HW_PATH
sudo chown root:root $INSTALLDIR/root/$HW_PATH/sfdroid_sensors.default.so
# libinputflinger
echo ==== building libinputflinger ====
cd frameworks/native/services/inputflinger
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/lib/libinputflinger.so $INSTALLDIR/root/$LIB_PATH
sudo chown root:root $INSTALLDIR/root/$LIB_PATH/libinputflinger.so
echo ==== building mediaserver ====
cd frameworks/av/media/mediaserver
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/bin/mediaserver $INSTALLDIR/root/$BIN_PATH
sudo chown root:root $INSTALLDIR/root/$BIN_PATH/mediaserver
# sharebuffer
echo ==== building sharebuffer ====
cd hardware/libhardware/modules/sharebuffer
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/lib/hw/sharebuffer.default.so $INSTALLDIR/root/$HW_PATH
echo ==== building frameworks base core res ====
cd frameworks/base/core/res
mm
cd $SOURCE_DIR
# framework: Network State Trackers
# frameworks/base/wifi/java/android/net/wifi
echo ==== building frameworks base core java android net ====
cd frameworks/base/core/java/android/net
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/framework/framework.jar $INSTALLDIR/root/usr/libexec/sfdroid/system/framework
sudo chown root:root $INSTALLDIR/root/usr/libexec/sfdroid/system/framework/framework.jar
sudo cp out/target/product/$DEVICE/system/framework/ext.jar $INSTALLDIR/root/usr/libexec/sfdroid/system/framework
sudo chown root:root $INSTALLDIR/root/usr/libexec/sfdroid/system/framework/ext.jar
sudo chmod +r $INSTALLDIR/root/usr/libexec/sfdroid/system/framework/ext.jar
# services.jar: AlarmManagerService, ConnectivityService, droidmedia AppOps
echo ==== building frameworks base services java com android server ====
cd frameworks/base/services/java/com/android/server
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/framework/services.jar $INSTALLDIR/root/usr/libexec/sfdroid/system/framework
sudo chown root:root $INSTALLDIR/root/usr/libexec/sfdroid/system/framework/services.jar
# libandroid_servers.so AlarmManagerService, PowerManagerService, ActivityStackSupervisor, sfdroid_Helpers
echo ==== building frameworks base services core jni ====
cd frameworks/base/services/core/jni
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/lib/libandroid_servers.so $INSTALLDIR/root/$LIB_PATH
sudo chown root:root $INSTALLDIR/root/$LIB_PATH/libandroid_servers.so
echo ==== building frameworks base core jni ====
cd frameworks/base/core/jni
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/lib/libandroid_runtime.so $INSTALLDIR/root/$LIB_PATH
sudo chown root:root $INSTALLDIR/root/$LIB_PATH/libandroid_runtime.so
echo ==== building external dbus ====
cd external/dbus
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/lib/libdbus.so $INSTALLDIR/root/$LIB_PATH
sudo chown root:root $INSTALLDIR/root/$LIB_PATH/libdbus.so
# Settings:
echo ==== building apps Settings ====
cd packages/apps/Settings
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/priv-app/Settings/Settings.apk $INSTALLDIR/root/$PRIV_PATH/Settings
sudo chown root:root $INSTALLDIR/root/$PRIV_PATH/Settings/Settings.apk
echo ==== building frameworks base packages SysteUI ====
cd frameworks/base/packages/SystemUI/src/com/android/systemui
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/priv-app/SystemUI/SystemUI.apk $INSTALLDIR/root/$PRIV_PATH/SystemUI
sudo chown root:root $INSTALLDIR/root/$PRIV_PATH/SystemUI/SystemUI.apk
echo ==== building opt net ethernet ====
cd frameworks/opt/net/ethernet/java/com/android/server
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/framework/ethernet-service.jar $INSTALLDIR/root/usr/libexec/sfdroid/system/framework
sudo chown root:root $INSTALLDIR/root/usr/libexec/sfdroid/system/framework/ethernet-service.jar
echo ==== building opt net wifi ====
cd frameworks/opt/net/wifi/service/java/com/android/server/wifi
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/framework/wifi-service.jar $INSTALLDIR/root/usr/libexec/sfdroid/system/framework
sudo chown root:root $INSTALLDIR/root/usr/libexec/sfdroid/system/framework/wifi-service.jar
echo ==== building frameworks base cmds am ====
cd frameworks/base/cmds/am/src/com/android/commands/am/
mm
cd $SOURCE_DIR
sudo cp out/target/product/$DEVICE/system/framework/am.jar $INSTALLDIR/root/usr/libexec/sfdroid/system/framework
sudo chown root:root $INSTALLDIR/root/usr/libexec/sfdroid/system/framework/am.jar
echo === Build complete ===
echo === tarballing ===
cd $INSTALLDIR/root
sudo tar -czvf $INSTALLDIR/$DEVICE_sfdroid.tgz .
cd $INSTALLDIR
echo === DONE ===

Update packages with sfdroid patchings

Can we run this with repo sync ?? manifest xml ???

https://github.com/sfdroid/android_frameworks_base/commits/oneplus-onyx
https://github.com/sfdroid/android_hardware_libhardware/tree/oneplus-onyx
https://github.com/sfdroid/android_frameworks_native/tree/oneplus-onyx
https://github.com/sfdroid/android_external_dbus/tree/oneplus-onyx
https://github.com/sfdroid/android_frameworks_opt_net_wifi/tree/oneplus-onyx
https://github.com/sfdroid/android_frameworks_opt_net_ethernet/tree/oneplus-onyx
https://github.com/sfdroid/android_system_netd/tree/oneplus-onyx
https://github.com/sfdroid/android_packages_apps_Settings/tree/oneplus-onyx

Build modified packages

sdk
ubu-chroot -r $MER_ROOT/sdks/ubuntu
hadk
cd ~/android/system
./buildscript.sh

Make tar of new files and copy it to device

cd ~/onyx_sfdroid/root
sudo tar -czvf onyx_sfdroid.tgz .
scp onyx_sfdroid.tgz nemo@<device>:.

sfdroid_renderer

sfdroid_renderer is built in obs, https://build.merproject.org/package/show/home:kimmoli:sfdroid/sfdroid_renderer

ssu ar kimmoli-sfdroid http://repo.merproject.org/obs/home:/kimmoli:/sfdroid/sailfish_latest_armv7hl/
devel-su pkcon repo-set-data kimmoli-sfdroid refresh-now true
devel-su pkcon install sfdroid_renderer

init.rc patching?

https://gist.github.com/kimmoli/7fbf59c0ef2c77dff492c1ad4d0ce4c5

Copying new files to device

devel-su mount -o remount,rw /system
cd /
devel-su tar -xzvf /home/nemo/onyx_sfdroid.tgz
@taaem
Copy link

taaem commented Aug 24, 2016

The init.rc patching gist is deleted? On purpose (not needed)?

@taaem
Copy link

taaem commented Aug 24, 2016

Actually dbus needs to be built before base core jni otherwise it'll give errors on first compiling

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment