AppCoreKit is an application framework designed to improve productivity while creating Apps for iOS. This is the result of a 3 years experience at Wherecloud and is a production framework that shipped more than 20 apps.
AppCoreKit does not offer out of the box UI components but the technology to help you:
- Manage your data
- Automatic serialization (KeyValue Store, Core Data)
- Objective-C runtime apis
- Type and data structure conversions
- View controllers and containers
- Ui vs. Models synchronization with bindings
- Appearance customization with cascading stylesheets
- Responsive view layouts with a hbox/vbox model
- Non homogenous Forms
- Maps
- Network
- And more.
Keep in mind that AppCoreKit is a toolbox. It is non intrusive so that you can cherry pick features and learn how to use it at your own pace. The framework is splitted in several modules with the following dependencies:
Screen Cast and high level description of the framework are available at http://www.appcorekit.net
Lets go to http://www.wherecloud.com/apps.html to get an idea of some of the apps we made at Wherecloud based on the AppCoreKit framework.
A sample repository with binary versions of the framework is available at https://github.com/wherecloud/appcorekit-samples
AppCoreKit supports all iOS versions 4.3 and higher.
The iOS 7 integration is in process. You can build your app and start using the framework on iOS7 without any problem. As we are in transition between XCode4 and XCode5 and we must support build with or without the iOS7 SDK, we added a ENABLE_XCODE5 pre-processor macro defined in CKConfiguration.h that enables iOS7 features that are not available while working in XCode4. You must uncomment this preprocessor macro while working in XCode5 to profit of the full integration with iOS7.
ResourceManager
Since the begining the the version 2.2.0 (Master), AppCoreKit integrates a new Resource management framework as a weak dependency. This framework called ResourceManager allows live update of your application when you modify your application's resources from 1 or several repositories. You can provide your XCode project folder when working in the simulator or a dropbox folder when working on your device to see your application reload when you modify or add images, strings files, sounds, stylesheets, layouts, color palettes, mappings, ...
If this framework is not linked with your app, the AppCoreKit will use the resources from your application's main bundle. If the framework is linked, you can specify one or several repository you want to sync with.
You can find a pre-compiled version of ResourceManager and sample integration in our sample repository at https://github.com/wherecloud/appcorekit-samples
Or you can get the sources of this framework and more informations at : https://github.com/wherecloud/ResourceManager
ResourceManager is also available as CocoaPods:
pod 'ResourceManager'
The recommended approach for installing AppCoreKit is via the CocoaPods package manager, as it provides flexible dependency management and dead simple installation. For best results, it is recommended that you install via CocoaPods >= 0.19.1 using Git >= 1.8.0 installed via Homebrew.
Adds the following lines in you PodFile
platform :ios, '5.0' pod 'AppCoreKit'
AppCoreKit is built as a Static Framework. Static Framework are not natively supported by Xcode and requires some additional specifications to get compiled properly.
Copy the following file:
./static Frameworks.xcspec
To:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications
And
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications
IMPORTANT : You will have to copy this file each time you update Xcode to a newer version.
AppCoreKit provides a "Documentation" target that generate a docset using the public header files and the additional programming guides in the Documentation folder. This target is a script base on "appledoc". To install appledoc, follow the installation procedure here : https://github.com/tomaz/appledoc
-
Drag'n'drop the AppCoreKit projects as subprojects in Xcode.
-
Adds the AppCoreKit.framework link dependency to your target in the build phases settings.
-
Add the following frameworks and libraries dependencies to your project in the build phases settings:
libstdc++.dylib, UIKit, Foundation, CoreGraphics, AddressBook, CoreData, QuartzCore, CoreLocation, MapKit, MediaPlayer, CoreFoundation, CFNetwork, SystemConfiguration, MobileCoreServices, Security, AdSupport.
- Adds the following Header Search Path in your build settings ( HEADER_SEARCH_PATHS ):
/usr/include/libxml2
- Adds the following link flags in your build settings (OTHER_LDFLAGS):
-ObjC -all_load -lxml2 -licucore -lz -weak_library /usr/lib/libstdc++.dylib
- As Xcode do not natively support static frameworks especially for resources, you'll need to add a post build phase if you'd like to use some components. In the build phase for your target, add a "Run Script" build phase and add the following script :
FRAMEWORKS_BUILD_PATH="$TARGET_BUILD_DIR" # Modify the following path to point on your AppCoreKit sources folder! APPCOREKIT_PROJECT_PATH="$HOME/Projects/Frameworks/AppCoreKit/" sh "$APPCOREKIT_PROJECT_PATH/copy_framework_resources.sh" --system-developer-dir "$SYSTEM_DEVELOPER_DIR" --executable-name "$EXECUTABLE_NAME" --frameworks-dir "$FRAMEWORKS_BUILD_PATH" --target-build-dir "$TARGET_BUILD_DIR" --project "$PROJECT" --project-dir "$PROJECT_DIR"
If you have any comments, suggestions, question or information request, please contact us at appcorekitsupport@wherecloud.com.
Want to keep updated? Follow us on Twitter - @appcorekit.
Copyright 2009-2013 WhereCloud, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.