Подробная инструкция по компиляции
В основе этого сообщения лежит инструкция немецкого энтузиаста.
Для компиляции вам понадобится Native Development Kit и SDK. Автором предполагается, что операции вы будете проводить в папке /usr/src. Качаем NDK, распаковываем, устанавливаем. Возвращаемся в /usr/src. Качаем SDK, распаковываем, запускаем.
cd /usr/src wget http://dl.google.com/android/ndk/android-ndk-r3-linux-x86.zip unzip android-ndk-r3-linux-x86.zip cd android-ndk-r3/ build/host-setup.sh cd .. wget http://dl.google.com/android/android-sdk_r05-linux_86.tgz tar -zxf android-sdk_r05-linux_86.tgz android-sdk-linux_86/tools/androidКликаем дальше Update All и выбираем необходимые среды. Так как у меня сейчас на телефоне 2.1, я выбрал android-7 без документации и примеров. Все оно скачивается (около 120МБ) и само устанавливается. Закрываем.
Далее для компиляции вам понадобится создать символьную ссылку на один файл (для простоты видимо):
ln -s /usr/src/android-sdk-linux_86/platforms/android-7/tools/aapt /usr/src/android-sdk-linux_86/tools/aapt(заметьте: тут учитывается, что вы также выбрали android-7 среду)
Далее вам нужно установить все зависимости компиляции. У меня стоит гента, поэтому мне лишь понадобился subversion и mercurial. Что у вас, я не знаю, вот оригинальная цитата:
apt-get build-dep firefox apt-get install mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev mesa-common-dev autoconf2.13 libidl-dev sun-java6-bin sun-java6-fonts sun-java6-jdk sun-java6-jre hgsvnТеперь начинаем вытягивать собственно исходники. Создаем директории и подготавливаем все и вся.
hg clone http://hg.mozilla.org/users/vladimir_mozilla.com/mozilla-droid fennec cd fennec hg update -C android2 hg clone http://hg.mozilla.org/mobile-browser mobileВ будущем для ускорения процесса можно будет использовать:
cd fennec hg pull -u http://hg.mozilla.org/users/vladimir_mozilla.com/mozilla-droid hg update -C android2 cd mobile hg pull -u http://hg.mozilla.org/mobile-browser
Что ж теперь самая интересная часть. Конфиг компиляции (/usr/src/fennec/browser/config/mozconfig) и тут небольшая ремарка. Я изменял конфиг, поэтому дальнейшие инструкции будут отличать от приведенных в источнике.
# This file specifies the build flags for Firefox. You can use it by adding: # . $topsrcdir/browser/config/mozconfig # to the top of your mozconfig file. # Uncomment these two lines to use objdir with client.mk OBJDIR=objdir-android mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/$OBJDIR #ac_add_options --enable-application=browser # For Fennec use this instead: ac_add_options --enable-application=mobile # Global options ac_add_options --disable-debug ac_add_options --enable-optimize # libxul is required ac_add_options --enable-libxul # android options ac_add_options --target=arm-android-eabi export C_F_P=/usr/src ac_add_options --with-android-ndk="$C_F_P/android-ndk-r3" ac_add_options --with-android-sdk="$C_F_P/android-sdk-linux_86/platforms/android-7" ac_add_options --with-android-tools="$C_F_P/android-sdk-linux_86/tools" ac_add_options --with-endian=little ac_add_options --enable-tree-freetype ac_add_options --enable-faststripe ac_add_options --disable-ctypes # ssltunnel can't build because the ndk doesn't have string, vector, or algorithm headers ac_add_options --disable-tests(я изменял конфиг согласно интуиции и инструкциям на оф.сайте мозиллы)
Что ж небольшое задание переменной и мы почти готовы.
export MOZCONFIG='/usr/src/fennec/browser/config/mozconfig'Вперед!
make -f client.mk(любые ошибки возникающие на этом шаге - ошибки компиляции. Смотрим вывод и принимаем необходимые действия (например, устанавливаем дополнительные необходимые программы, меняем флаги компиляции или отписываемся в форумы))
Автор заявляет 2-4 часа на компиляцию. Я уложился в 2 часа.
Далее проверьте директорию /usr/src/fennec/embedding/android на наличие файла Makefile.
Если он там есть, то выполните:
cd /usr/src/fennec/embedding/android makeСкорее всего его там нет, поэтому проверьте директорию /usr/src/fennec/embedding на наличие файла Makefile.
Если он там есть, то выполните:
cd /usr/src/fennec/embedding make cd /usr/src/fennec/embedding/android makeСкорее всего его там нет :D, поэтому выполните следующие команды в корне компиляции:
cd /usr/src/fennec ./configure cd /usr/src/fennec/embedding make cd /usr/src/fennec/embedding/android makeВот в этом (cd /usr/src/fennec/embedding; make) месте вы вероятнее всего схватите ошибку, но это нормально, так как свое предназначение он выполнит - создаст Makefile в папке /usr/src/fennec/embedding/android.
Если вы использовали параметры:
OBJDIR=objdir-android mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/$OBJDIRВам придется исправить Makefile в той директории, где вы находитесь (/usr/src/fennec/embedding/android).
Ищем:
include $(DEPTH)/config/autoconf.mkСразу после него добавляем:
DIST = $(DEPTH)/objdir-android/distИ наконец-то выполняем последнюю команду, которая теперь должна выполниться без ошибки:
makeНемецкий энтузиаст рекомендовал использовать gecko-unaligned.apk, но я буду выкладывать лишь fennec.apk или же firefox.apk, так как не вижу в них разницы (gecko-unaligned и fennec|firefox).