-
1. Re: How do I run/preview apk file for testing purposes before app store submission?
kerrishotts Jun 5, 2016 1:28 PM (in response to ettiennel77485580)Please share, if you can:
1. config.xml, index.html (at least the head and container where your app renders), index.js (at least where you start the app), project structure [with any identifying information removed if you wish]
2. devices and associated operating system versions you are testing on
3. You mention downloading the APK -- are you using PhoneGap Build? If you aren't, please list your exact build steps.
4. What versions of PhoneGap/Cordova & plugins you are using
5. Any frameworks (and versions) you are using
6. What kind of emulators were you trying to use?
-
2. Re: How do I run/preview apk file for testing purposes before app store submission?
ettiennel77485580 Jun 6, 2016 2:54 AM (in response to kerrishotts)Thanks for your reply.
1. config.xml
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" id="tv.kruiskyk.app" version="1.0.0"> <name>Kruiskyk Tv</name> <description>Kruiskyk Tv App</description> <author href="http://kruiskyk.tv" email="taken-out-for-scrapers">Kruiskyk</author> <content src="index.html"/> <preference name="DisallowOverscroll" value="true"/> <preference name="android-minSdkVersion" value="14"/> <plugin name="cordova-plugin-battery-status" source="npm" spec="~1.1.1"/> <plugin name="cordova-plugin-camera" source="npm" spec="~2.1.1"/> <plugin name="cordova-plugin-media-capture" source="npm" spec="~1.2.0"/> <plugin name="cordova-plugin-console" source="npm" spec="~1.0.2"/> <plugin name="cordova-plugin-contacts" source="npm" spec="~2.0.1"/> <plugin name="cordova-plugin-device" source="npm" spec="~1.1.1"/> <plugin name="cordova-plugin-device-motion" source="npm" spec="~1.2.0"/> <plugin name="cordova-plugin-device-orientation" source="npm" spec="~1.0.2"/> <plugin name="cordova-plugin-dialogs" source="npm" spec="~1.2.0"/> <plugin name="cordova-plugin-file" source="npm" spec="~4.1.1"/> <plugin name="cordova-plugin-file-transfer" source="npm" spec="~1.5.0"/> <plugin name="cordova-plugin-geolocation" source="npm" spec="~2.1.0"/> <plugin name="cordova-plugin-globalization" source="npm" spec="~1.0.3"/> <plugin name="cordova-plugin-inappbrowser" source="npm" spec="~1.3.0"/> <plugin name="cordova-plugin-media" source="npm" spec="~2.2.0"/> <plugin name="cordova-plugin-network-information" source="npm" spec="~1.2.0"/> <plugin name="cordova-plugin-splashscreen" source="npm" spec="~3.2.1"/> <plugin name="cordova-plugin-statusbar" source="npm" spec="~2.1.2"/> <plugin name="cordova-plugin-vibration" source="npm" spec="~2.1.0"/> <plugin name="cordova-plugin-whitelist" source="npm" spec="~1.2.1"/> <icon src="icon.png"/> <platform name="android"> <icon src="www/res/icon/android/drawable-ldpi-icon.png" density="ldpi"/> <icon src="www/res/icon/android/drawable-mdpi-icon.png" density="mdpi"/> <icon src="www/res/icon/android/drawable-hdpi-icon.png" density="hdpi"/> <icon src="www/res/icon/android/drawable-xhdpi-icon.png" density="xhdpi"/> <icon src="www/res/icon/android/drawable-xxhdpi-icon.png" density="xxhdpi"/> <icon src="www/res/icon/android/drawable-xxxhdpi-icon.png" density="xxxhdpi"/> <splash src="www/res/screen/android/drawable-land-ldpi-screen.png" density="land-ldpi"/> <splash src="www/res/screen/android/drawable-land-mdpi-screen.png" density="land-mdpi"/> <splash src="www/res/screen/android/drawable-land-hdpi-screen.png" density="land-hdpi"/> <splash src="www/res/screen/android/drawable-land-xhdpi-screen.png" density="land-xhdpi"/> <splash src="www/res/screen/android/drawable-land-xxhdpi-screen.png" density="land-xxhdpi"/> <splash src="www/res/screen/android/drawable-land-xxxhdpi-screen.png" density="land-xxxhdpi"/> <splash src="www/res/screen/android/drawable-port-ldpi-screen.png" density="port-ldpi"/> <splash src="www/res/screen/android/drawable-port-mdpi-screen.png" density="port-mdpi"/> <splash src="www/res/screen/android/drawable-port-hdpi-screen.png" density="port-hdpi"/> <splash src="www/res/screen/android/drawable-port-xhdpi-screen.png" density="port-xhdpi"/> <splash src="www/res/screen/android/drawable-port-xxhdpi-screen.png" density="port-xxhdpi"/> <splash src="www/res/screen/android/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/> </platform> <platform name="ios"> <icon src="www/res/icon/ios/icon.png" platform="ios" width="57" height="57"/> <icon src="www/res/icon/ios/[email protected]" platform="ios" width="114" height="114"/> <icon src="www/res/icon/ios/icon-40.png" platform="ios" width="40" height="40"/> <icon src="www/res/icon/ios/[email protected]" platform="ios" width="80" height="80"/> <icon src="www/res/icon/ios/icon-50.png" platform="ios" width="50" height="50"/> <icon src="www/res/icon/ios/[email protected]" platform="ios" width="100" height="100"/> <icon src="www/res/icon/ios/icon-60.png" platform="ios" width="60" height="60"/> <icon src="www/res/icon/ios/[email protected]" platform="ios" width="120" height="120"/> <icon src="www/res/icon/ios/[email protected]" platform="ios" width="180" height="180"/> <icon src="www/res/icon/ios/icon-72.png" platform="ios" width="72" height="72"/> <icon src="www/res/icon/ios/[email protected]" platform="ios" width="144" height="144"/> <icon src="www/res/icon/ios/icon-76.png" platform="ios" width="76" height="76"/> <icon src="www/res/icon/ios/[email protected]" platform="ios" width="152" height="152"/> <icon src="www/res/icon/ios/icon-small.png" platform="ios" width="29" height="29"/> <icon src="www/res/icon/ios/[email protected]" platform="ios" width="58" height="58"/> <icon src="www/res/icon/ios/[email protected]" platform="ios" width="87" height="87"/> <splash src="www/res/screen/ios/Default-568h@2x~iphone.png" platform="ios" width="640" height="1136"/> <splash src="www/res/screen/ios/Default-667h.png" platform="ios" width="750" height="1334"/> <splash src="www/res/screen/ios/Default-736h.png" platform="ios" width="1242" height="2208"/> <splash src="www/res/screen/ios/Default-Landscape-736h.png" platform="ios" width="2208" height="1242"/> <splash src="www/res/screen/ios/Default-Landscape@2x~ipad.png" platform="ios" width="2048" height="1536"/> <splash src="www/res/screen/ios/Default-Landscape~ipad.png" platform="ios" width="1024" height="768"/> <splash src="www/res/screen/ios/Default-Portrait@2x~ipad.png" platform="ios" width="1536" height="2048"/> <splash src="www/res/screen/ios/Default-Portrait~ipad.png" platform="ios" width="768" height="1024"/> <splash src="www/res/screen/ios/Default@2x~iphone.png" platform="ios" width="640" height="960"/> <splash src="www/res/screen/ios/Default~iphone.png" platform="ios" width="320" height="480"/> </platform> <platform name="wp8"> <icon src="www/res/icon/wp8/ApplicationIcon.png" platform="wp8" width="99" height="99"/> <icon src="www/res/icon/wp8/Background.png" platform="wp8" width="159" height="159"/> <splash src="www/res/screen/wp8/screen-portrait.jpg" platform="wp8" width="768" height="1280"/> </platform> <platform name="windows"> <icon src="www/res/icon/windows/Square150x150Logo.scale-100.png" platform="windows" width="150" height="150"/> <icon src="www/res/icon/windows/Square30x30Logo.scale-100.png" platform="windows" width="30" height="30"/> <icon src="www/res/icon/windows/StoreLogo.scale-100.png" platform="windows" width="50" height="50"/> <splash src="www/res/screen/windows/SplashScreen.scale-100.png" platform="windows" width="620" height="300"/> <icon src="www/res/icon/windows/StoreLogo.scale-240.png" platform="windows" width="120" height="120"/> <icon src="www/res/icon/windows/Square44x44Logo.scale-100.png" platform="windows" width="44" height="44"/> <icon src="www/res/icon/windows/Square44x44Logo.scale-240.png" platform="windows" width="106" height="106"/> <icon src="www/res/icon/windows/Square70x70Logo.scale-100.png" platform="windows" width="70" height="70"/> <icon src="www/res/icon/windows/Square71x71Logo.scale-100.png" platform="windows" width="71" height="71"/> <icon src="www/res/icon/windows/Square71x71Logo.scale-240.png" platform="windows" width="170" height="170"/> <icon src="www/res/icon/windows/Square150x150Logo.scale-240.png" platform="windows" width="360" height="360"/> <icon src="www/res/icon/windows/Square310x310Logo.scale-100.png" platform="windows" width="310" height="310"/> <icon src="www/res/icon/windows/Wide310x150Logo.scale-100.png" platform="windows" width="310" height="150"/> <icon src="www/res/icon/windows/Wide310x150Logo.scale-240.png" platform="windows" width="744" height="360"/> <splash src="www/res/screen/windows/SplashScreenPhone.scale-240.png" platform="windows" width="1152" height="1920"/> </platform> <access origin="http://kruiskyk.tv" subdomains="true"/> <allow-intent href="http://*/*"/> <allow-intent href="https://*/*"/> <allow-intent href="tel:*"/> <allow-intent href="sms:*"/> <allow-intent href="mailto:*"/> <allow-intent href="geo:*"/> <platform name="android"> <allow-intent href="market:*"/> </platform> <platform name="ios"> <allow-intent href="itms:*"/> <allow-intent href="itms-apps:*"/> </platform> </widget>
index.html
<!DOCTYPE html> <!-- Copyright (c) 2012-2016 Adobe Systems Incorporated. All rights reserved. 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. --> <html> <head> <meta charset="utf-8" /> <meta name="format-detection" content="telephone=no" /> <meta name="msapplication-tap-highlight" content="no" /> <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" /> <!-- This is a wide open CSP declaration. To lock this down for production, see below. --> <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *" /> <!-- Good default declaration: * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly * Disables use of eval() and inline scripts in order to mitigate risk of XSS vulnerabilities. To change this: * Enable inline JS: add 'unsafe-inline' to default-src * Enable eval(): add 'unsafe-eval' to default-src * Create your own at http://cspisawesome.com --> <!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: 'unsafe-inline' https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *" /> --> <link rel="stylesheet" type="text/css" href="css/index.css" /> <title>Kruiskyk Tv App</title> <script> document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { // Now safe to use the Codova API window.location="http://kruiskyk.tv"; } </script> </head> <body> <div class="app"> <h1>Kruiskyk Tv</h1> <div id="deviceready" class="blink"> <p class="event listening">Besig om te laai...</p> <p class="event received">Goeie Nuus In Jou Taal</p> </div> </div> <script type="text/javascript" src="cordova.js"></script> <script type="text/javascript" src="js/index.js"></script> <script type="text/javascript"> app.initialize(); </script> </body> </html>index.js
/* * 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. */ var app = { // Application Constructor initialize: function() { this.bindEvents(); }, // Bind Event Listeners // // Bind any events that are required on startup. Common events are: // 'load', 'deviceready', 'offline', and 'online'. bindEvents: function() { document.addEventListener('deviceready', this.onDeviceReady, false); }, // deviceready Event Handler // // The scope of 'this' is the event. In order to call the 'receivedEvent' // function, we must explicitly call 'app.receivedEvent(...);' onDeviceReady: function() { app.receivedEvent('deviceready'); }, // Update DOM on a Received Event receivedEvent: function(id) { var parentElement = document.getElementById(id); var listeningElement = parentElement.querySelector('.listening'); var receivedElement = parentElement.querySelector('.received'); listeningElement.setAttribute('style', 'display:none;'); receivedElement.setAttribute('style', 'display:block;'); console.log('Received Event: ' + id); } };2. Windows 7 and a Samsung GT-S7580 Mobile Device.
3. Yes, I am using PhoneGap Build.
4. Phonegap v0.3.3 and no additional plugins.
5. No frameworks.
6. Bluestacks, Genymotion, Droid4x
Thank you very much.
-
3. Re: How do I run/preview apk file for testing purposes before app store submission?
kerrishotts Jun 6, 2016 9:26 AM (in response to ettiennel77485580)You're taking an odd route to launching an external site in PhoneGap, but I think your issue is the misconfiguration of your whitelist for this purpose. See https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/#navigation-w hitelist . In short, you need an allow-navigation tag for the domain you wish to redirect to.
That said, I highly advise against doing this: PhoneGap is not intended to be used simply as a redirect to an external site, and Apple will reject if you attempt to submit an app that does this. Generally a home page bookmark will suffice in these cases.
Instead, keep as much of your code local and use XHR (AJAX) to communicate with your backend. If you need hot code pushes, you can do that (CodePush).
-
4. Re: How do I run/preview apk file for testing purposes before app store submission?
ettiennel77485580 Jun 7, 2016 1:41 AM (in response to kerrishotts)Thank you very much for your good advice and I do agree with your suggestions