Can local EAS builds be submitted to the app store?

I successfully ran an EAS build locally with the help of a community member.

My goal was to see if a production only bug would not appear in an EAS build as per @wodin 's suggestion. When can we expect SDK 43? - #10 by wodin

However when I tried to submit the .aab file that was built to release on the app store I recieve the error “invalid file type” and the dashboard refuses to accept the file.

I looked around on the forums and documentation for any indication of extra steps but have failed to find them. Maybe app signing?

I would even be interested if I can just transfer the build to an android device to test if the bug was removed, however I didnt find a way to install the app from the .aab file. (though I’m new to android)

May have found something with this page, I’m going to try these instructions next:

local builds can be submitted to store,

May have found something with this page, I’m going to try these instructions next:

if the issue was with the signing I would expect that error would be different so using local credentials won’t change much

I would even be interested if I can just transfer the build to an android device to test if the bug was removed, however I didnt find a way to install the app from the .aab file. (though I’m new to android)

you can’t install aab on device, but you can try building apk and verify if it works on the device

maybe the file you are trying to submit is not apk/aab? try unzipping that file and check what is inside

2 Likes

@wkozyra

Unzipped the folder contained:

How can I build to apk with local EAS build?
I think I found the solution on Build APKs for Android Emulators and devices - Expo Documentation

This is correct content for app bundle. Can you show a screenshot of the error message when you upload that to the playstore?

Here is a screenshot

