這里以修改最新的ndk r18為例,老的ndk版本比這更容易都在ndk-bundle/toolchains里放著需要修改的文件。
#復(fù)制ndk的toolschain里的llvm
cp -r ndk-bundle/toolchains/llvm ndk-bundle/toolchains/ollvm
#刪除prebuilt文件夾下的文件夾的bin和lib64,prebuilt文件夾下根據(jù)系統(tǒng)不同命名也不同
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/
#復(fù)制ndk-bundle?/?build?/?core?/?toolchains的文件夾,這里根據(jù)自己對CPU架構(gòu)的需求自己復(fù)制然后修改
cp -r ndk-bundle?/?build?/?core?/?toolchains/arm-linux-androideabi-clang? ndk-bundle?/?build?/?core?/?toolchains/arm-linux-androideabi-clang-ollvm
例如
#復(fù)制ndk的toolschain里的llvm
cp -r android-ndk-r18b/toolchains/llvm android-ndk-r18b/toolchains/ollvm
#刪除prebuilt文件夾下的文件夾的bin和lib64,prebuilt文件夾下根據(jù)系統(tǒng)不同命名也不同
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/
#復(fù)制android-ndk-r18b?/?build?/?core?/?toolchains的文件夾,這里根據(jù)自己對CPU架構(gòu)的需求自己復(fù)制然后修改
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架構(gòu),剛才是復(fù)制出來的所以不用修改,但如果要添加其他的自定義架構(gòu)需要嚴格按照格式規(guī)范命名最初的文件夾,如mips的需要添加文件夾mipsel-linux-android-clang-ollvm,setup.mk和剛才的修改一樣即可。
項目中配置
到了項目里還需要修改兩個文件:
在Android.mk 中添加混淆編譯參數(shù)?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
#根據(jù)需要添加
APP_ABI := x86 armeabi-v7a x86_64 arm64-v8a mips armeabi mips64
#使用剛才我們做好的編譯鏈
NDK_TOOLCHAIN_VERSION := ollvm
Xcode10之后的
創(chuàng)建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下就會顯示相應(yīng)的名稱
然后如圖打開XCode選擇Toolchaiins
在Xcode-項目中Build Setting - Other C Flags添加混淆參數(shù).