Project Architecture
UI Editor
You can design and code your apps right in your browser. The editor makes it easy to design native apps without worrying about fragmentation.
Workspace
Dist
The compiled Javascript output is located here. This file is added on .gitignore by default.
Assets
This folder is used to store files which are accesses directly by the app. Unlike the “Resources” and “Images”, this folder can be accessed by file operations such as read. Moreover, Assets folder is a unified location for all types of devices, you don’t need to use separate folders like the Resources folder.
Configuring assets to be different for both platforms
Optionally, you can separate the assets for both platforms. To do that, we need to make a couple of changes.
Static files(assets) are managed differently on Smartface Emulator and Published Application. Separation of assets directory will not work properly on Smartface Emulator.
- On project.json file (default project.json is located under empty workspace), change
- build.input.ios.assets from
assets
toassets/iOS
- build.input.android.assets from
assets
toassets/Android
- build.input.ios.assets from
- Create two different directories under assets folder.
- Create
iOS
directory for iOS based files - Create
Android
directory for Android files
- Create
- Check if your assets folder is located in
.gitignore
file. If so, you will need to modify the entries.
The files on the app will remain unchanged, but in the project you can assign to different folders.
For reference, let's have a directory list like this:
- assets
- iOS
- animation.gif
- GoogleService-Info.plist (From firebase)
- Android
- animation.gif
- image.png
- iOS
Basic usage:
console.info(Path.AssetsUriScheme); // This will be assets:// for both OS.
const animation = new File({
path: Path.AssetsUriScheme + "animation.gif",
});
/**
* This will throw error for iOS, since it doesn't exist.
* It would be better to check for which OS we are in.
*/
const image = new File({
path: Path.AssetsUriScheme + "image.png",
});
Config
Config folder is used to store the application configuration for:
- Android
- iOS
- Fonts
- project.json
- project.rau.json
- project.testingdistribution.json
Android
AndroidManifest.xml : It's an editable ".xml" file which you can change API Keys and Permissions for Android. For more information you can read the related Android documentation.
PackageProfiles.xml : Customizing Android packages is possible with PackageProfiles.xml . You can simply add the line “” to the PackageProfiles.xml in order to use xxxhdpi folder. Reducing APK size is also possible. If you don’t want to provide support for certain resolutions, you can remove some image folders. Commented lines are required for Android publishing to Google Play. Compatible-screens and supports-screens are the settings about the supported device types.
ids.xml : This file is autogenerated for Testing Automation purposes. You should commit this file.
Fonts
You can add your own font files which in this folder.
project.json
All main application settings resides in project.json. Such as ;
- Plugins
- Application Information
- keystore information
- Orientation settings
- Build settings
- Output folder
- API keys
iOS
It includes the Info.plist file which is required file for iOS Publishing. You can add new keys if required.
Images
All application images should be placed in this folder.
Android images should be located in the Images\Android folder and iOS images should be located in the Images\iOS folder.
Output
When you publish your app, the output files related to your project will be located in separate folders with timestamps under the output folder.
Plugins
All the plugins you use in your application should be placed under this folder. The plugins need to be set as active in project.json .
Scripts
Application sources (Typescript files) should be placed in the scripts folder.