What platform are you building for?
Android
What framework are you building with?
Cordova
What is your build ID?
7de5e952-ca3f-485d-8d8d-6d366d061da8
What is your error message?
No error message, bundle stalls and fails on first install.
Please describe the issue:
Hi Volt Team!
I have been seeing an error that has me puzzled. It’s not the traditional error but I was hoping someone from the team may be able to shed some light. I am able to consistently build package without error using Nimble Studio and Volt Builder. However when I install the package on the 1st attempt I see a Google Play Protect scan modal. It appears for a few seconds and then continues to install the apk. And then it just stalls…
It shows the “Installing…” message but never completes. - If I swipe up to cancel the install and try again, it works without the “Play Protect Scan” and completes perfectly.
Any help on this issue would be appreciated. I’m installing on a Galaxy Note 10, Android 12.
Thanks
Are you able to share your config.xml so we can take a look?
Sure.. It’s auto-generated for me.
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.nimblejs.calendar" version="1.1" xmlns:android="http://schemas.android.com/apk/res/android" xmlns="http://www.w3.org/ns/widgets">
<name>Pro Scheduler</name>
<description>Created with nimble-ide v5 for Javascript.</description>
<author email="nimblejs@nimble-ide.com" href="https://www.nimble-ide.com">
Tyrone W. Lee
</author>
<content src="index.html" />
<preference name="DisallowOverscroll" value="true" />
<preference name="android-targetSdkVersion" value="34" />
<preference name="AppendUserAgent" value="Nimble v5.0 (Mobile)" />
<preference name="orientation" value="default" />
<preference name="SplashScreenDelay" value="2000" />
<preference name="AutoHideSplashScreen" value="true" />
<preference name="permissions" value="none" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#000000" />
<preference name="StatusBarStyle" value="lightcontent" />
<engine name="android" spec="~13.0.0" />
<platform name="electron">
<engine name="electron" spec="~3.1.0" />
</platform>
<platform name="ios">
<engine name="ios" spec="~8.0.0" />
<preference name="WKWebViewOnly" value="true" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
</platform>
<plugin name="cordova-plugin-android-permissions" source="npm" />
<plugin name="cordova-plugin-battery-status" source="npm" />
<plugin name="cordova-plugin-camera" source="npm" />
<plugin name="cordova-plugin-media" source="npm" />
<plugin name="cordova-plugin-device" source="npm" />
<plugin name="cordova-plugin-screen-orientation" source="npm" />
<plugin name="cordova-plugin-geolocation" source="npm" spec="~4.1.0" />
<plugin name="cordova-plugin-globalization" source="npm" />
<plugin name="cordova-plugin-vibration" source="npm" />
<plugin name="cordova-plugin-network-information" source="npm" spec="~3.0.0" />
<plugin name="cordova-plugin-file" source="npm" />
<plugin name="cordova-plugin-image-resizer" source="npm" />
<platform name="android">
<allow-intent href="market:*" />
<preference name="AndroidXEnabled" value="true" />
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application/activity">
<application android:exported="true" />
</edit-config>
<preference name="AndroidWindowSplashScreenAnimatedIcon" value="res/icon.png" />
<preference name="AndroidWindowSplashScreenBackground" value="#000000" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<config-file target="AndroidManifest.xml" mode="merge" parent="/manifest">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
</config-file>
</platform>
<icon src="res/icon.png" />
<splash src="res/splash.png" />
<access origin="http://www.nimble-ide.com" />
<access origin="https://www.nimble-ide.com" />
<allow-navigation href="http://www.nimble-ide.com/*" />
<allow-navigation href="https://www.nimble-ide.com/*" />
<allow-intent href="http://www.nimble-ide.com/*" />
<allow-intent href="https://www.nimble-ide.com/*" />
<access origin="*" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<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>
Are you able to test with another device? That device is old and no longer receiving updates for the last 2 years. This may be a bug that’s been fixed on supported devices. We haven’t heard of those symptoms here.
You mention you’re installed an APK - so you are bypassing the play store?
I will try to test on another device. After the build completes, I just snapshot the QR code to install. It appears to be the “scan” that is stalling/failing. When the modal popup shows, you have like 3-5 seconds to stop the scan. If I click fast enough to stop the scan it works fine.
If I can’t click before the timeout, it starts the scan but never finishes and stalls out. Is there a way to increase the delay, or stop the Play Protect scan for this old device?
Unfortunately I can’t find any mention of this. Are you able to connect to the device with ADB and see logs? That might give you an idea of what’s going wrong.