nativescript-dev-android-snapshot v0.0.11
Deprecated
The plugin is now deprecated. Please use webpack's NativeScriptSnapshotPlugin instead. For more information, check out the documentation article.
Installing
To start using the package execute:
tns install android-snapshotThis will install the nativescript-dev-android-snapshot package and save it as a dev dependency.
Activating
The plugin's hooks will be activated by default only in release configuration.
Optionally, this behavior can also be controlled by the TNS_ANDROID_SNAPSHOT environment variable:
- Set it to
0to temporarily disable snapshots in release configuration. - Set it to
1to enable snapshots in even debug configuration.
Usage
When the android-snapshot plugin is activated, it will check whether the application is using Angular or not. Depending on that it will install either the tns-core-modules-snapshot package or the nativescript-angular-snapshot package (which includes the tns-core-modules + @angular). The specific version of this package will be determined by the original package version and the V8 version used in the currently installed Android Runtime.
Example: If you have
tns-core-modules@2.0.1andtns-android@2.1installed (which comes with V8 4.7.80), theandroid-snapshotplugin will search for and download thetns-core-modules-snapshot@latest-2.0.1-4.7.80package (if not already manually installed).
Each of these packages has the following structure:
<package_name>-snapshot
├── _embedded_script_.js
├── bundle.records.json
└── snapshots
├── arm64-v8a
│ └── snapshot.blob
├── armeabi-v7a
│ └── snapshot.blob
└── x86
└── snapshot.blobThe _embedded_script_.js contains all the contents of the original plugin (and its dependencies) bundled with webpack. This file is required for the Android static binding generator tool. It is thus excluded from the final application package.
Each of the snapshot.blob files contains this exact script precompiled in binary form for the respective architecture. Modifications of the original package (and its dependencies) or of the _embedded_script_.js will have no effect because the new contents will mismatch that already included in the snapshot.blob files.
During platform preparation the android-snapshot plugin will delete all JavaScript files that are in the snapshot package (specified in the bundle.records.json file) and will instrument the Android Runtime to load the correct snapshot.blob file during startup. This will allow all further require(module) calls to be resolved from the modules cache contained within the snapshot binary.
Uninstalling
To remove the android-snapshot package execute:
npm uninstall nativescript-dev-android-snapshot --save-devThis will also remove any tns-core-modules-snapshot/nativescript-angular-snapshot packages that may be installed and delete all leftover files from the platform's assets.
Troubleshooting
After plugin removal or between configuration changes it is possible that the CLI will fail to prepare some plugins. This can be resolved by removing and then adding the android platform.
For more information or reporting issues follow this repository: https://github.com/NativeScript/android-snapshot