2018-11-06

add-radio-file for android recovery


# update package file(update.zip)에 기타 파티션(예, bootloader)를 추가 방법.
makefile에 다음과 같이 추가.

$(call add-radio-file,bootloader.img)
- INSTALLED_RADIOIMAGE_TARGET += bootloader.img
- $(LOCAL_PATH)/bootloader.img를 $(PRODUCT_OUT)/bootloader.img 로 복사

$(call add-radio-file,folder/bootloader.img)
- INSTALLED_RADIOIMAGE_TARGET += bootloader.img
- $(LOCAL_PATH)/folder/bootloader.img를 $(PRODUCT_OUT)/bootloader.img 로 복사


# 다른 방법
makefile에 아래 동작 추가
- INSTALLED_RADIOIMAGE_TARGET += bootloader.img
- bootloader.img를 $(PRODUCT_OUT)/bootloader.img에 복사

2018-11-01

re-mount system & vendor partition rw mode on android




### w/ console, adb shell  or terminal
@ re-mount system partition rw option
// Android Pie (9.0)
# mount -o rw,remount /
// Android Oreo
# mount -o rw,remount /system

@ re-mount vendor partition rw option
# mount -o rw,remount /vendor


### w/ adb
$ adb connect
$ adb root
$ adb connect
@ re-mount system & vendor partition rw option
$ adb remount

2018-10-23

uboot ext4


# part list mmc 0
# ext4ls mmc 0:4 /
# ext4load mmc 0:4 0x24000000 test.bin

preferred activities


@ xml path
/system/etc/preferred-apps/preferred-activities-home.xml
/data/system/users/0/package-restrictions.xml

@ source code
frameworks/base/services/core/java/com/android/server/pm/Settings.java

@ reference site
https://stackoverflow.com/questions/34073290/set-default-application-on-aosp
https://github.com/opengapps/all/blob/master/etc/preferred-apps/google.xml

2018-10-16

ssh mount


출처 : https://blog.leocat.kr/notes/2018/04/23/sshfs-mount-remote-server-using-ssh

$ sshfs -o reconnect mirror@mirror:/mirror /mnt/mirror
$ sudo umount /mnt/mirror


2018-10-15

android - init.rc


on late-init
    trigger early-fs
    trigger fs
    trigger post-fs
    trigger late-fs
    trigger post-fs-data
trigger early-boot
trigger boot

on boot
    class_start hal


    class_start core

2018-10-12

repo


$ repo init -u <url>
$ repo init -u <url> -b <branch_name>
$ repo init -m <manifest_file>
$ repo init -m <manifest_file> -b <branch_name or commit_id>

$ repo sync
$ repo sync -d

$ repo start <local_branch> --all


# snapshot manifest
$ repo manifest -o <manifest_file> -r
$ repo manifest -o release.xml -r
$ cp release.xml .repo/manifests/release.xml
$ cd .repo/manifests/
@git add, commit & push

# snapshot checkout
$ repo init -m release.xml
$ repo sync -d
@ local branch가 있는 경우, release.xml에 있는 revision으로 checkout 안되는 경우 있음.
@ -d 옵션을 주면, 모든 git repository가 manifest에 정의된 revision으로 checkout(detach) 됨.


# .repo folder에서 remote server 접속 없이 checkout
$ repo sync --local-only


# repo group option
// groups in repo manifest. "pdk", "device", "vendor"
   <project groups="pdk" name="platform/art" path="art" />
$ repo list -g group_name
$ repo list -g group_name -p
$ repo forall -g group_name -c 'git status'


# repo checkout w/ date
$ git rev-list -n 1                --before="2019-04-01 00:00" master
$ git rev-list -n 1 --first-parent --before="2019-04-01 00:00" master
$ git rev-list -n 1 --all          --before="2019-04-01 00:00"

$ git checkout `git rev-list -n 1 --before="2019-04-01 00:00" master`
$ git checkout `git rev-list -n 1 --first-parent --before="2019-04-01 00:00" master`
$ git checkout `git rev-list -n 1 --all --before="2019-04-01 00:00"`

$ repo forall -c 'git checkout `git rev-list -n 1 --before="2019-04-01 00:00" master`'
$ repo forall -c 'git checkout `git rev-list -n 1 --first-parent --before="2019-04-01 00:00" master`'
$ repo forall -c 'git checkout `git rev-list -n 1 --all --before="2019-04-01 00:00"`'