应用加固 - HTTPCore DES加密防护优化

1、 cmake 使用ar 打出的静态库 不支持iOS系统。 
改为使用Xcode命令生成可执行文件及Xcode工程项目,再打包静态库

cmake .. -G Xcode -T buildsystem=1 \
-DCMAKE_SYSTEM_NAME=iOS \
"-DCMAKE_OSX_ARCHITECTURES=armv7;armv7s;arm64;i386;x86_64" \
-DCMAKE_OSX_DEPLOYMENT_TARGET=9.0 \
-DCMAKE_INSTALL_PREFIX=`pwd`/_install \
-DCMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH=NO \
-DCMAKE_IOS_INSTALL_COMBINED=YES

参考文档:

CMake交叉编译及iOS与Android端进行调用CMake交叉编译及iOS与Android端进行调用 | 黑面宝宝的博客

2、 Xcode命令生成可执行文件后,再打包静态库报错

原因是Xcode的新构建系统与cmake不兼容
Xcode命令生成可执行文件时,加入修改构建系统命令,自动修改生成Xcode工程项目的构建系统 为 老的构建系统

-T buildsystem=1

参考文档:

Xcode 新构建系统 与 cmake 的兼容性解决方案

3、swift类引用c++库时 头文件报错 不存在
swift不具备C++特性,需使用Objective-C++ 即通过.mm文件中转,然后才可以在oc、swift类中去使用,.mm文件既具备OC特性又具备C++特性

4、如何将启动执行包名白名单检测的逻辑放入静态库
通过.mm文件中转,OC的+load方法中调用c++的包名白名单检测,然后 在c++方法中调用OC的 获取bundleId的方法。 后面考虑缩短操作路径,OC的+load方法中先获取包名,再调用c++的包名白名单检测,这样去除了 在c++方法中调用OC的 获取bundleId的过程,也符合 Android与iOS通用逻辑,易于统一封装

5、合并多个静态库时 使用ar解包报错
静态库包含多个架构,无法直接使用ar解包,可以指定单个架构解包,再合并,过于复杂,不考虑。改为使用 Xcode libtool 合并多个静态库,并放入cmakelist文件,使用cmake命令打包

 参考文档:

使用 Xcode libtool 合并多个静态库 : 使用 Xcode libtool 合并多个静态库 - 掘金

6、私有库 c++、swift混编发版

s.public_header_files = "TTPHttpCoreSwift/HttpCore/Des/DESTool.h"

你可能感兴趣的:(iOS,ios,swift,HTTPCore)