在win10上用ndk25b编译libwebsockets-3.0 Android静态库
libwebsockets-3.0(github)代码库:https://github.com/EpicGames/ThirdParty/tree/master/libwebsockets-3.0
ndk25b:https://dl.google.com/android/repository/android-ndk-r25b-windows.zip
openssl库:使用ue4.26引擎中的G:\svn\UnrealEngine\Engine\Source\ThirdParty\OpenSSL\1_0_2h版本

构建脚本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目录中:

浙公网安备 33010602011771号