Windows编译Hikari-LLVM15[llvm-18.1.8rel]并集成到Android Studio NDK
工具
1、w64devkit
w64devkit
解压出来给个环境变量
验证一下
2、ndk
通过android studio安装
ndk\27.1.12297006\toolchains\llvm\prebuilt\windows-x86_64\bin下的clang.exe显示版本18.0.2,差别不是太大
3、cmake
同样通过android studio安装
编译
1、准备工作
下载llvm-18.1.8rel
此时
Hikari-LLVM15-llvm-18.1.8rel\llvm\lib\Transforms\Obfuscation
和
Hikari-LLVM15-llvm-18.1.8rel\llvm\include\llvm\Transforms\Obfuscation
都是空的
下载Hikari-LLVM15-Core到Hikari-LLVM15-llvm-18.1.8rel\llvm\lib\Transforms\Obfuscation
下载Hikari-LLVM15-Headers到Hikari-LLVM15-llvm-18.1.8rel\llvm\include\llvm\Transforms\Obfuscation
2、开始编译
参考
(1)windows上编译ollvm4.0并集成到ndk中
(2)Windows上编译ollvm9.0等高版本并使用
(3)WINDOWS环境下编译OLLVM替换到NDK环境
创建"MinGW Makefiles"
cmake -S llvm -B build -G "MinGW Makefiles" -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_NEW_PASS_MANAGER=OFF
参考(3)中对各参数的解释如下
其中LLVM_ENABLE_NEW_PASS_MANAGER需在Hikari-LLVM15-llvm-18.1.8rel\llvm\CMakeLists.txt手动注释掉
Configuring Done后进入build目录,编译,等待完成
cd build
mingw32-make.exe -j8
集成
1、替换文件
将Hikari-LLVM15-llvm-18.1.8rel\build\bin下的clang.exe、clang++.exe、clang-cl.exe
替换到ndk\27.1.12297006\toolchains\llvm\prebuilt\windows-x86_64\bin目录
2、使用
as的agp可能不是用的上述版本的ndk,需要在build.gradle.kts指定ndk版本
android {
ndkVersion = "27.1.12297006"
}
启用混淆,同样在build.gradle.kts配置,更多用法参考HikariWiki
android {
defaultConfig {
externalNativeBuild{
cmake{
cppFlags("-mllvm -enable-allobf")
}
}
}
}