We're using Unity 2020.3.18f1 and Addressables 1.19.4 (we've also tried 1.18.15)
Google requires us to split the game up before uploading it to the google play store. We built the game into an .apk and an .obb file and after installing it, the game crashes immediately with Addressables errors.
Installation Procedure:
- Build the game with split binary option checked
- adb install game.apk
- adb push main.4.studio.shortsleeve.game.obb /sdcard/Android/obb/studio.shortsleeve.game/
I verify that the obb file is there, then I run the game and get the following errors. I've also tried the build & run option to make sure the OBB ends up in the correct location.
09-15 10:50:56.639 27740 2255 E Unity : RemoteProviderException : TextDataProvider : unable to load from url : jar:file:///data/app/~~689q54a8zSXXloEqeqgmbA==/studio.shortsleeve.voodoodetective-XMFOqP0J2uMakI-c6HOVJQ==/base.apk!/assets/aa/settings.json
09-15 10:50:56.639 27740 2255 E Unity : UnityWebRequest result : ProtocolError : HTTP/1.1 404 Not Found
09-15 10:50:56.639 27740 2255 E Unity : ResponseCode : 404, Method : GET
09-15 10:50:56.639 27740 2255 E Unity : url : jar:file:///data/app/~~689q54a8zSXXloEqeqgmbA==/studio.shortsleeve.voodoodetective-XMFOqP0J2uMakI-c6HOVJQ==/base.apk!/assets/aa/settings.json
09-15 10:50:56.639 27740 2255 E Unity :
09-15 10:50:56.639 27740 2255 E Unity : System.Action`2:Invoke(T1, T2)
09-15 10:50:56.639 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:set_OperationException(Exception)
09-15 10:50:56.639 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:Complete(TObject, Boolean, Exception, Boolean)
09-15 10:50:56.639 27740 2255 E Unity : UnityEngine.ResourceManagement.ResourceProviders.InternalOp:CompleteOperation(String, Exception)
09-15 10:50:56.639 27740 2255 E Unity : UnityEngine.ResourceManagement.ResourceProviders.InternalOp:RequestOperation_completed(AsyncOperation)
09-15 10:50:56.639 27740 2255 E Unity : System.Action`1:Invoke(T)
09-15 10:50:56.639 27740 2255 E Unity : UnityEngine.AsyncOperation:InvokeCompletionEvent()
09-15 10:50:56.639 27740 2255 E Unity :
09-15 10:50:56.640 27740 2255 E Unity : RuntimeData is null. Please ensure you have built the correct Player Content.
09-15 10:50:56.640 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.InitalizationObjectsOperation:Execute()
09-15 10:50:56.640 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:InvokeExecute()
09-15 10:50:56.640 27740 2255 E Unity : System.Action`1:Invoke(T)
09-15 10:50:56.640 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.<>c__DisplayClass57_0:<add_CompletedTypeless>b__0(AsyncOperationHandle`1)
09-15 10:50:56.640 27740 2255 E Unity : System.Action`1:Invoke(T)
09-15 10:50:56.640 27740 2255 E Unity : DelegateList`1:Invoke(T)
09-15 10:50:56.640 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:InvokeCompletionEvent()
09-15 10:50:56.640 27740 2255 E Unity : UnityEngine.ResourceManagement.ResourceManager:ExecuteDeferredCallbacks()
09-15 10:50:56.640 27740 2255 E Unity : UnityEngine.ResourceManagement.ResourceManager:Update(Single)
09-15 10:50:56.640 27740 2255 E Unity : System.Action`1:Invoke(T)
09-15 10:50:56.640 27740 2255 E Unity :
09-15 10:50:56.641 27740 2255 E Unity : OperationException : Addressables - Unable to load runtime data at location UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle`1[[UnityEngine.AddressableAssets.Initialization.ResourceManagerRuntimeData, Unity.Addressables, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]].
09-15 10:50:56.641 27740 2255 E Unity : System.Action`2:Invoke(T1, T2)
09-15 10:50:56.641 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:set_OperationException(Exception)
09-15 10:50:56.641 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:Complete(TObject, Boolean, Exception, Boolean)
09-15 10:50:56.641 27740 2255 E Unity : UnityEngine.AddressableAssets.Initialization.InitializationOperation:Execute()
09-15 10:50:56.641 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:InvokeExecute()
09-15 10:50:56.641 27740 2255 E Unity : System.Action`1:Invoke(T)
09-15 10:50:56.641 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.<>c__DisplayClass57_0:<add_CompletedTypeless>b__0(AsyncOperationHandle`1)
09-15 10:50:56.641 27740 2255 E Unity : System.Action`1:Invoke(T)
09-15 10:50:56.641 27740 2255 E Unity : DelegateList`1:Invoke(T)
09-15 10:50:56.641 27740 2255 E Unity : UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:InvokeCompletionEvent()
I've verified that the game runs when it's built into a standard .apk. As far as I am aware, the addressables library should be assigned to the auto-generated streaming assets pack by default. That's from an official Unity representative.
Since Addressables moves all content to StreamingAssets during a player build, by default all your Addressables content will be assigned to the auto-generated streaming assets pack. The sample project primarily demonstrates how to assign content to custom fast-follow or on-demand asset packs. We have also taken the approach of assigning any content meant for install-time delivery to the streaming assets pack.
But that doesn't seem to be the case? Or something else is going wrong? We're a little stumped over here and there's very little documentation. Any help would be appreciated.
UPDATE 1: All Resources.Load() calls are failing to load data too.