Also I managed to build an apk locally with EAS, however where the normal build fails in production opening the camera, now the EAS build fails in production confirming the image after the photo is taken =(. Neither of these issues occur in development.

Error logs during the crash:

11-04 10:46:03.469 12432  5623 E WakeLock: GCM_HB_ALARM release without a matched acquire!
11-04 10:46:03.498   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:03.614   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:03.731   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:03.847   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:03.964   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:04.080   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:04.196   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:04.313   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:04.430   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:04.546   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:04.662   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:04.778   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:04.895   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:05.011   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:05.015   663  1121 E CamComm1.0-MD: Mismatched tag type when updating entry enable (-2146762752) of type byte; got type int32 data instead 
11-04 10:46:05.015   663  1121 E CamComm1.0-MD: Mismatched tag type when updating entry is_main (-2146762751) of type byte; got type int32 data instead 
11-04 10:46:05.127   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:05.140   663 14817 E mm-camera: <CPP   ><ERROR> 2526: cpp_module_notify_add_stream: failed, non supported rotation angle 0
11-04 10:46:05.244   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:05.360   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:05.480   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:05.597   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:05.617   663 14920 E QCamera : <HAL><ERROR> handleInputBufferWithLock: 4301: Could not find input request for frame number 856
11-04 10:46:05.625   663 14923 E mm-still: startEncode:556] startEncode()
11-04 10:46:05.638   663 14925 E mm-still: Encode:1513] Encode done : output_size 5819
11-04 10:46:05.638   663 14925 E mm-still: EncodeComplete:808] Exif length: 7825
11-04 10:46:05.639   663 14925 E mm-still: DoCacheOps:354] failed with errno Invalid argument
11-04 10:46:05.641   663 14923 E mm-still: Stop:1157] Stop 
11-04 10:46:05.713   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:05.831   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:06.179   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:06.296   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:06.413   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:06.529   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:06.645   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:06.762   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:06.878   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:06.994   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:07.110   663 14882 E mm-camera: <MCT   ><ERROR> 475: mct_module_post_bus_msg: About to post MCT_BUS_MSG_ISP_SOF
11-04 10:46:07.236   663 14817 E mm-camera: <STATS_AF ><ERROR> 3456: af_port_handle_sensor_update: Depth_Err: actuator sensitivity: 0.000000 is invalid
11-04 10:46:07.240   663 14850 E mm-camera: <STATS_AF ><ERROR> 596: af_haf_default_mixer_active_algo_selection: ERROR! Unable to find active mixer algo !! 
11-04 10:46:07.240   663 14849 E mm-camera: <STATS_AEC ><ERROR> 579: aec_led_cal_apply_calibration: Calibrate data size 0 not expected with tuning size: 0
11-04 10:46:07.240   663 14817 E mm-camera: <IFACE ><ERROR> 2264: iface_util_set_chromatix: iface_util_set_chromatix:2264 failed: iface_hvx_open rc 0
11-04 10:46:07.336   473   473 E ANDR-PERF-TARGET: Error: Invalid logical cluster id 1
11-04 10:46:07.336   473   473 E ANDR-PERF-TARGET: Error: Invalid logical cluster id 1
11-04 10:46:07.337   473   489 E ANDR-PERF-RESOURCEQS: Failed to apply optimization [2, 1]
11-04 10:46:07.338   473   489 E ANDR-PERF-RESOURCEQS: Failed to apply optimization [2, 0]
11-04 10:46:07.377   663 14948 E quadracfa_dummy: inside dummy remosaic_deinit 1
11-04 10:46:07.440   663  1121 E mm-camera: <MCT   ><ERROR> 179: stop_sof_check_thread: Returning as SOF timer thread not yet initialized
11-04 10:46:07.477 14727 14727 E AndroidRuntime: FATAL EXCEPTION: main
11-04 10:46:07.477 14727 14727 E AndroidRuntime: Process: org.ridvan.shedspread, PID: 14727
11-04 10:46:07.477 14727 14727 E AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {org.ridvan.shedspread/org.ridvan.shedspread.MainActivity}: java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter mImageLoader
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.app.ActivityThread.deliverResults(ActivityThread.java:4399)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.app.ActivityThread.handleSendResult(ActivityThread.java:4441)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1817)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:106)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:193)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6746)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: Caused by: java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter mImageLoader
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at expo.modules.imagepicker.exporters.CompressionImageExporter.<init>(Unknown Source:2)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at expo.modules.imagepicker.ImagePickerModule.handleOnActivityResult(ImagePickerModule.kt:396)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at expo.modules.imagepicker.ImagePickerModule.onActivityResult(ImagePickerModule.kt:314)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at expo.modules.adapters.react.services.UIManagerModuleWrapper$4.onActivityResult(UIManagerModuleWrapper.java:165)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at com.facebook.react.bridge.ReactContext.onActivityResult(ReactContext.java:305)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at com.facebook.react.ReactInstanceManager.onActivityResult(ReactInstanceManager.java:762)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at com.facebook.react.ReactDelegate.onActivityResult(ReactDelegate.java:90)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at com.facebook.react.ReactActivityDelegate.onActivityResult(ReactActivityDelegate.java:112)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at expo.modules.ReactActivityDelegateWrapper.onActivityResult(ReactActivityDelegateWrapper.kt:80)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at com.facebook.react.ReactActivity.onActivityResult(ReactActivity.java:68)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.app.Activity.dispatchActivityResult(Activity.java:7476)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	at android.app.ActivityThread.deliverResults(ActivityThread.java:4392)
11-04 10:46:07.477 14727 14727 E AndroidRuntime: 	... 11 more
11-04 10:46:07.588  1128  1392 E InputDispatcher: channel '194bf35 org.ridvan.shedspread/org.ridvan.shedspread.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
1

you would have to share the code for us to debug that. you can run expo run:android locally to see if you can reproduce it

Alright, any ideas regarding the .aab bundling?

You can convert it to an APK using bundletool.

Something like:

bundletool build-apks --bundle=/MyApp/my_app.aab \
    --output=/MyApp/my_app.apks \
    --ks=/MyApp/keystore.jks --ks-pass=file:/MyApp/keystore.pwd \
    --ks-key-alias=MyKeyAlias --key-pass=file:/MyApp/key.pwd

You will need to download your keystore using eas credentials. Instead of storing the passwords in a file you can specify them on the command line using pass:<yourpassword> instead of file:/path/to/file

There’s also:

bundletool install-apks --apks=/MyApp/my_app.apks