Windows编译Hikari-LLVM15[llvm-18.1.8rel]并集成到Android Studio NDK

2024-09-07 05:04

本文主要是介绍Windows编译Hikari-LLVM15[llvm-18.1.8rel]并集成到Android Studio NDK,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Windows编译Hikari-LLVM15[llvm-18.1.8rel]并集成到Android Studio NDK

    • 工具
      • 1、w64devkit
      • 2、ndk
      • 3、cmake
    • 编译
      • 1、准备工作
      • 2、开始编译
    • 集成
      • 1、替换文件
      • 2、使用

工具

1、w64devkit

w64devkit
解压出来给个环境变量
w64devkit
验证一下
gcc

2、ndk

通过android studio安装
ndk
ndk\27.1.12297006\toolchains\llvm\prebuilt\windows-x86_64\bin下的clang.exe显示版本18.0.2,差别不是太大

3、cmake

同样通过android studio安装
cmake

编译

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)中对各参数的解释如下
cmake
其中LLVM_ENABLE_NEW_PASS_MANAGER需在Hikari-LLVM15-llvm-18.1.8rel\llvm\CMakeLists.txt手动注释掉
cmake
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目录
clang

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")}}}
}

这篇关于Windows编译Hikari-LLVM15[llvm-18.1.8rel]并集成到Android Studio NDK的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144133

相关文章

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

SpringBoot集成WebService(wsdl)实践

《SpringBoot集成WebService(wsdl)实践》文章介绍了SpringBoot项目中通过缓存IWebService接口实现类的泛型入参类型,减少反射调用提升性能的实现方案,包含依赖配置... 目录pom.XML创建入口ApplicationContextUtils.JavaJacksonUt

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手