可可西

在win10上用ndk25b编译libwebsockets-3.0 Android静态库

libwebsockets-3.0github)代码库:https://github.com/EpicGames/ThirdParty/tree/master/libwebsockets-3.0

ndk25bhttps://dl.google.com/android/repository/android-ndk-r25b-windows.zip

openssl库:使用ue4.26引擎中的G:\svn\UnrealEngine\Engine\Source\ThirdParty\OpenSSL\1_0_2h版本

image

 

构建脚本AndroidCrossBuildUE4.bat放在mybuild目录中,AndroidCrossBuildUE4.bat内容如下:

@REM get libwebsockets-1.7.3 from https://github.com/EpicGames/ThirdParty
@REM put this file in libwebsockets-1.7.3/build
@REM modify UEENGINEDIR to point to engine directory
@REM run this batch file

@echo off

set UEENGINEDIR=G:\svn\UnrealEngine\Engine
set UEOPENSSL=%UEENGINEDIR%\Source\ThirdParty\OpenSSL\1_0_2h
set UELIBWEBSOCKET=%UEENGINEDIR%\Source\ThirdParty\libWebSockets\libwebsockets
set UELIBWEBSOCKETINCLUDE=%~dp0libwebsockets\include\Android
set UELIBWEBSOCKETLIB=%~dp0libwebsockets\lib\Android

mkdir %UELIBWEBSOCKETINCLUDE%
mkdir %UELIBWEBSOCKETLIB%

set OPENSSL_LIBRARIES=%UEOPENSSL%\lib\Android

rem NOTE: do not need difference includes for each architecture since identical config

rem ARMv7 Release
mkdir tempwork
cd tempwork
cmake ..\..  -DOPENSSL_INCLUDE_DIR=%UEOPENSSL%\include\Android\ARMv7 ^
-DOPENSSL_SSL_LIBRARY=%OPENSSL_LIBRARIES%\ARMv7\libssl.a -DOPENSSL_CRYPTO_LIBRARY=%OPENSSL_LIBRARIES%\ARMv7\libcrypto.a ^
-DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITH_SHARED=OFF -DLWS_HAVE_VISIBILITY=ON -DLWS_IPV6=ON ^
-DCMAKE_TOOLCHAIN_FILE=%NDKROOT%\build\cmake\android.toolchain.cmake -G "MinGW Makefiles" ^
-DTARGET_BUILD_PLATFORM=Android -DCMAKE_BUILD_TYPE=Release -DANDROID_NDK=%NDKROOT% ^
-DCMAKE_MAKE_PROGRAM=%NDKROOT%\prebuilt\windows-x86_64\bin\make.exe ^
-DANDROID_NATIVE_API_LEVEL="android-19" -DANDROID_ABI="armeabi-v7a" -DANDROID_STL=c++_shared

%NDKROOT%\prebuilt\windows-x86_64\bin\make.exe

mkdir %UELIBWEBSOCKETLIB%\ARMv7
copy lib\libwebsockets.a %UELIBWEBSOCKETLIB%\ARMv7
mkdir %UELIBWEBSOCKETINCLUDE%\ARMv7
copy ..\..\lib\libwebsockets.h %UELIBWEBSOCKETINCLUDE%\ARMv7
copy lws_config.h %UELIBWEBSOCKETINCLUDE%\ARMv7
cd ..
rmdir /S /Q tempwork

rem ARM64 Release
mkdir tempwork
cd tempwork
cmake ..\..  -DOPENSSL_INCLUDE_DIR=%UEOPENSSL%\include\Android\ARM64 ^
-DOPENSSL_SSL_LIBRARY=%OPENSSL_LIBRARIES%\ARM64\libssl.a -DOPENSSL_CRYPTO_LIBRARY=%OPENSSL_LIBRARIES%\ARM64\libcrypto.a ^
-DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITH_SHARED=OFF -DLWS_HAVE_VISIBILITY=ON -DLWS_IPV6=ON ^
-DCMAKE_TOOLCHAIN_FILE=%NDKROOT%\build\cmake\android.toolchain.cmake -G "MinGW Makefiles" ^
-DTARGET_BUILD_PLATFORM=Android -DCMAKE_BUILD_TYPE=Release -DANDROID_NDK=%NDKROOT% ^
-DCMAKE_MAKE_PROGRAM=%NDKROOT%\prebuilt\windows-x86_64\bin\make.exe ^
-DANDROID_NATIVE_API_LEVEL="android-21" -DANDROID_ABI="arm64-v8a" -DANDROID_STL=c++_shared

