Итак, далее в статьях будет представлен очень вольный перевод Hardware Adaptation Development Kit для Sailfish OS . Повествование будет вестись по мере продвижения и погружения. Данная работа делается как заявка работы в Открытой Мобильной платформе - мол типа возьмите меня на работу. Ну поехали. Сегодня настраиваем SDK.
Первоочередная необходимость для адаптации Sailfish OS для вашего устройства это:
1 - иметь само устройство (Логично да?)
2 - иметь 64 битный линуксовый дистрибутив (У меня стоит Kbuntu 15.04)
Условные обозначения:
Если команда начинается с
MER_SDK $ то она вводится в chroot окружении SDK Sailfish (Которую мы настроим чуть позже).
Пример:
Код BASH:MER_SDK $
echo "run this command in the Mer SDK terminal"
Так же и с HA(hardware adaptation) SDK - его команды начинаются с
HABUILD_SDK $ Корневая директория сборки
Вся сборка будет происходит в папке, которую мы определим через переменную
$MER_ROOT. Данная папочка займёт много гигабайт места (более 16), так что позаботесь о наличии места. Официальная инструкция рекомендует определить $MER_ROOT как $HOME/mer/ , что мы и сделаем.
Код BASH:HOST $
export MER_ROOT=$HOME/mer/
заметьте, что если команда введена с префиксом HOST $ то она вводится в вашем домашнем окружении без chroot
Настройка необходимых переменных окружения
Программисты народ ленивый, поэтому, все переменные, которые мы будем использовать часть мы запишем в переменные окружения и сохраним.
Первыми идут переменные HD SDK
Код BASH:cat <<'EOF' > $HOME/.hadk.env
export MER_ROOT="$HOME/mer"
export ANDROID_ROOT="$MER_ROOT/android/droid"
export VENDOR="lge"
export DEVICE="hammerhead"
# ARCH conflicts with kernel build
export PORT_ARCH="armv7hl"
export RELEASE="3.2.0.12"
EOF
Думаю, если приглядеться всё понятно, но всё же:
PLATFORM_SDK_ROOT - корневая папка SDK
ANDROID_ROOT - папочка для hybris обвязки
VENDOR - производитель железки на которую портируем
DEVICE - кодовое название железки (тут Nexus 5)
PORT_ARCH - архитектура железки.
Далее 2 вспомогательных файлика, которые нам облегчат жизнь далее:
Код BASH:cat <<'EOF' >> $HOME/.mersdkubu.profile
function hadk() { source $HOME/.hadk.env; echo "Env setup for $DEVICE"; }
export PS1="HABUILD_SDK [${DEVICE}] $PS1"
hadk
EOF
cat <<'EOF' >> $HOME/.mersdk.profile
function hadk() { source $HOME/.hadk.env; echo "Env setup for $DEVICE"; }
hadk
EOF
То есть мы создали функцию hadk которую можем использовать для быстрой настройки окружения.
Качаем и настраиваем MerSDK
Наконец то начинаем заниматься делом, качаем SDK MER на котором основана SailfishOS
Если у вас не установлен curl то надо бы его поставить.
Код BASH:export MER_ROOT=$HOME/mer
cd
curl -k -O http://releases.sailfishos.org/sdk/installers/latest/Jolla-latest-SailfishOS_Platform_SDK_Chroot-i486.tar.bz2
sudo mkdir -p $MER_ROOT/sdks/sfossdk
sudo tar --numeric-owner -p -xjf Jolla-latest-SailfishOS_Platform_SDK_Chroot-i486.tar.bz2 -C $MER_ROOT/sdks/sfossdk
echo "export MER_ROOT=$MER_ROOT" >> ~/.bashrc
echo 'alias sdk=$MER_ROOT/sdks/sfossdk/mer-sdk-chroot' >> ~/.bashrc
exec bash
echo 'PS1="MerSDK $PS1"' >> ~/.mersdk.profile
cd
Скачали - распаковали - пульнули в нужную папку - создали переменные окружения.
Заходим в SDK
Дальше по уму нам бы обновить все составляющие SDK - в официальной документации этого не сказано, но я всё же обновлюсь.
Код BASH:sudo zypper ref
sudo zypper up
Следующий этап - установить в SDK пакеты android-tools createrepo zip - различные утилиты для android, утилита для создания локального репозитория RPM, который нам понадобиться далее и великого архиватора ZIP
Код BASH:MER_SDK $
sudo zypper in android-tools android-tools-hadk zip
Настраиваем Android окружение
Вообще мне это жутко не нравится, и конечно же в будущем надо избавляться от этой прослойки, но жизнь жестока и драйвера есть не для всего открытые, поэтому с этой хренью в виде прослойки Andoroid нужно смириться и принять. Так что го го го...
Находясь в MER SDK качаем окружение UBUNTU ... для андройда...да будет весёлая матрёшка...
Код BASH:MER_SDK $
hadk
TARBALL=ubuntu-trusty-20180613-android-rootfs.tar.bz2
cd
curl -O https://releases.sailfishos.org/ubu/$TARBALL
UBUNTU_CHROOT=$MER_ROOT/sdks/ubuntu
sudo mkdir -p $UBUNTU_CHROOT
sudo tar --numeric-owner -xvjf $TARBALL -C $UBUNTU_CHROOT
Ну и входим в Ubuntu chroot.
Код BASH:MER_SDK $
hadk
ubu-chroot -r $MER_ROOT/sdks/ubuntu
На сегодня всё - мы имеем мартёшку необходимую нам в дальнейшем. В следующей серии - Сборка Android HAL