Как скомпилировать aFreeRDP на Linux
aFreeRDP - это Android-клиент проекта FreeRDP.
Я использую 64-битную Ubuntu 15.04 Vivid.
Моя цель - скомпилировать aFreeRDP. Я на финише, но не могу пересечь его. Я успешно установил необходимые пакеты, Android NDK, а затем скомпилировал внешний openssl (скрипт оболочки Android делает это автоматически). Затем я создал файлы make. Интересно ни
cmake -DCMAKE_TOOLCHAIN_FILE=cmake/AndroidToolchain.cmake -DANDROID_NDK=/home/csaba/android-ndk -DFREERDP_EXTERNAL_SSL_PATH=/home/csaba/GitRepos/FreeRDP/external/openssl -DANDROID_SDK=/home/csaba/android-sdk-linux
ни
cmake -DCMAKE_TOOLCHAIN_FILE=cmake/AndroidToolchain.cmake -DANDROID_NDK=/home/csaba/android-ndk -DFREERDP_EXTERNAL_SSL_PATH=/home/csaba/GitRepos/FreeRDP/external/openssl -DCMAKE_BUILD_TYPE=Debug -DANDROID_BUILD_JAVA=OFF -DANDROID_SDK=/home/csaba/android-sdk-linux -DFREERDP_EXTERNAL_JPEG_PATH=/home/csaba/GitRepos/FreeRDP/external/jpeg8d
произвел любое apk
, но они счастливо составлены libfreerdp-android.so
,
Мне нужен apk
Я пошел в client/Android/aFreeRDP
и так как у меня был build.xml
там я сказал ant build install
, Процесс сборки начался, но затем умер на этапе компиляции ресурса. У меня есть текущие инструменты сборки андроида 23-го уровня и сопутствующие материалы с Android SDK. Я вижу в источнике, что источник изначально был нацелен на 21 уровень. Я также добавил SDK 21 уровня и попытался принудительно установить maxSdkVersion
до 21 в AndroidManifest.xml
, но это не помогло. Журнал компиляции:
Как вы можете видеть после ошибок ресурса
[aapt] Generating resource IDs...
[aapt] /home/csaba/GitRepos/FreeRDP/client/Android/appcompat_v7/res/values-v23/styles_base.xml:20: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.
[aapt]
[aapt] /home/csaba/GitRepos/FreeRDP/client/Android/appcompat_v7/res/values-v23/styles_base_text.xml:19: error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
[aapt]
оно умирает
BUILD FAILED
/home/csaba/android-sdk-linux/tools/ant/build.xml:597: The following error occurred while executing this line:
/home/csaba/android-sdk-linux/tools/ant/build.xml:649: The following error occurred while executing this line:
/home/csaba/android-sdk-linux/tools/ant/build.xml:694: null returned: 1
Сравнивая уровень 21 и ресурсы уровня 23, уровень 21 имеет гораздо больше материала, уровень 23 имеет отдельные записи, очень расплывчато. Как я могу это исправить? Дайте мне знать, какие файлы я должен публиковать.
Обновление 1:
Избавьтесь от надоедливой проблемы с ADT, которая могла бы также повлиять на эту ошибку: Ошибка затмения: Ошибка синтаксического анализа...\android-22\android-wear\armeabi-v7a\devices.xml К сожалению, удаление образов Wear привело к ошибке ADT уйти, но ошибка компиляции aFreeRDP все еще осталась.
Обновление 2: я попытался вернуться назад во времени, и моей целью было получить Android SDK, который предоставляет 21, но не имеет уровня 23. Я создал резервную копию моего текущего Android SDK. SDK для загрузки tgz 22.6.2 ( https://dl.google.com/android/android-sdk_r22.6.2-linux.tgz) предоставляет только цель 21. Но SDK для загрузки tgz 23.0.0 ( https://dl.google.com/android/android-sdk_r23-linux.tgz) уже хочет обновить систему до 24. Поэтому я не могу привести систему в состояние, когда у меня нет цели 23 (которая косвенным образом вызывает ошибки - точнее, уровень). Средство совместимости 24 для цели 23 (которая удовлетворяет цели 21)), но имеет цель 21.
(Бонусный вопрос: почему Google так тяжело загружает старые SDK? Мне пришлось возиться и угадывать URL-адреса).
Обновление 3:
Мне удалось отладить aFreeRDP из Android Studio (v 1.5), используя указания github.com/FreeRDP/FreeRDP/blob/master/docs/README.android
2 ответа
Я хочу опубликовать ту же тему, но вы уже создали ее, поэтому я опубликую ее здесь. это должен быть комментарий, но у меня нет 50 репутации, чтобы комментировать, поэтому я заставляю его отвечать здесь: Примечания: (xxx = https://github.com/ в этом сообщении)
Ссылки: xxx/FreeRDP/FreeRDP/wiki/ Компиляция xxx/awakecoding/FreeRDP-Manuals/blob/master/Developer/FreeRDP-Developer-Manual.markdown и другие посты из интернета
Цель: создать aFreeRDP для устройств Android. 2 года назад я собирал его для Ubuntu 12 / 14, но сейчас сборка не работает.
Новая среда должна быть настроена снова:
-Windows 7 Enterprise 64 bit (ОСНОВНАЯ ОС) -WMware WorkStation 10 -VM Ubuntu 15.10 Wily 64bit
Подготовьте Ubuntu с NDK10e, JDK7, SDK23...
shaun @ ubuntu: ~ $ lsb_release -a Нет доступных модулей LSB. Идентификатор распространителя: Ubuntu Описание: Ubuntu 15.10 Релиз: 15.10 Кодовое имя: wily
Установить JDK
sudo add-apt-repository ppa: webupd8team / java
sudo apt-get update
sudo apt-get установить oracle-java7-installer
Установите ANDROID NDK
chmod a + x android-ndk-r10e-linux-x86_64.bin
./android-ndk-r10e-linux-x86_64.bin
sudo chown -R root: root / home / shaun / Main / android-ndk-r10e
sudo mv / home / shaun / главная /android-ndk-r10e /opt
экспорт NDK=/opt/android-ndk-r10e
Установите ANDROID SDK
Загрузите и извлеките android-sdk_r23.0.2-linux.tgz
sudo mv / home / shaun / главная / android-sdk-linux / opt / android-sdk
shaun @ ubuntu: / opt / android-sdk / tools $./android
Установить зависимости GIT / CMAKE / GCC
sudo apt-get install \ build-essential git-core cmake \ libssl-dev \ libx11-dev libxext-dev libxinerama-dev libxcursor-dev libxkbfile-dev \ libxv-dev libxi-dev libxdamage-dev libxrender-dev libxrandr-dev \ libasound2-dev libcups2-dev libpulse-dev \ libavutil-dev libavcodec-dev \ libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libcunit1-dev libdirectfb-dev xmlto doxygen libxtst-dev
sudo apt-get установить lib32stdC++ 6
sudo apt-get установить lib32z1
ПОЛУЧИТЬ FreeRDP
git clone git: //github.com/FreeRDP/FreeRDP.git cd FreeRDP
Добавить PATH
shaun @ ubuntu: ~ $ gedit ~ /.bashrc export ANDROID_NDK=/opt/android-ndk-r10e экспорт ANDROID_SDK=/opt/android-sdk экспорт FREERDP_EXTERNAL_SSL_PATH=/home/shaun/Main/FreeRDP-master/ внешний / Android / master / external / external-openssl-ndk-static export PATH=$PATH:$FREERDP_EXTERNAL_SSL_PATH export PATH="$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/ инструменты платформы:$ANDROID_NDK"
из FreeRDP -> запустить./scripts/android_setup_build_env.sh -> увидеть длинный вывод.... затем в конце вы увидите: Подготовленные внешние библиотеки, теперь вы можете собрать приложение.
Наконец, запустите:
CMake -DCMAKE_TOOLCHAIN_FILE= CMake/AndroidToolchain.cmake -DANDROID_NDK=$ANDROID_NDK -DANDROID_SDK=$ANDROID_SDK -DFREERDP_EXTERNAL_SSL_PATH=$FREERDP_EXTERNAL_SSL_PATH -DFREERDP_EXTERNAL_JPEG_PATH="/ главная / Shaun / Главная / FreeRDP / внешняя /jpeg8d" -DANDROID_NATIVE_API_LEVEL:STRING=L = -DCMAKE_MAKE_PROGRAM $ANDROID_NDK/prebuilt/linux-x86/bin/make -DCMAKE_BUILD_TYPE=Debug -DANDROID_BUILD_JAVA=OFF -L . делать
После этого, у меня есть все библиотеки, в которых я нуждаюсь, но все еще не могу получить APK:...
... длинный вывод.... Общее время: 2 секунды клиент /Android/aFreeRDP/CMakeFiles/android-package.dir/build.make:50: рецепт для целевого клиента /Android/aFreeRDP/bin/aFreeRDP-debug.apk' fail make [2]: * [client / Android / aFreeRDP / bin / aFreeRDP-debug.apk] Ошибка 1 CMakeFiles/Makefile2:2494: рецепт для целевого клиента / Android / aFreeRDP / CMakeFiles / android-package.dir / all 'failed make [1]: * [клиент /Android/aFreeRDP/CMakeFiles/android-package.dir/all] Ошибка 2 Makefile:136: рецепт для цели'all'не выполнен make: *** [all] Ошибка 2
==========================
Импорт в ECLIPSE и сборка из Eclipse успешно - APK и приложение снова запускаются на всех моих устройствах с новыми функциями. Наиболее продвинутая функция - это также перенаправление микрофонов:-)
Но все еще не работает в ANDROID STUDIO, все еще пытаюсь:(, пожалуйста, дайте мне знать, если у вас это работает в AS. Спасибо
Я начал с 23.0 SDK tgz, обновил один раунд (не обновляя до Android 6.0). Затем проблемные XML-файлы копируются из Android SDK. Поэтому я удалил эту папку values-v23 из SDK. Я также изменил файл AndroidManifest.xml aFreeRDP и установил minSdkVersion равным 17 из 14. Удаление каталога, безусловно, помогло, я не уверен, что другие два шага помогли, но у меня сейчас есть apk. Я считаю это уродливым взломом, но это только обходной путь. Потому что пока я не буду отмечать это как ответ.
Обновление: я начал с полностью обновленного Android SDK, и увеличение minSdkVersion с 14 до 17 также не имеет значения. Единственное, что позволило устранить ошибку - это инвазивное удаление каталога values-v23 из Android SDK.
Примечание. Компиляция проще, чем год / пару лет назад. Android_setup_build_env.sh заботится о загрузке и компиляции библиотеки ssl и других вещей.