mirror of
https://gitlab.com/walljm/dynamicbible.git
synced 2025-07-26 17:10:11 -04:00
FIX: Fixed issue with firebase login in cordova, and merge problems
This commit is contained in:
parent
e1e05fffc2
commit
1156b32c28
File diff suppressed because one or more lines are too long
@ -79,5 +79,22 @@
|
||||
<plugin name="cordova-plugin-statusbar" spec="^2.2.3" />
|
||||
<plugin name="cordova-plugin-whitelist" spec="^1.3.1" />
|
||||
<plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
|
||||
<universal-links>
|
||||
<host name="bhgx5.app.goo.gl/XktS" scheme="https" />
|
||||
<host name="dynamicbible-7c6cf.firebaseapp.com" scheme="https">
|
||||
<path url="/__/auth/callback" />
|
||||
</host>
|
||||
</universal-links>
|
||||
<plugin name="cordova-universal-links-plugin" spec="^1.2.1" />
|
||||
<plugin name="cordova-plugin-buildinfo" spec="^2.0.1" />
|
||||
<plugin name="cordova-plugin-browsertab" spec="^0.2.0" />
|
||||
<plugin name="cordova-plugin-inappbrowser" spec="^2.0.1" />
|
||||
<plugin name="cordova-plugin-customurlscheme" spec="^4.3.0">
|
||||
<variable name="URL_SCHEME" value="com.firebase.cordova" />
|
||||
<variable name="ANDROID_SCHEME" value=" " />
|
||||
<variable name="ANDROID_HOST" value=" " />
|
||||
<variable name="ANDROID_PATHPREFIX" value="/" />
|
||||
</plugin>
|
||||
<preference name="AndroidLaunchMode" value="singleTask" />
|
||||
<engine name="android" spec="7.0.0" />
|
||||
</widget>
|
||||
|
@ -14,35 +14,35 @@ if (rootdir)
|
||||
|
||||
for (var x = 0; x < platforms.length; x++)
|
||||
{
|
||||
// open up the index.html file at the www root
|
||||
try
|
||||
{
|
||||
var platform = platforms[x].trim().toLowerCase();
|
||||
var testBuildPath;
|
||||
// // open up the index.html file at the www root
|
||||
// try
|
||||
// {
|
||||
// var platform = platforms[x].trim().toLowerCase();
|
||||
// var testBuildPath;
|
||||
|
||||
if (platform === 'android')
|
||||
{
|
||||
testBuildPath = path.join(rootdir, 'platforms', platform, 'assets', 'www', 'build');
|
||||
}
|
||||
else
|
||||
{
|
||||
testBuildPath = path.join(rootdir, 'platforms', platform, 'www', 'build');
|
||||
}
|
||||
// if (platform === 'android')
|
||||
// {
|
||||
// testBuildPath = path.join(rootdir, 'platforms', platform, 'app', 'assets', 'www', 'build');
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// testBuildPath = path.join(rootdir, 'platforms', platform, 'app', 'www', 'build');
|
||||
// }
|
||||
|
||||
if (fs.existsSync(testBuildPath))
|
||||
{
|
||||
console.log('Removing map files from assets after prepare: ' + testBuildPath);
|
||||
fs.unlinkSync(testBuildPath + '/vendor.js.map');
|
||||
fs.unlinkSync(testBuildPath + '/main.js.map');
|
||||
fs.unlinkSync(testBuildPath + '/main.css.map');
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log('Build dir @ ' + testBuildPath + ' does not exist for removal');
|
||||
}
|
||||
} catch (e)
|
||||
{
|
||||
process.stdout.write(e);
|
||||
}
|
||||
// if (fs.existsSync(testBuildPath))
|
||||
// {
|
||||
// console.log('Removing map files from assets after prepare: ' + testBuildPath);
|
||||
// fs.unlinkSync(testBuildPath + '/vendor.js.map');
|
||||
// fs.unlinkSync(testBuildPath + '/main.js.map');
|
||||
// fs.unlinkSync(testBuildPath + '/main.css.map');
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// console.log('Build dir @ ' + testBuildPath + ' does not exist for removal');
|
||||
// }
|
||||
// } catch (e)
|
||||
// {
|
||||
// process.stdout.write(e);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
76
DynamicBibleIonic/package-lock.json
generated
76
DynamicBibleIonic/package-lock.json
generated
@ -2468,6 +2468,21 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"cordova-plugin-browsertab": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-browsertab/-/cordova-plugin-browsertab-0.2.0.tgz",
|
||||
"integrity": "sha1-Hgf5hy4VRnpQ59FKc/79h0+u1ko="
|
||||
},
|
||||
"cordova-plugin-buildinfo": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-buildinfo/-/cordova-plugin-buildinfo-2.0.1.tgz",
|
||||
"integrity": "sha1-Y2bJggvkPQ0yL49L4Cp9LFpl/0g="
|
||||
},
|
||||
"cordova-plugin-compat": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-compat/-/cordova-plugin-compat-1.2.0.tgz",
|
||||
"integrity": "sha1-C8ZXVyduvZIMASzpIOJ0F3V2Nz4="
|
||||
},
|
||||
"cordova-plugin-console": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-console/-/cordova-plugin-console-1.1.0.tgz",
|
||||
@ -2478,11 +2493,21 @@
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-crosswalk-webview/-/cordova-plugin-crosswalk-webview-2.3.0.tgz",
|
||||
"integrity": "sha1-4u407P2t3YS9qE5yZjU55AyZ0yQ="
|
||||
},
|
||||
"cordova-plugin-customurlscheme": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-customurlscheme/-/cordova-plugin-customurlscheme-4.3.0.tgz",
|
||||
"integrity": "sha1-Avlod4tAk5kOsEB/P6GxRY1wX5Q="
|
||||
},
|
||||
"cordova-plugin-device": {
|
||||
"version": "1.1.7",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-1.1.7.tgz",
|
||||
"integrity": "sha1-/JQRG+aTJijGaGiTjd89yCyfv+Y="
|
||||
},
|
||||
"cordova-plugin-inappbrowser": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-inappbrowser/-/cordova-plugin-inappbrowser-2.0.1.tgz",
|
||||
"integrity": "sha1-/qk31UgZGv5hrXyY9SPx/GIi5bM="
|
||||
},
|
||||
"cordova-plugin-splashscreen": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-4.1.0.tgz",
|
||||
@ -2498,6 +2523,18 @@
|
||||
"resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.3.tgz",
|
||||
"integrity": "sha1-tehezbv+Wu3tQKG/TuI3LmfZb7Q="
|
||||
},
|
||||
"cordova-universal-links-plugin": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/cordova-universal-links-plugin/-/cordova-universal-links-plugin-1.2.1.tgz",
|
||||
"integrity": "sha1-M70nhc3UdIc6Q7jDGVuTTlAA5Js=",
|
||||
"requires": {
|
||||
"mkpath": "1.0.0",
|
||||
"node-version-compare": "1.0.1",
|
||||
"plist": "2.1.0",
|
||||
"rimraf": "2.6.2",
|
||||
"xml2js": "0.4.19"
|
||||
}
|
||||
},
|
||||
"core-js": {
|
||||
"version": "2.5.3",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz",
|
||||
@ -7433,6 +7470,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"mkpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mkpath/-/mkpath-1.0.0.tgz",
|
||||
"integrity": "sha1-67Opd+evHGg65v2hK1Raa6bFhT0="
|
||||
},
|
||||
"move-concurrently": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
|
||||
@ -7670,6 +7712,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node-version-compare": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/node-version-compare/-/node-version-compare-1.0.1.tgz",
|
||||
"integrity": "sha1-2Fv9IPCsreM1d/VmgscQnDTFUM0="
|
||||
},
|
||||
"nopt": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
|
||||
@ -8111,6 +8158,28 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"plist": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz",
|
||||
"integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=",
|
||||
"requires": {
|
||||
"base64-js": "1.2.0",
|
||||
"xmlbuilder": "8.2.2",
|
||||
"xmldom": "0.1.27"
|
||||
},
|
||||
"dependencies": {
|
||||
"base64-js": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz",
|
||||
"integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE="
|
||||
},
|
||||
"xmlbuilder": {
|
||||
"version": "8.2.2",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
|
||||
"integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M="
|
||||
}
|
||||
}
|
||||
},
|
||||
"portfinder": {
|
||||
"version": "1.0.13",
|
||||
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
|
||||
@ -11567,7 +11636,6 @@
|
||||
"version": "0.4.19",
|
||||
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
|
||||
"integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"sax": "1.2.4",
|
||||
"xmlbuilder": "9.0.4"
|
||||
@ -11576,14 +11644,12 @@
|
||||
"xmlbuilder": {
|
||||
"version": "9.0.4",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.4.tgz",
|
||||
"integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8="
|
||||
},
|
||||
"xmldom": {
|
||||
"version": "0.1.27",
|
||||
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
|
||||
"integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=",
|
||||
"dev": true
|
||||
"integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
|
||||
},
|
||||
"xmlhttprequest": {
|
||||
"version": "1.8.0",
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "3.0.3",
|
||||
"version": "3.1.0",
|
||||
"name": "dynamicbible",
|
||||
"author": "Jason Wall",
|
||||
"homepage": "http://dynamicbible.com/",
|
||||
@ -34,12 +34,18 @@
|
||||
"@ionic/storage": "2.1.3",
|
||||
"angularfire2": "^5.0.0-rc.4",
|
||||
"cordova-android": "7.0.0",
|
||||
"cordova-plugin-browsertab": "^0.2.0",
|
||||
"cordova-plugin-buildinfo": "^2.0.1",
|
||||
"cordova-plugin-compat": "^1.2.0",
|
||||
"cordova-plugin-console": "^1.1.0",
|
||||
"cordova-plugin-crosswalk-webview": "^2.3.0",
|
||||
"cordova-plugin-customurlscheme": "^4.3.0",
|
||||
"cordova-plugin-device": "^1.1.7",
|
||||
"cordova-plugin-inappbrowser": "^2.0.1",
|
||||
"cordova-plugin-splashscreen": "^4.1.0",
|
||||
"cordova-plugin-statusbar": "^2.4.1",
|
||||
"cordova-plugin-whitelist": "^1.3.3",
|
||||
"cordova-universal-links-plugin": "^1.2.1",
|
||||
"firebase": "^4.8.0",
|
||||
"ionic-angular": "3.9.0",
|
||||
"ionic-plugin-keyboard": "^2.2.1",
|
||||
@ -103,6 +109,16 @@
|
||||
"XWALK_COMMANDLINE": "--disable-pull-to-refresh-effect",
|
||||
"XWALK_MODE": "embedded",
|
||||
"XWALK_MULTIPLEAPK": "true"
|
||||
},
|
||||
"cordova-plugin-buildinfo": {},
|
||||
"cordova-universal-links-plugin": {},
|
||||
"cordova-plugin-browsertab": {},
|
||||
"cordova-plugin-inappbrowser": {},
|
||||
"cordova-plugin-customurlscheme": {
|
||||
"URL_SCHEME": "com.firebase.cordova",
|
||||
"ANDROID_SCHEME": " ",
|
||||
"ANDROID_HOST": " ",
|
||||
"ANDROID_PATHPREFIX": "/"
|
||||
}
|
||||
},
|
||||
"platforms": [
|
||||
|
@ -55,6 +55,26 @@
|
||||
{
|
||||
"xml": "<feature name=\"Keyboard\"><param name=\"android-package\" value=\"io.ionic.keyboard.IonicKeyboard\" /><param name=\"onload\" value=\"true\" /></feature>",
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"xml": "<feature name=\"BuildInfo\"><param name=\"android-package\" value=\"org.apache.cordova.buildinfo.BuildInfo\" /></feature>",
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"xml": "<feature name=\"UniversalLinks\"><param name=\"android-package\" value=\"com.nordnetab.cordova.ul.UniversalLinksPlugin\" /><param name=\"onload\" value=\"true\" /></feature>",
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"xml": "<feature name=\"BrowserTab\"><param name=\"android-package\" value=\"com.google.cordova.plugin.browsertab.BrowserTab\" /></feature>",
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"xml": "<feature name=\"InAppBrowser\"><param name=\"android-package\" value=\"org.apache.cordova.inappbrowser.InAppBrowser\" /></feature>",
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"xml": "<feature name=\"LaunchMyApp\"><param name=\"android-package\" value=\"nl.xservices.plugins.LaunchMyApp\" /></feature>",
|
||||
"count": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -70,6 +90,16 @@
|
||||
"xml": "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />",
|
||||
"count": 1
|
||||
}
|
||||
],
|
||||
"/manifest/application/activity": [
|
||||
{
|
||||
"xml": "<intent-filter><action android:name=\"android.intent.action.VIEW\" /><category android:name=\"android.intent.category.DEFAULT\" /><category android:name=\"android.intent.category.BROWSABLE\" /><data android:scheme=\"com.firebase.cordova\" /></intent-filter>",
|
||||
"count": 1
|
||||
},
|
||||
{
|
||||
"xml": "<intent-filter><action android:name=\"android.intent.action.VIEW\" /><category android:name=\"android.intent.category.DEFAULT\" /><category android:name=\"android.intent.category.BROWSABLE\" /><data android:host=\" \" android:pathPrefix=\"/\" android:scheme=\" \" /></intent-filter>",
|
||||
"count": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -101,6 +131,25 @@
|
||||
},
|
||||
"ionic-plugin-keyboard": {
|
||||
"PACKAGE_NAME": "walljm.dynamicbible"
|
||||
},
|
||||
"cordova-plugin-buildinfo": {
|
||||
"PACKAGE_NAME": "walljm.dynamicbible"
|
||||
},
|
||||
"cordova-universal-links-plugin": {
|
||||
"PACKAGE_NAME": "walljm.dynamicbible"
|
||||
},
|
||||
"cordova-plugin-browsertab": {
|
||||
"PACKAGE_NAME": "walljm.dynamicbible"
|
||||
},
|
||||
"cordova-plugin-inappbrowser": {
|
||||
"PACKAGE_NAME": "walljm.dynamicbible"
|
||||
},
|
||||
"cordova-plugin-customurlscheme": {
|
||||
"URL_SCHEME": "com.firebase.cordova",
|
||||
"ANDROID_SCHEME": " ",
|
||||
"ANDROID_HOST": " ",
|
||||
"ANDROID_PATHPREFIX": "/",
|
||||
"PACKAGE_NAME": "walljm.dynamicbible"
|
||||
}
|
||||
},
|
||||
"dependent_plugins": {},
|
||||
@ -137,6 +186,47 @@
|
||||
"cordova.plugins.Keyboard"
|
||||
],
|
||||
"runs": true
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-buildinfo.BuildInfo",
|
||||
"file": "plugins/cordova-plugin-buildinfo/www/buildinfo.js",
|
||||
"pluginId": "cordova-plugin-buildinfo",
|
||||
"clobbers": [
|
||||
"BuildInfo"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-universal-links-plugin.universalLinks",
|
||||
"file": "plugins/cordova-universal-links-plugin/www/universal_links.js",
|
||||
"pluginId": "cordova-universal-links-plugin",
|
||||
"clobbers": [
|
||||
"universalLinks"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-browsertab.BrowserTab",
|
||||
"file": "plugins/cordova-plugin-browsertab/www/browsertab.js",
|
||||
"pluginId": "cordova-plugin-browsertab",
|
||||
"clobbers": [
|
||||
"cordova.plugins.browsertab"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-inappbrowser.inappbrowser",
|
||||
"file": "plugins/cordova-plugin-inappbrowser/www/inappbrowser.js",
|
||||
"pluginId": "cordova-plugin-inappbrowser",
|
||||
"clobbers": [
|
||||
"cordova.InAppBrowser.open",
|
||||
"window.open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-customurlscheme.LaunchMyApp",
|
||||
"file": "plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js",
|
||||
"pluginId": "cordova-plugin-customurlscheme",
|
||||
"clobbers": [
|
||||
"window.plugins.launchmyapp"
|
||||
]
|
||||
}
|
||||
],
|
||||
"plugin_metadata": {
|
||||
@ -146,6 +236,11 @@
|
||||
"cordova-plugin-splashscreen": "4.1.0",
|
||||
"cordova-plugin-statusbar": "2.4.1",
|
||||
"cordova-plugin-whitelist": "1.3.3",
|
||||
"ionic-plugin-keyboard": "2.2.1"
|
||||
"ionic-plugin-keyboard": "2.2.1",
|
||||
"cordova-plugin-buildinfo": "2.0.1",
|
||||
"cordova-universal-links-plugin": "1.2.1",
|
||||
"cordova-plugin-browsertab": "0.2.0",
|
||||
"cordova-plugin-inappbrowser": "2.0.1",
|
||||
"cordova-plugin-customurlscheme": "4.3.0"
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
def minSdkVersion = 16
|
||||
|
||||
if(cdvMinSdkVersion == null) {
|
||||
ext.cdvMinSdkVersion = minSdkVersion;
|
||||
} else if (cdvMinSdkVersion.toInteger() < minSdkVersion) {
|
||||
ext.cdvMinSdkVersion = minSdkVersion;
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
android {
|
||||
defaultConfig {
|
||||
buildConfigField "long", "_BUILDINFO_TIMESTAMP", System.currentTimeMillis() + "L"
|
||||
}
|
||||
}
|
@ -32,6 +32,47 @@ module.exports = [
|
||||
"cordova.plugins.Keyboard"
|
||||
],
|
||||
"runs": true
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-buildinfo.BuildInfo",
|
||||
"file": "plugins/cordova-plugin-buildinfo/www/buildinfo.js",
|
||||
"pluginId": "cordova-plugin-buildinfo",
|
||||
"clobbers": [
|
||||
"BuildInfo"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-universal-links-plugin.universalLinks",
|
||||
"file": "plugins/cordova-universal-links-plugin/www/universal_links.js",
|
||||
"pluginId": "cordova-universal-links-plugin",
|
||||
"clobbers": [
|
||||
"universalLinks"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-browsertab.BrowserTab",
|
||||
"file": "plugins/cordova-plugin-browsertab/www/browsertab.js",
|
||||
"pluginId": "cordova-plugin-browsertab",
|
||||
"clobbers": [
|
||||
"cordova.plugins.browsertab"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-inappbrowser.inappbrowser",
|
||||
"file": "plugins/cordova-plugin-inappbrowser/www/inappbrowser.js",
|
||||
"pluginId": "cordova-plugin-inappbrowser",
|
||||
"clobbers": [
|
||||
"cordova.InAppBrowser.open",
|
||||
"window.open"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cordova-plugin-customurlscheme.LaunchMyApp",
|
||||
"file": "plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js",
|
||||
"pluginId": "cordova-plugin-customurlscheme",
|
||||
"clobbers": [
|
||||
"window.plugins.launchmyapp"
|
||||
]
|
||||
}
|
||||
];
|
||||
module.exports.metadata =
|
||||
@ -43,7 +84,12 @@ module.exports.metadata =
|
||||
"cordova-plugin-splashscreen": "4.1.0",
|
||||
"cordova-plugin-statusbar": "2.4.1",
|
||||
"cordova-plugin-whitelist": "1.3.3",
|
||||
"ionic-plugin-keyboard": "2.2.1"
|
||||
"ionic-plugin-keyboard": "2.2.1",
|
||||
"cordova-plugin-buildinfo": "2.0.1",
|
||||
"cordova-universal-links-plugin": "1.2.1",
|
||||
"cordova-plugin-browsertab": "0.2.0",
|
||||
"cordova-plugin-inappbrowser": "2.0.1",
|
||||
"cordova-plugin-customurlscheme": "4.3.0"
|
||||
};
|
||||
// BOTTOM OF METADATA
|
||||
});
|
@ -0,0 +1,34 @@
|
||||
cordova.define("cordova-plugin-browsertab.BrowserTab", function(require, exports, module) {
|
||||
/*
|
||||
* Copyright 2016 Google Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
var exec = require('cordova/exec');
|
||||
|
||||
exports.isAvailable = function(success, error) {
|
||||
exec(success, error, 'BrowserTab', 'isAvailable', []);
|
||||
};
|
||||
|
||||
exports.openUrl = function(url, opt_error) {
|
||||
var doNothing = function() {};
|
||||
var error = (!opt_error) ? doNothing : opt_error;
|
||||
exec(doNothing, error, 'BrowserTab', 'openUrl', [url]);
|
||||
};
|
||||
|
||||
exports.close = function(opt_error) {
|
||||
var doNothing = function() {};
|
||||
var error = (!opt_error) ? doNothing : opt_error;
|
||||
exec(doNothing, error, 'BrowserTab', 'close', []);
|
||||
};
|
||||
|
||||
});
|
127
DynamicBibleIonic/platforms/android/platform_www/plugins/cordova-plugin-buildinfo/www/buildinfo.js
vendored
Normal file
127
DynamicBibleIonic/platforms/android/platform_www/plugins/cordova-plugin-buildinfo/www/buildinfo.js
vendored
Normal file
@ -0,0 +1,127 @@
|
||||
cordova.define("cordova-plugin-buildinfo.BuildInfo", function(require, exports, module) {
|
||||
/*
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Mikihiro Hayashi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
var exec = require('cordova/exec');
|
||||
var channel = require('cordova/channel');
|
||||
|
||||
module.exports = {
|
||||
packageName: '',
|
||||
basePackageName: '',
|
||||
displayName: '',
|
||||
name: '',
|
||||
version: '',
|
||||
versionCode: 0,
|
||||
debug: false,
|
||||
buildDate: '',
|
||||
installDate: '',
|
||||
buildType: '',
|
||||
flavor: ''
|
||||
};
|
||||
|
||||
channel.onCordovaReady.subscribe(function () {
|
||||
// module.exports.init();
|
||||
var args = [];
|
||||
|
||||
// Android Only
|
||||
// defined buildInfoBuildConfigClassName variable
|
||||
// BuildConfig class name.
|
||||
// ex: <script>var buildInfoBuildConfigClassName = 'org.apache.cordova.sample.BuildConfig';</script>
|
||||
if ('undefined' !== typeof buildInfoBuildConfigClassName) {
|
||||
args.push(buildInfoBuildConfigClassName);
|
||||
}
|
||||
|
||||
exec(
|
||||
function (res) {
|
||||
if (!res) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.packageName) {
|
||||
module.exports.packageName = res.packageName;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.basePackageName) {
|
||||
module.exports.basePackageName = res.basePackageName;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.displayName) {
|
||||
module.exports.displayName = res.displayName;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.name) {
|
||||
module.exports.name = res.name;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.version) {
|
||||
module.exports.version = res.version;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.versionCode) {
|
||||
module.exports.versionCode = res.versionCode;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.debug) {
|
||||
module.exports.debug = res.debug;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.buildType) {
|
||||
module.exports.buildType = res.buildType;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.flavor) {
|
||||
module.exports.flavor = res.flavor;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.buildDate) {
|
||||
if (res.buildDate instanceof Date) {
|
||||
module.exports.buildDate = res.buildDate;
|
||||
} else {
|
||||
module.exports.buildDate = new Date(res.buildDate);
|
||||
}
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.installDate) {
|
||||
if (res.installDate instanceof Date) {
|
||||
module.exports.installDate = res.installDate;
|
||||
} else {
|
||||
module.exports.installDate = new Date(res.installDate);
|
||||
}
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof res.windows) {
|
||||
module.exports.windows = res.windows;
|
||||
}
|
||||
},
|
||||
function (msg) {
|
||||
console.error('BuildInfo init fail');
|
||||
console.error(msg);
|
||||
},
|
||||
'BuildInfo',
|
||||
'init',
|
||||
args
|
||||
);
|
||||
});
|
||||
|
||||
});
|
@ -0,0 +1,49 @@
|
||||
cordova.define("cordova-plugin-customurlscheme.LaunchMyApp", function(require, exports, module) {
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
var remainingAttempts = 10;
|
||||
|
||||
function waitForAndCallHandlerFunction(url) {
|
||||
if (typeof window.handleOpenURL === "function") {
|
||||
// Clear the intent when we have a handler (note that this is only done when the preference 'CustomURLSchemePluginClearsAndroidIntent' is 'true' in config.xml
|
||||
cordova.exec(
|
||||
null,
|
||||
null,
|
||||
"LaunchMyApp",
|
||||
"clearIntent",
|
||||
[]);
|
||||
|
||||
window.handleOpenURL(url);
|
||||
} else if (remainingAttempts-- > 0) {
|
||||
setTimeout(function(){waitForAndCallHandlerFunction(url);}, 500);
|
||||
}
|
||||
}
|
||||
|
||||
function triggerOpenURL() {
|
||||
cordova.exec(
|
||||
waitForAndCallHandlerFunction,
|
||||
null,
|
||||
"LaunchMyApp",
|
||||
"checkIntent",
|
||||
[]);
|
||||
}
|
||||
|
||||
document.addEventListener("deviceready", triggerOpenURL, false);
|
||||
|
||||
var launchmyapp = {
|
||||
getLastIntent: function(success, failure) {
|
||||
cordova.exec(
|
||||
success,
|
||||
failure,
|
||||
"LaunchMyApp",
|
||||
"getLastIntent",
|
||||
[]);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = launchmyapp;
|
||||
|
||||
}());
|
||||
|
||||
});
|
@ -0,0 +1,117 @@
|
||||
cordova.define("cordova-plugin-inappbrowser.inappbrowser", function(require, exports, module) {
|
||||
/*
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you 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.
|
||||
*
|
||||
*/
|
||||
|
||||
(function () {
|
||||
// special patch to correctly work on Ripple emulator (CB-9760)
|
||||
if (window.parent && !!window.parent.ripple) { // https://gist.github.com/triceam/4658021
|
||||
module.exports = window.open.bind(window); // fallback to default window.open behaviour
|
||||
return;
|
||||
}
|
||||
|
||||
var exec = require('cordova/exec');
|
||||
var channel = require('cordova/channel');
|
||||
var modulemapper = require('cordova/modulemapper');
|
||||
var urlutil = require('cordova/urlutil');
|
||||
|
||||
function InAppBrowser () {
|
||||
this.channels = {
|
||||
'loadstart': channel.create('loadstart'),
|
||||
'loadstop': channel.create('loadstop'),
|
||||
'loaderror': channel.create('loaderror'),
|
||||
'exit': channel.create('exit')
|
||||
};
|
||||
}
|
||||
|
||||
InAppBrowser.prototype = {
|
||||
_eventHandler: function (event) {
|
||||
if (event && (event.type in this.channels)) {
|
||||
this.channels[event.type].fire(event);
|
||||
}
|
||||
},
|
||||
close: function (eventname) {
|
||||
exec(null, null, 'InAppBrowser', 'close', []);
|
||||
},
|
||||
show: function (eventname) {
|
||||
exec(null, null, 'InAppBrowser', 'show', []);
|
||||
},
|
||||
hide: function (eventname) {
|
||||
exec(null, null, 'InAppBrowser', 'hide', []);
|
||||
},
|
||||
addEventListener: function (eventname, f) {
|
||||
if (eventname in this.channels) {
|
||||
this.channels[eventname].subscribe(f);
|
||||
}
|
||||
},
|
||||
removeEventListener: function (eventname, f) {
|
||||
if (eventname in this.channels) {
|
||||
this.channels[eventname].unsubscribe(f);
|
||||
}
|
||||
},
|
||||
|
||||
executeScript: function (injectDetails, cb) {
|
||||
if (injectDetails.code) {
|
||||
exec(cb, null, 'InAppBrowser', 'injectScriptCode', [injectDetails.code, !!cb]);
|
||||
} else if (injectDetails.file) {
|
||||
exec(cb, null, 'InAppBrowser', 'injectScriptFile', [injectDetails.file, !!cb]);
|
||||
} else {
|
||||
throw new Error('executeScript requires exactly one of code or file to be specified');
|
||||
}
|
||||
},
|
||||
|
||||
insertCSS: function (injectDetails, cb) {
|
||||
if (injectDetails.code) {
|
||||
exec(cb, null, 'InAppBrowser', 'injectStyleCode', [injectDetails.code, !!cb]);
|
||||
} else if (injectDetails.file) {
|
||||
exec(cb, null, 'InAppBrowser', 'injectStyleFile', [injectDetails.file, !!cb]);
|
||||
} else {
|
||||
throw new Error('insertCSS requires exactly one of code or file to be specified');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = function (strUrl, strWindowName, strWindowFeatures, callbacks) {
|
||||
// Don't catch calls that write to existing frames (e.g. named iframes).
|
||||
if (window.frames && window.frames[strWindowName]) {
|
||||
var origOpenFunc = modulemapper.getOriginalSymbol(window, 'open');
|
||||
return origOpenFunc.apply(window, arguments);
|
||||
}
|
||||
|
||||
strUrl = urlutil.makeAbsolute(strUrl);
|
||||
var iab = new InAppBrowser();
|
||||
|
||||
callbacks = callbacks || {};
|
||||
for (var callbackName in callbacks) {
|
||||
iab.addEventListener(callbackName, callbacks[callbackName]);
|
||||
}
|
||||
|
||||
var cb = function (eventname) {
|
||||
iab._eventHandler(eventname);
|
||||
};
|
||||
|
||||
strWindowFeatures = strWindowFeatures || '';
|
||||
|
||||
exec(cb, cb, 'InAppBrowser', 'open', [strUrl, strWindowName, strWindowFeatures]);
|
||||
return iab;
|
||||
};
|
||||
})();
|
||||
|
||||
});
|
@ -0,0 +1,59 @@
|
||||
cordova.define("cordova-universal-links-plugin.universalLinks", function(require, exports, module) {
|
||||
var exec = require('cordova/exec'),
|
||||
channel = require('cordova/channel'),
|
||||
|
||||
// Reference name for the plugin
|
||||
PLUGIN_NAME = 'UniversalLinks',
|
||||
|
||||
// Default event name that is used by the plugin
|
||||
DEFAULT_EVENT_NAME = 'didLaunchAppFromLink';
|
||||
|
||||
// Plugin methods on the native side that can be called from JavaScript
|
||||
pluginNativeMethod = {
|
||||
SUBSCRIBE: 'jsSubscribeForEvent',
|
||||
UNSUBSCRIBE: 'jsUnsubscribeFromEvent'
|
||||
};
|
||||
|
||||
var universalLinks = {
|
||||
|
||||
/**
|
||||
* Subscribe to event.
|
||||
* If plugin already captured that event - callback will be called immidietly.
|
||||
*
|
||||
* @param {String} eventName - name of the event you are subscribing on; if null - default plugin event is used
|
||||
* @param {Function} callback - callback that is called when event is captured
|
||||
*/
|
||||
subscribe: function(eventName, callback) {
|
||||
if (!callback) {
|
||||
console.warn('Universal Links: can\'t subscribe to event without a callback');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!eventName) {
|
||||
eventName = DEFAULT_EVENT_NAME;
|
||||
}
|
||||
|
||||
var innerCallback = function(msg) {
|
||||
callback(msg.data);
|
||||
};
|
||||
|
||||
exec(innerCallback, null, PLUGIN_NAME, pluginNativeMethod.SUBSCRIBE, [eventName]);
|
||||
},
|
||||
|
||||
/**
|
||||
* Unsubscribe from the event.
|
||||
*
|
||||
* @param {String} eventName - from what event we are unsubscribing
|
||||
*/
|
||||
unsubscribe: function(eventName) {
|
||||
if (!eventName) {
|
||||
eventName = DEFAULT_EVENT_NAME;
|
||||
}
|
||||
|
||||
exec(null, null, PLUGIN_NAME, pluginNativeMethod.UNSUBSCRIBE, [eventName]);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = universalLinks;
|
||||
|
||||
});
|
@ -12,3 +12,6 @@ target=android-26
|
||||
android.library.reference.1=CordovaLib
|
||||
android.library.reference.2=app
|
||||
cordova.gradle.include.1=cordova-plugin-crosswalk-webview/dynamicbible-xwalk.gradle
|
||||
cordova.gradle.include.2=cordova-plugin-buildinfo/dynamicbible-BuildInfo.gradle
|
||||
cordova.system.library.1=com.android.support:customtabs:23.3.0
|
||||
cordova.gradle.include.3=cordova-plugin-browsertab/dynamicbible-BrowserTab.gradle
|
@ -34,28 +34,39 @@ export type SavedPage = {
|
||||
title: string,
|
||||
}
|
||||
@Injectable()
|
||||
export class ProfileService {
|
||||
export class ProfileService
|
||||
{
|
||||
localProfile: User;
|
||||
remoteProfile: fbObject<User> | null;
|
||||
remoteLoggedIn: boolean;
|
||||
isWeb: boolean;
|
||||
|
||||
constructor(
|
||||
private local: Storage
|
||||
, private db: AngularFireDatabase
|
||||
, public fbAuth: AngularFireAuth
|
||||
, public firebaseAuth: AngularFireAuth
|
||||
)
|
||||
{
|
||||
this.isWeb = (document.URL.startsWith('http') || !document.URL.startsWith('http://localhost:8080'));
|
||||
|
||||
console.log('Setting up default user initially');
|
||||
this.fbAuth.authState.subscribe(state => this.subscribeToRemoteProfile(db, state));
|
||||
let localObserver = this.userObserver().subscribe(
|
||||
user => {
|
||||
user =>
|
||||
{
|
||||
this.update(user);
|
||||
this.localProfile = user;
|
||||
},
|
||||
error => console.log(error));
|
||||
error => console.log(error)
|
||||
);
|
||||
|
||||
this.firebaseAuth.authState.subscribe(state => this.subscribeToRemoteProfile(this.db, state));
|
||||
|
||||
}
|
||||
|
||||
userObserver(): Observable<User> {
|
||||
return Observable.fromPromise(this.local.get('profile')).map(json_profile => {
|
||||
userObserver(): Observable<User>
|
||||
{
|
||||
return Observable.fromPromise(this.local.get('profile')).map(json_profile =>
|
||||
{
|
||||
let t = this.profile();
|
||||
|
||||
if (json_profile !== null) t = JSON.parse(json_profile);
|
||||
@ -63,13 +74,14 @@ export class ProfileService {
|
||||
});
|
||||
}
|
||||
|
||||
profile(): User {
|
||||
profile(): User
|
||||
{
|
||||
if (!this.localProfile)
|
||||
{
|
||||
console.log('Initializing default user');
|
||||
this.localProfile = ProfileService.createDefaultUser();
|
||||
}
|
||||
console.log('Returning Profile with user: ' + this.localProfile);
|
||||
|
||||
return this.localProfile
|
||||
}
|
||||
|
||||
@ -91,15 +103,27 @@ export class ProfileService {
|
||||
|
||||
handleRemotePreferenceChange(user: User)
|
||||
{
|
||||
if (user) {
|
||||
if (user)
|
||||
{
|
||||
console.log('handling remote settings for user %s', user.username);
|
||||
if (!user.saved_pages) user.saved_pages = [];
|
||||
if (!user.items) user.items = [];
|
||||
|
||||
// merge the items and the saved_pages, so they don't loose anything.
|
||||
if (this.localProfile.items.length > 0)
|
||||
user.items.concat(this.localProfile.items);
|
||||
|
||||
if (this.localProfile.saved_pages.length > 0)
|
||||
user.saved_pages.concat(this.localProfile.saved_pages);
|
||||
|
||||
this.localProfile = user;
|
||||
console.log('Stashed remote changes locally');
|
||||
// We only save the local change here since this is an update from our remote profile.
|
||||
this.localSave();
|
||||
console.log('Saved remote changes locally');
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
// No user is there so we should save our local to the remote.
|
||||
console.log('Saving local to remote for user %s', user.username);
|
||||
this.save()
|
||||
@ -109,17 +133,38 @@ export class ProfileService {
|
||||
|
||||
currentUser(): firebase.User
|
||||
{
|
||||
return this.fbAuth.auth.currentUser;
|
||||
return this.firebaseAuth.auth.currentUser;
|
||||
}
|
||||
|
||||
authenticate()
|
||||
{
|
||||
this.fbAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
|
||||
let self = this;
|
||||
let provider = new firebase.auth.GoogleAuthProvider();
|
||||
if (this.isWeb)
|
||||
{
|
||||
this.firebaseAuth.auth.signInWithPopup(provider);
|
||||
}
|
||||
else
|
||||
{
|
||||
firebase.auth().signInWithRedirect(provider).then(function ()
|
||||
{
|
||||
return firebase.auth().getRedirectResult();
|
||||
}).catch(function (error)
|
||||
{
|
||||
// Handle Errors here.
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
this.firebaseAuth.authState.subscribe(state => this.subscribeToRemoteProfile(this.db, state));
|
||||
this.remoteLoggedIn = true;
|
||||
|
||||
}
|
||||
|
||||
logout()
|
||||
{
|
||||
this.fbAuth.auth.signOut();
|
||||
this.firebaseAuth.auth.signOut(); // sign out
|
||||
this.remoteProfile = null; // inform the profile service not to bother
|
||||
this.remoteLoggedIn = false;
|
||||
}
|
||||
|
||||
private localSave()
|
||||
@ -132,7 +177,8 @@ export class ProfileService {
|
||||
// First we save our local copy of the settings.
|
||||
this.localSave();
|
||||
// If we have a remote profile then save it there too
|
||||
if (this.remoteProfile) {
|
||||
if (this.remoteProfile)
|
||||
{
|
||||
console.log('Saving remote settings profile for remote user id ' + this.profile().uid);
|
||||
this.remoteProfile.ref.set(this.profile());
|
||||
}
|
||||
|
25
DynamicBibleIonic/ul_web_hooks/android/android_web_hook.html
Normal file
25
DynamicBibleIonic/ul_web_hooks/android/android_web_hook.html
Normal file
@ -0,0 +1,25 @@
|
||||
<!--
|
||||
Besides activating Deep Links in the application - you need to enable indexing for your web pages.
|
||||
For that you should add <link /> tags in the <head> section of the web pages that you specified in config.xml.
|
||||
Doing so, you declare that this page should be openned in the mobile application instead of the browser.
|
||||
|
||||
Link tag is look like this:
|
||||
<link rel="alternate" href="android-app://<package_name>/<scheme>/<host>/<path>" />
|
||||
|
||||
More documentation could be found here:
|
||||
https://developer.android.com/training/app-indexing/enabling-app-indexing.html
|
||||
|
||||
For convenience, plugin generates the list of <link /> tags based on what you specified in the config.xml.
|
||||
You can just copy-paste them in the <header> section of the appropriate pages of your website.
|
||||
|
||||
-->
|
||||
|
||||
<head>
|
||||
<link rel="alternate" href="android-app://walljm.dynamicbible/https/bhgx5.app.goo.gl/XktS" />
|
||||
<link rel="alternate" href="android-app://walljm.dynamicbible/https/dynamicbible-7c6cf.firebaseapp.com/__/auth/callback" />
|
||||
|
||||
<!-- Your other stuff from the head tag -->
|
||||
</head>
|
||||
<body>
|
||||
<!-- Your page content -->
|
||||
</body>
|
@ -1,9 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr">
|
||||
<head>
|
||||
<script data-ionic="inject">
|
||||
(function(w){var i=w.Ionic=w.Ionic||{};i.version='3.9.0';i.angular='5.0.0';i.staticDir='build/';})(window);
|
||||
</script>
|
||||
<meta charset="UTF-8">
|
||||
<title>Dynamic Bible</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
|
4
build_android_debug.bat
Normal file
4
build_android_debug.bat
Normal file
@ -0,0 +1,4 @@
|
||||
cd DynamicBibleIonic
|
||||
call ionic cordova build android -- --buildConfig=./build.json
|
||||
cd ..
|
||||
copy DynamicBibleIonic\platforms\android\app\build\outputs\apk\armv7\debug\app-armv7-debug.apk DynamicBible-%1.apk /Y
|
Loading…
x
Reference in New Issue
Block a user