Cześć. Potrzebuję wygenerować pliki *.so z SFML. Ale o co dokładnie chodzi.
No więc próbuję napisać aplikację dla Androida z wykorzystaniem biblioteki SFML.
Dowiedziałem się, że najlepszą opcją będzie zbudowanie SFML 2.5.1 (choć wolałbym 3.0.2) ze źródeł. Niestety nie udało mi się zbudować SFML i nie wiem jak to zrobić. I właśnie o to chodzi, że potrzebuję wygenerowanych przez SFML plików *.so do projektu w Android Studio.
Moje pytanie: jak wygenerować pliki *.so dla SFML 2.5.1 ?
SFML i Tworzenie plików *.so
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 538
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2196
wip...
-
Zainstaluj Qt
a) pobierz https://www.qt.io/development/download-qt-installer-oss
b) zaznacz jak na obrazku 6.10.1 + Android + qtcreator

-
Skonfiguruj Qt do kompilacji Android (edycja -> ustawienia)
a) pobierz https://download.oracle.com/java/17/archive/jdk-17.0.12_windows-x64_bin.zip i rozpakuj
np. do c:\android

b) ustaw ścieżki:
-- JDK do rozpakowanego folderu
-- SDK do pustego folderu
-- oepnssl do pustego folderu
c) naciśnij "Ustaw SDK" i akceptuj wszystko aż skończy -
Otwórz projekt i uruchom "build"
a) Pliki - > Otworz plik lub projekt -> wybierz CMakeLists.txt
b) kliknij w Android 6.10.1 Clang Arm64
c) poczekaj dłuzsza chwile az cmake skonczy pobieraz zaleznosc (wynika cmake na zakłade "komunikaty ogolne")
d) build

Koniec
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2196

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 538
error ":-1: ostrzeżenie: Product type is not an application, not building an APK."

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 538
Komunikaty kompilatora:
21:44:22: Uruchamianie kroków budowania dla projektu CMakeSFMLProject...
21:44:22: Uruchamianie "C:\Qt\Tools\CMake_64\bin\cmake.exe" --build C:/Users/tBane/Desktop/TestSFML/build/Qt_6_10_1_for_Android_arm64_v8a-Debug --target all
ninja: no work to do.
21:44:22: Komenda "C:\Qt\Tools\CMake_64\bin\cmake.exe --build C:/Users/tBane/Desktop/TestSFML/build/Qt_6_10_1_for_Android_arm64_v8a-Debug --target all" poprawnie zakończona.
21:44:22: Product type is not an application, not building an APK.
21:44:22: Czas trwania: 00:00.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 538
nie mam folderu build\Android_Qt_6_10_1_Clang_arm64_v8a-Debug\lib

- Rejestracja: dni
- Ostatnio: dni
wpadłem tylko na chwilę i nie wiem czy mogę się podpiąć pod temat ale zapytam - czy budował ktoś z was statyczne Qt? Chodzi o to, żeby plik exe miał wszystkie *dll zlinkowane - nie pytajcie po co mi to potrzebne - potrzebne ale nie tylko do jednego projektu - czyli chcę napisać swój instalator
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2196
oczywiście Qt jest trochę armatą na muchy, wystarczy samo NDK
sądzac to kodzie cmake projektu jak nie podasz parametrów to sam buduje zależności
wiec im prosciej tym lepiej: np. tak:
@rem uruchamiamy w folderze SFML
mkdir bb
cd bb
@rem dodaje folder z cmake i ninja do PATH
set PATH=C:\Qt\Tools\Ninja;C:\Qt\Tools\CMake_64\bin;%PATH%
set ANDROID_NDK=C:\android\Sdk\ndk\27.2.12479018
cmake -G "Ninja" ^
-DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK%\build/cmake/android.toolchain.cmake ^
-DANDROID_ABI=arm64-v8a ^
-DANDROID_PLATFORM=24 ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384" ^
-DBUILD_SHARED_LIBS=ON ../
cmake --build . --config Release
pause
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 538
Mam jeszcze jeden problem. Pliki *.so muszą mieć 16KB
APK app-debug.apk is not compatible with 16 KB devices.
Some libraries have LOAD segments not aligned at 16 KB boundaries:
lib/arm64-v8a/libnative-lib.so
lib/arm64-v8a/libsfml-audio-d.so
lib/arm64-v8a/libsfml-graphics-d.so
lib/arm64-v8a/libsfml-network-d.so
lib/arm64-v8a/libsfml-system-d.so
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2196
sprawdz z dopisanym paraemtrem
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384" ^
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 30
a nie masz tam na tej liście CMAKE_SHARED_LINKER_FLAGS?
jak masz to do wartości dodaj to: -Wl,-z,max-page-size=16384
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 538
w Dodatkowe opcje CMake należy wpisać (żeby pliki *.so miały page size 16KB)
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384"
-DCMAKE_MODULE_LINKER_FLAGS="-Wl,-z,max-page-size=16384"
-DCMAKE_EXE_LINKER_FLAGS="-Wl,-z,max-page-size=16384"
Udało się. Biblioteki zbudowane. Ładuje SFML ale jest problem bo wyrzuca z aplikacji przy próbie utworzenia okna

