I am learning about capacitorjs, and trying to build a simple android app using it. I created a new capacitorjs project with npm init @capacitor/app@latest. I am using vanilla html/css/js and wrote a static webpage (index.html) as a test:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My App</title>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
I only modified the src/index.html file and didn't change anything else.
After installing the necessary libraries, I can run the web app with npm start. But when I run npx cap run android, emulator boots up and gets stuck at the capacitor splash screen. Appearantly, inital src/index.html that came after npm init @capacitor/app@latest worked just fine.
npx cap run android completes without any errors. Building and running from Android Studio also gave no errors. Logcat is here:
2025-07-20 18:13:46.262 9014-9014 nativeloader com.example.app D Configuring clns-9 for other apk /data/app/~~c1Un-7qUkuBv9C_HyZ7K_A==/com.example.app-UyA2LePOf1PWFuo7tk8Mbw==/base.apk. target_sdk_version=35, uses_libraries=, library_path=/data/app/~~c1Un-7qUkuBv9C_HyZ7K_A==/com.example.app-UyA2LePOf1PWFuo7tk8Mbw==/lib/x86_64, permitted_path=/data:/mnt/expand:/data/user/0/com.example.app
2025-07-20 18:13:46.269 9014-9014 CompatChangeReporter com.example.app D Compat change id reported: 202956589; UID 10216; state: ENABLED
2025-07-20 18:13:46.273 9014-9014 com.example.app com.example.app I AssetManager2(0x7da51617aad8) locale list changing from [] to [en-US]
2025-07-20 18:13:46.279 9014-9014 GraphicsEnvironment com.example.app V Currently set values for:
2025-07-20 18:13:46.279 9014-9014 GraphicsEnvironment com.example.app V angle_gl_driver_selection_pkgs=[]
2025-07-20 18:13:46.279 9014-9014 GraphicsEnvironment com.example.app V angle_gl_driver_selection_values=[]
2025-07-20 18:13:46.279 9014-9014 GraphicsEnvironment com.example.app V com.example.app is not listed in per-application setting
2025-07-20 18:13:46.280 9014-9014 GraphicsEnvironment com.example.app V ANGLE allowlist from config:
2025-07-20 18:13:46.280 9014-9014 GraphicsEnvironment com.example.app V com.example.app is not listed in ANGLE allowlist or settings, returning default
2025-07-20 18:13:46.280 9014-9014 GraphicsEnvironment com.example.app V Neither updatable production driver nor prerelease driver is supported.
2025-07-20 18:13:46.294 9014-9014 CompatChangeReporter com.example.app D Compat change id reported: 279646685; UID 10216; state: ENABLED
2025-07-20 18:13:46.325 9014-9029 DisplayManager com.example.app I Choreographer implicitly registered for the refresh rate.
2025-07-20 18:13:46.342 9014-9014 com.example.app com.example.app I AssetManager2(0x7da51617dff8) locale list changing from [] to [en-US]
2025-07-20 18:13:46.370 9014-9014 AppCompatDelegate com.example.app D Checking for metadata for AppLocalesMetadataHolderService : Service not found
2025-07-20 18:13:46.370 9014-9014 com.example.app com.example.app I AssetManager2(0x7da516179b38) locale list changing from [] to [en-US]
2025-07-20 18:13:46.388 9014-9014 ashmem com.example.app E Pinning is deprecated since Android Q. Please use trim or other methods.
2025-07-20 18:13:46.473 9014-9029 EGL_emulation com.example.app I Opening libGLESv1_CM_emulation.so
2025-07-20 18:13:46.474 9014-9029 EGL_emulation com.example.app I Opening libGLESv2_emulation.so
2025-07-20 18:13:46.490 9014-9029 HWUI com.example.app W Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2025-07-20 18:13:46.491 9014-9029 HWUI com.example.app W Failed to initialize 101010-2 format, error = EGL_SUCCESS
2025-07-20 18:13:46.540 9014-9014 CompatChangeReporter com.example.app D Compat change id reported: 309578419; UID 10216; state: ENABLED
2025-07-20 18:13:46.542 9014-9014 DesktopModeFlags com.example.app D Toggle override initialized to: OVERRIDE_UNSET
2025-07-20 18:13:46.552 9014-9014 com.example.app com.example.app I hiddenapi: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (runtime_flags=0, domain=platform, api=unsupported) from Landroidx/appcompat/widget/ViewUtils; (domain=app) using reflection: allowed
2025-07-20 18:13:46.567 9014-9014 com.example.app com.example.app I AssetManager2(0x7da516177bf8) locale list changing from [] to [en-US]
2025-07-20 18:13:46.568 9014-9014 WebViewFactory com.example.app I Loading com.google.android.webview version 133.0.6943.137 (code 694313738)
2025-07-20 18:13:46.570 9014-9014 com.example.app com.example.app I AssetManager2(0x7da51617ba78) locale list changing from [] to [en-US]
2025-07-20 18:13:46.573 9014-9014 com.example.app com.example.app I AssetManager2(0x7da516180578) locale list changing from [] to [en-US]
2025-07-20 18:13:46.578 9014-9014 com.example.app com.example.app I AssetManager2(0x7da51617f8f8) locale list changing from [] to [en-US]
2025-07-20 18:13:46.582 9014-9014 com.example.app com.example.app I AssetManager2(0x7da51617f2b8) locale list changing from [] to [en-US]
2025-07-20 18:13:46.583 9014-9014 ResourcesManager com.example.app V The following library key has been added: ResourcesKey{ mHash=2163c306 mResDir=null mSplitDirs=[] mOverlayDirs=[] mLibDirs=[/data/app/~~ikJx6gAH63UXH03mvW23wg==/com.google.android.webview-u8VFtfrV8YzBcI7Nmn8_3w==/WebViewGoogle.apk,/data/app/~~pVOau1LY1DqCC2sIU7p2tQ==/com.google.android.trichromelibrary_694313738-f2TjWwq-HxOIbgaBYfmUNQ==/TrichromeLibrary.apk,/system_ext/framework/androidx.window.extensions.jar] mDisplayId=0 mOverrideConfig=v36 mCompatInfo={320dpi always-compat} mLoaders=[]}
2025-07-20 18:13:46.585 9014-9014 com.example.app com.example.app W Failed to find entry 'classes.dex': Entry not found
2025-07-20 18:13:46.588 9014-9014 nativeloader com.example.app D Configuring clns-10 for other apk /data/app/~~pVOau1LY1DqCC2sIU7p2tQ==/com.google.android.trichromelibrary_694313738-f2TjWwq-HxOIbgaBYfmUNQ==/TrichromeLibrary.apk. target_sdk_version=34, uses_libraries=ALL, library_path=/data/app/~~ikJx6gAH63UXH03mvW23wg==/com.google.android.webview-u8VFtfrV8YzBcI7Nmn8_3w==/lib/x86_64:/data/app/~~ikJx6gAH63UXH03mvW23wg==/com.google.android.webview-u8VFtfrV8YzBcI7Nmn8_3w==/WebViewGoogle.apk!/lib/x86_64:/data/app/~~pVOau1LY1DqCC2sIU7p2tQ==/com.google.android.trichromelibrary_694313738-f2TjWwq-HxOIbgaBYfmUNQ==/TrichromeLibrary.apk!/lib/x86_64, permitted_path=/data:/mnt/expand
2025-07-20 18:13:46.591 9014-9014 ApplicationLoaders com.example.app D Returning zygote-cached class loader: /system_ext/framework/androidx.window.extensions.jar
2025-07-20 18:13:46.597 9014-9014 nativeloader com.example.app D Configuring clns-11 for other apk /data/app/~~ikJx6gAH63UXH03mvW23wg==/com.google.android.webview-u8VFtfrV8YzBcI7Nmn8_3w==/WebViewGoogle.apk. target_sdk_version=34, uses_libraries=, library_path=/data/app/~~ikJx6gAH63UXH03mvW23wg==/com.google.android.webview-u8VFtfrV8YzBcI7Nmn8_3w==/lib/x86_64:/data/app/~~ikJx6gAH63UXH03mvW23wg==/com.google.android.webview-u8VFtfrV8YzBcI7Nmn8_3w==/WebViewGoogle.apk!/lib/x86_64:/data/app/~~pVOau1LY1DqCC2sIU7p2tQ==/com.google.android.trichromelibrary_694313738-f2TjWwq-HxOIbgaBYfmUNQ==/TrichromeLibrary.apk!/lib/x86_64, permitted_path=/data:/mnt/expand
2025-07-20 18:13:46.684 9014-9014 cr_WVCFactoryProvider com.example.app I version=133.0.6943.137 (694313738) minSdkVersion=29 isBundle=false multiprocess=true packageId=2
2025-07-20 18:13:46.685 9014-9014 com.example.app com.example.app I AssetManager2(0x7da516175998) locale list changing from [] to [en-US]
2025-07-20 18:13:46.702 9014-9014 nativeloader com.example.app D Load /data/app/~~pVOau1LY1DqCC2sIU7p2tQ==/com.google.android.trichromelibrary_694313738-f2TjWwq-HxOIbgaBYfmUNQ==/TrichromeLibrary.apk!/lib/x86_64/libmonochrome_64.so using class loader ns clns-11 (caller=/data/app/~~ikJx6gAH63UXH03mvW23wg==/com.google.android.webview-u8VFtfrV8YzBcI7Nmn8_3w==/WebViewGoogle.apk): ok
2025-07-20 18:13:46.705 9014-9014 nativeloader com.example.app D Load /system/lib64/libwebviewchromium_plat_support.so using class loader ns clns-11 (caller=/data/app/~~ikJx6gAH63UXH03mvW23wg==/com.google.android.webview-u8VFtfrV8YzBcI7Nmn8_3w==/WebViewGoogle.apk): ok
2025-07-20 18:13:46.724 9014-9034 chromium com.example.app E [0720/181346.712564:ERROR:variations_seed_loader.cc(39)] Seed missing signature.
2025-07-20 18:13:46.726 9014-9034 chromium com.example.app I [0720/181346.726587:INFO:variations_seed_loader.cc(67)] Failed to open file for reading.: No such file or directory (2)
2025-07-20 18:13:46.803 9014-9014 cr_LibraryLoader com.example.app I Successfully loaded native library
2025-07-20 18:13:46.807 9014-9014 cr_CachingUmaRecorder com.example.app I Flushed 6 samples from 6 histograms, 0 samples were dropped.
2025-07-20 18:13:46.813 9014-9014 cr_CombinedPProvider com.example.app I #registerProvider() provider:WV.C8@8eb4c2 isPolicyCacheEnabled:false policyProvidersSize:0
2025-07-20 18:13:46.816 9014-9014 cr_PolicyProvider com.example.app I #setManagerAndSource() 0
2025-07-20 18:13:46.855 9014-9014 cr_CombinedPProvider com.example.app I #linkNativeInternal() 1
2025-07-20 18:13:46.856 9014-9014 cr_AppResProvider com.example.app I #getApplicationRestrictionsFromUserManager() Bundle[EMPTY_PARCEL]
2025-07-20 18:13:46.856 9014-9014 cr_PolicyProvider com.example.app I #notifySettingsAvailable() 0
2025-07-20 18:13:46.856 9014-9014 cr_CombinedPProvider com.example.app I #onSettingsAvailable() 0
2025-07-20 18:13:46.856 9014-9014 cr_CombinedPProvider com.example.app I #flushPolicies()
2025-07-20 18:13:46.922 9014-9049 chromium com.example.app W [WARNING:dns_config_service_android.cc(81)] Failed to read DnsConfig.
2025-07-20 18:13:46.930 9014-9014 com.example.app com.example.app I AssetManager2(0x7da51617e638) locale list changing from [] to [en-US]
2025-07-20 18:13:46.933 9014-9014 com.example.app com.example.app I AssetManager2(0x7da516182e18) locale list changing from [] to [en-US]
2025-07-20 18:13:46.966 9014-9062 chromium com.example.app E [ERROR:simple_file_enumerator.cc(21)] opendir /data/user/0/com.example.app/cache/WebView/Default/HTTP Cache/Code Cache/js: No such file or directory (2)
2025-07-20 18:13:46.966 9014-9062 chromium com.example.app E [ERROR:simple_index_file.cc(613)] Could not reconstruct index from disk
2025-07-20 18:13:47.006 9014-9014 CompatChangeReporter com.example.app D Compat change id reported: 352594277; UID 10216; state: ENABLED
2025-07-20 18:13:47.109 9014-9014 Capacitor com.example.app D Starting BridgeActivity
2025-07-20 18:13:47.170 9014-9014 Capacitor com.example.app D Registering plugin instance: CapacitorCookies
2025-07-20 18:13:47.182 9014-9014 Capacitor com.example.app D Registering plugin instance: WebView
2025-07-20 18:13:47.185 9014-9014 Capacitor com.example.app D Registering plugin instance: CapacitorHttp
2025-07-20 18:13:47.186 9014-9014 Capacitor com.example.app D Registering plugin instance: Camera
2025-07-20 18:13:47.187 9014-9014 Capacitor com.example.app D Registering plugin instance: SplashScreen
2025-07-20 18:13:47.199 9014-9014 Capacitor com.example.app W Unable to read file at path public/plugins
2025-07-20 18:13:47.202 9014-9014 Capacitor com.example.app D Loading app at https://localhost
2025-07-20 18:13:47.232 9014-9056 cr_media com.example.app W BLUETOOTH_CONNECT permission is missing.
2025-07-20 18:13:47.233 9014-9056 cr_media com.example.app W getBluetoothAdapter() requires BLUETOOTH permission
2025-07-20 18:13:47.233 9014-9056 cr_media com.example.app W registerBluetoothIntentsIfNeeded: Requires BLUETOOTH permission
2025-07-20 18:13:47.251 9014-9014 Capacitor com.example.app D App started
2025-07-20 18:13:47.251 9014-9073 libc com.example.app W Access denied finding property "vendor.mesa.log"
2025-07-20 18:13:47.251 9014-9073 libc com.example.app W Access denied finding property "vendor.mesa.log.file"
2025-07-20 18:13:47.252 9014-9073 MESA com.example.app E Failed to open rendernode: No such file or directory
2025-07-20 18:13:47.259 9014-9014 Capacitor com.example.app D App resumed
2025-07-20 18:13:47.288 9014-9014 CompatChangeReporter com.example.app D Compat change id reported: 349153669; UID 10216; state: ENABLED
2025-07-20 18:13:47.290 9014-9014 HWUI com.example.app W Unknown dataspace 0
2025-07-20 18:13:47.294 9014-9073 libc com.example.app W Access denied finding property "vendor.mesa.vk.trace.per.submit"
2025-07-20 18:13:47.294 9014-9073 libc com.example.app W Access denied finding property "vendor.mesa.gallium.print.optio"
2025-07-20 18:13:47.294 9014-9073 libc com.example.app W Access denied finding property "vendor.mesa.vk.trace.frame"
2025-07-20 18:13:47.299 9014-9073 libc com.example.app W Access denied finding property "vendor.mesa.vk.wsi.headless.swa"
2025-07-20 18:13:47.314 9014-9050 Capacitor com.example.app D Handling local request: https://localhost/
2025-07-20 18:13:47.371 9014-9014 Choreographer com.example.app I Skipped 63 frames! The application may be doing too much work on its main thread.
2025-07-20 18:13:47.384 9014-9087 CameraManagerGlobal com.example.app I Connecting to camera service
2025-07-20 18:13:47.414 9014-9073 chromium com.example.app W [WARNING:viz_main_impl.cc(85)] VizNullHypothesis is disabled (not a warning)
2025-07-20 18:13:47.558 9014-9063 VideoCapabilities com.example.app W Unsupported mime video/apv
2025-07-20 18:13:47.559 9014-9063 VideoCapabilities com.example.app W Unsupported mime video/apv
2025-07-20 18:13:47.584 9014-9020 com.example.app com.example.app I Compiler allocated 5042KB to compile void android.view.ViewRootImpl.performTraversals()
2025-07-20 18:13:47.835 9014-9049 Capacitor com.example.app D Handling local request: https://localhost/favicon.ico
2025-07-20 18:13:53.288 9014-9097 ProfileInstaller com.example.app D Installing profile for com.example.app
Turns out, all I needed was to remove "launchAutoHide": false option from my capacitor.config.json. In my case, it was already set to false, though. From the capacitor documentation:
Hiding the Splash ScreenBy default, the Splash Screen is set to automatically hide after 500 ms.
If you want to be sure the splash screen never disappears before your app is ready, set launchAutoHide to false; the splash screen will then stay visible until manually hidden. For the best user experience, your app should call hide() as soon as possible.
If, instead, you want to show the splash screen for a fixed amount of time, set launchShowDuration in your Capacitor configuration file.