HTML source file is encrypted at build, and decrypted at runtime. Works with Android build only.
NPM repository: https://www.npmjs.com/package/cordova-plugin-crypt-file-android
cordova plugin add cordova-plugin-crypt-file-android
This plugin was created to provide a temporary solution to the issue of cordova-plugin-crypt-file (made by tkaji) and cordova-plugin-crypto-file (fork by PeterHdd) with cordova-ios 6.0.0+, where CDVURLProtocol was removed, breaking the plugin for that platform. Right now the only way to use this for Android is to add the plugin when building Android, then removing it when building for iOS. This plugin disables its features for iOS making it easier to be kept on the Android build, where encryption is more important anyways.
The file IonicWebViewEngine.java
(that is inside the ionic webview plugin) needs to be modified for this plugin to work and for the source code to be encrypted.
- After adding the cordova-plugin-ionic-webview, navigate to the following location:
For cordova-android@6 :
platforms/android/src/com/ionicframework/cordova/webview/IonicWebViewEngine.java
For cordova-android@7 :
platforms/android/app/src/main/java/com/ionicframework/cordova/webview/IonicWebViewEngine.java
- Remove the following code:
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
super.shouldInterceptRequest(view,request);
return localServer.shouldInterceptRequest(request.getUrl());
}
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
return localServer.shouldInterceptRequest(Uri.parse(url));
}
- Add this instead:
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
return super.shouldInterceptRequest(view, request);
}
You can also change the port in the config.xml
, but it needs to be the same port as the one used in the "cordova-plugin-ionic-webview".
To change the port, do the following:
<preference name="cryptoPort" value="8080" />
No need to do anything more than installing the plugin, then run:
cordova build [ios / android]
You can check the result by opening your generated APK file with an archiving tool and opening your JS files with an editor.
The following file types will be encrypted as default setting:
- .html
- .htm
- .js
- .css
You can specify the encryption file types by editing plugin.xml
.
plugins/cordova-plugin-crypt-file/plugin.xml
<cryptfiles>
<include>
<file regex="\.(htm|html|js|css)$" />
</include>
<exclude>
<file regex="exclude_file\.js$" />
</exclude>
</cryptfiles>
Specify the target file types as a regular expression.
https://github.com/tkyaji/cordova-plugin-crypt-file https://github.com/peterhdd/cordova-plugin-crypto-file
Apache version 2.0