前言:
开发中避免不了对敏感资源进行加密,以下实现了对批量资源文件
进行zip压缩加密打包,若对压缩的加密zip文件
进行再加密
、或仅仅加密单个或少量文件
,可参考这里。
批量资源zip压缩加密脚本
1、将敏感资源集中到某一资源文件夹,拖入到项目中注意
不要勾选Target
,这样资源文件就不会打包到ipa文件中,只是会关联到工程项目。
2、使用以下脚本,项目编译时会将资源文件压缩加密
到ipa包中的xx.app
目录里,从而不影响APP的运行。
3、工程项目中,使用[[NSBundle mainBundle] pathForResource:fileName ofType:nil]
访问加密压缩的zip文件,然后对读取到的zip文件,进行解密解压缩访问。⚠️注意:代码zip压缩文件密码
要和脚本中的密码
保持一致。
# Type a script or drag a script file from your workspace to insert its path.
# -- 👇这里默认是在根目录,即: ${PROJECT_DIR} 或 ${SRCROOT} --
# zip密码需要和代码中保持一致,方可解压zip资源包
PASSWARD="YanJin"
ZIP_NAME="Wavetables"
cd ${TARGET_NAME}
# -- 👇这里是项目文件根目录/项目名/,即: ${TARGET_NAME} --
# 项目文件根目录:${PROJECT_DIR} 或 ${SRCROOT}
# 项目文件根目录/项目名目录: ${TARGET_NAME}
FILE_PATH="${ZIP_NAME}"
# 压缩文件到工程项目中路径
#ZIP_PATH="${PROJECT_DIR}/${TARGET_NAME}/${ZIP_NAME}.zip"
# 压缩文件的Build/Archive项目构建路径,xx.app中的文件路径
BUILD_ZIP_PATH="${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/${ZIP_NAME}.zip"
#BUILD_ZIP_PATH="${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.app/${ZIP_NAME}.zip"
# 压缩加密zip,压缩资源文件到指定路径。这里将压缩加密的$FILE_PATH文件,移动xx.ipa包的xx.app目录下。
# xx.ipa包的xx.app目录下文件,若访问可使用:[[NSBundle mainBundle] pathForResource:fileName ofType:nil]
# 注意:若不想压缩多余的目录路径,要cd到目标文件($FILE_PATH),或者它的“父目录”,这里cd到了它的“父目录”;
# 若cd到目标文件($FILE_PATH),使用: "zip -r -P $PASSWARD $BUILD_ZIP_PATH *" 即可
zip -r -P $PASSWARD $BUILD_ZIP_PATH $FILE_PATH
#cd $TARGET_APP_PATH
# -- 👇这里是编译包 xx.app/ 的路径
#mkdir file-dir #测试创建文件见