将 app 资源打包加密进行管理。
Package resources to a single file, and access them via file name as key.
- iOS 9.0+, OSX 10.12+
TextFormater 可通过CocoaPods安装:
ResourcePackage is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "ResourcePackage"
git clone https://github.com/1Fr3dG/ResourcePackage.git
cd ResourcePackage
cd packager
swift build -c release
.build/release/packager
可使用该打包工具将资源目录打包为单个文件供 app 使用。
This tool designed to package a resource folder to a single file, for used by app.
Note: This tool support only gzip as compress algorithm, you can build your own tool to support more.
let _compress: SimpleEncrypter = EncrypterCompress(with: "gzip")
let _encrypt: SimpleEncrypter = EncrypterXor(with: "password12345")
let _pkgfile: String = "filename"
let pkg = ResourcePackage(with: _pkgfile, encrypter: _encrypt, compressor: _compress)
let pkgReader = ResourcePackageReader(
withCache: false,
useTwoStepLocating: false,
autoDeviceCustomization: false,
useKeyPrefix: false)
pkgReader.packages["pkg1"] = pkg
let themePkgReader = ResourcePackageReader(withTheme theme: String,
FromThemePackages respkg: ["themePkg1" : themePkg],
withBackwardTheme backward: "default")
let stringValue = String(data:pkgReader[keyofString], encoding: .utf8)
let imageValue = UIImage(data:pkgReader[keyofImage])
-
resource package priority is reverse order of package key
-
pkgReader[key]
will looking for resource with following order:- [key+model+lang]
- [key+model]
- [key+devicetype+lang]
- [key+devicetype]
- [key+lang]
- [key]
** NOTE: it will ONLY search the package with [key] resource **
-
for two step locating, sufix will NOT applied for 2nd search, but all packages will be included
uibutton.loadTheme(from: themePkgReader, key: "button1")
uilable.setText(from: themePkgReader, key: "labeltext")
uiimageview.setImage(from: themePkgReader, key: "image1")
- uibutton.loadTheme
- key.title -> uibutton.attributedTitle
- key.image -> uibutton.image
- key.bgimg -> uibutton.backgroundImage
- key.disabled.above
- key.highlighted.above
- key.selected.above
- key.focused.above
- uilabel.setText
- key -> uilabel.attributedText
- uiimageview.setImage
- key -> uiimageview.image
- key.highlighted -> uiimageview.highlightedImage
pkgReader.playSound(key: "asound", withVibrate: false)
pkgReader.playMusic("bgmusic.mp3", loops: 1, volume: 0.8)
Alfred Gao, alfredg@alfredg.cn
ResourcePackage is available under the MIT license. See the LICENSE file for more info.