这里以修改最新的ndk r18为例,老的ndk版本比这更容易都在ndk-bundle/toolchains里放着需要修改的文件。
#复制ndk的toolschain里的llvm
cp -r ndk-bundle/toolchains/llvm ndk-bundle/toolchains/ollvm
#删除prebuilt文件夹下的文件夹的bin和lib64,prebuilt文件夹下根据系统不同命名也不同
rm -rf ndk-bundle/toolchains/ollvm/prebuilt/darwin-x86_64/bin
rm -rf ndk-bundle/toolchains/ollvm/prebuilt/darwin-x86_64/lib64
#把我们之前编译好的ollvm下的bin和lib移到我们刚才删除bin和lib64的目录下
mv build/bin ndk-bundle/toolchains/ollvm/prebuilt/darwin-x86_64/
mv build/lib ndk-bundle/toolchains/ollvm/prebuilt/darwin-x86_64/
#复制ndk-bundle/build/core/toolchains的文件夹,这里根据自己对CPU架构的需求自己复制然后修改
cp -r ndk-bundle/build/core/toolchains/arm-linux-androideabi-clang ndk-bundle/build/core/toolchains/arm-linux-androideabi-clang-ollvm
例如
#复制ndk的toolschain里的llvm
cp -r android-ndk-r18b/toolchains/llvm android-ndk-r18b/toolchains/ollvm
#删除prebuilt文件夹下的文件夹的bin和lib64,prebuilt文件夹下根据系统不同命名也不同
rm -rf android-ndk-r18b/toolchains/ollvm/prebuilt/darwin-x86_64/bin
rm -rf android-ndk-r18b/toolchains/ollvm/prebuilt/darwin-x86_64/lib64
#把我们之前编译好的ollvm下的bin和lib移到我们刚才删除bin和lib64的目录下
mv build/bin android-ndk-r18b/toolchains/ollvm/prebuilt/darwin-x86_64/
mv build/lib android-ndk-r18b/toolchains/ollvm/prebuilt/darwin-x86_64/
#复制android-ndk-r18b/build/core/toolchains的文件夹,这里根据自己对CPU架构的需求自己复制然后修改
cp -r android-ndk-r18b/build/core/toolchains/arm-linux-androideabi-clang
android-ndk-r18b/build/core/toolchains/arm-linux-androideabi-clang-ollvm
最后把arm-linux-androideabi-clang-ollvm里的setup.mk文件进行修改
30行code
TOOLCHAIN_NAME := ollvm
TOOLCHAIN_ROOT := $(call get-toolchain-root,$(TOOLCHAIN_NAME))
TOOLCHAIN_PREFIX := $(TOOLCHAIN_ROOT)/bin
config.mk里是CPU架构,刚才是复制出来的所以不用修改,但如果要添加其他的自定义架构需要严格按照格式规范命名最初的文件夹,如mips的需要添加文件夹mipsel-linux-android-clang-ollvm,setup.mk和刚才的修改一样即可。
项目中配置
到了项目里还需要修改两个文件:
在Android.mk 中添加混淆编译参数android-ndk-r18b ▸ sources ▸ third_party ▸ googletest-Android.mk
LOCAL_CFLAGS += -mllvm -sub -mllvm -bcf -mllvm -fla
Application.mk中配置NDK_TOOLCHAIN_VERSION
android-ndk-r18b ▸ sources ▸ third_party ▸ vulkan ▸ src ▸ build-android ▸ jni-Application.mk
#根据需要添加
APP_ABI := x86 armeabi-v7a x86_64 arm64-v8a mips armeabi mips64
#使用刚才我们做好的编译链
NDK_TOOLCHAIN_VERSION := ollvm
Xcode10之后的
创建XCode的toolchain然后把生成的文件夹放到/Library/Developer/下
cd build ##cd build路径为/Users/用户名/build.
sudo make install-xcode-toolchain
mv /usr/local/Toolchains /Library/Developer/
Toolchains下的.xctoolchain文件就是一个文件夹,进去修改info.plist
<key>CFBundleIdentifier</key>
<string>org.llvm.7.0.0svn</string> -> <string>org.ollvm-swift.5.0</string>
修改完在XCode的Toolchains下就会显示相应的名称
然后如图打开XCode选择Toolchaiins
在Xcode-项目中Build Setting - Other C Flags添加混淆参数.