前言:
開(kāi)發(fā)中避免不了對(duì)敏感資源進(jìn)行加密,以下實(shí)現(xiàn)了對(duì)批量資源文件進(jìn)行zip壓縮加密打包,若對(duì)壓縮的加密zip文件進(jìn)行再加密、或僅僅加密單個(gè)或少量文件,可參考這里。
批量資源zip壓縮加密腳本
1、將敏感資源集中到某一資源文件夾,拖入到項(xiàng)目中注意
不要勾選Target,這樣資源文件就不會(huì)打包到ipa文件中,只是會(huì)關(guān)聯(lián)到工程項(xiàng)目。
2、使用以下腳本,項(xiàng)目編譯時(shí)會(huì)將資源文件壓縮加密到ipa包中的xx.app目錄里,從而不影響APP的運(yùn)行。
3、工程項(xiàng)目中,使用[[NSBundle mainBundle] pathForResource:fileName ofType:nil]訪問(wèn)加密壓縮的zip文件,然后對(duì)讀取到的zip文件,進(jìn)行解密解壓縮訪問(wèn)。??注意:代碼zip壓縮文件密碼要和腳本中的密碼保持一致。
# Type a script or drag a script file from your workspace to insert its path.
# -- ??這里默認(rèn)是在根目錄,即: ${PROJECT_DIR} 或 ${SRCROOT} --
# zip密碼需要和代碼中保持一致,方可解壓zip資源包
PASSWARD="YanJin"
ZIP_NAME="Wavetables"
cd ${TARGET_NAME}
# -- ??這里是項(xiàng)目文件根目錄/項(xiàng)目名/,即: ${TARGET_NAME} --
# 項(xiàng)目文件根目錄:${PROJECT_DIR} 或 ${SRCROOT}
# 項(xiàng)目文件根目錄/項(xiàng)目名目錄: ${TARGET_NAME}
FILE_PATH="${ZIP_NAME}"
# 壓縮文件到工程項(xiàng)目中路徑
#ZIP_PATH="${PROJECT_DIR}/${TARGET_NAME}/${ZIP_NAME}.zip"
# 壓縮文件的Build/Archive項(xiàng)目構(gòu)建路徑,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文件,移動(dòng)xx.ipa包的xx.app目錄下。
# xx.ipa包的xx.app目錄下文件,若訪問(wèn)可使用:[[NSBundle mainBundle] pathForResource:fileName ofType:nil]
# 注意:若不想壓縮多余的目錄路徑,要cd到目標(biāo)文件($FILE_PATH),或者它的“父目錄”,這里cd到了它的“父目錄”;
# 若cd到目標(biāo)文件($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 #測(cè)試創(chuàng)建文件見(jiàn)
腳本運(yùn)行結(jié)果
查看腳本運(yùn)行結(jié)果xx.app中解壓zip文件