%NDKROOT%\prebuilt\windows-x86_64\bin\make.exe

mkdir %UELIBWEBSOCKETLIB%\ARM64
copy lib\libwebsockets.a %UELIBWEBSOCKETLIB%\ARM64
mkdir %UELIBWEBSOCKETINCLUDE%\ARM64
copy ..\..\lib\libwebsockets.h %UELIBWEBSOCKETINCLUDE%\ARM64
copy lws_config.h %UELIBWEBSOCKETINCLUDE%\ARM64
cd ..
rmdir /S /Q tempwork

rem x86 Release
mkdir tempwork
cd tempwork
cmake ..\..  -DOPENSSL_INCLUDE_DIR=%UEOPENSSL%\include\Android\x86 ^
-DOPENSSL_SSL_LIBRARY=%OPENSSL_LIBRARIES%\x86\libssl.a -DOPENSSL_CRYPTO_LIBRARY=%OPENSSL_LIBRARIES%\x86\libcrypto.a ^
-DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITH_SHARED=OFF -DLWS_HAVE_VISIBILITY=ON -DLWS_IPV6=ON ^
-DCMAKE_TOOLCHAIN_FILE=%NDKROOT%\build\cmake\android.toolchain.cmake -G "MinGW Makefiles" ^
-DTARGET_BUILD_PLATFORM=Android -DCMAKE_BUILD_TYPE=Release -DANDROID_NDK=%NDKROOT% ^
-DCMAKE_MAKE_PROGRAM=%NDKROOT%\prebuilt\windows-x86_64\bin\make.exe ^
-DANDROID_NATIVE_API_LEVEL="android-19" -DANDROID_ABI="x86" -DANDROID_STL=c++_shared

%NDKROOT%\prebuilt\windows-x86_64\bin\make.exe

mkdir %UELIBWEBSOCKETLIB%\x86
copy lib\libwebsockets.a %UELIBWEBSOCKETLIB%\x86
mkdir %UELIBWEBSOCKETINCLUDE%\x86
copy ..\..\lib\libwebsockets.h %UELIBWEBSOCKETINCLUDE%\x86
copy lws_config.h %UELIBWEBSOCKETINCLUDE%\x86
cd ..
rmdir /S /Q tempwork

rem x64 Release
mkdir tempwork
cd tempwork
cmake ..\..  -DOPENSSL_INCLUDE_DIR=%UEOPENSSL%\include\Android\x64 ^
-DOPENSSL_SSL_LIBRARY=%OPENSSL_LIBRARIES%\x64\libssl.a -DOPENSSL_CRYPTO_LIBRARY=%OPENSSL_LIBRARIES%\x64\libcrypto.a ^
-DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITH_SHARED=OFF -DLWS_HAVE_VISIBILITY=ON -DLWS_IPV6=ON ^
-DCMAKE_TOOLCHAIN_FILE=%NDKROOT%\build\cmake\android.toolchain.cmake -G "MinGW Makefiles" ^
-DTARGET_BUILD_PLATFORM=Android -DCMAKE_BUILD_TYPE=Release -DANDROID_NDK=%NDKROOT% ^
-DCMAKE_MAKE_PROGRAM=%NDKROOT%\prebuilt\windows-x86_64\bin\make.exe ^
-DANDROID_NATIVE_API_LEVEL="android-21" -DANDROID_ABI="x86_64" -DANDROID_STL=c++_shared

%NDKROOT%\prebuilt\windows-x86_64\bin\make.exe

mkdir %UELIBWEBSOCKETLIB%\x64
copy lib\libwebsockets.a %UELIBWEBSOCKETLIB%\x64
mkdir %UELIBWEBSOCKETINCLUDE%\x64
copy ..\..\lib\libwebsockets.h %UELIBWEBSOCKETINCLUDE%\x64
copy lws_config.h %UELIBWEBSOCKETINCLUDE%\x64
cd ..
rmdir /S /Q tempwork

注:^ 是 Windows 换行,在 bash 下换行用 \

 

进入mybuild目录,执行AndroidCrossBuildUE4.bat即可。编译结果会输出到mybuild/libwebsockets目录中:

image

 

posted on 2025-09-06 15:25  可可西  阅读(29)  评论(0)    收藏  举报

导航