Building bundles not same on different machine. Can't make patch System.

I’m using Jenkins build system.
Bundle and iOS App are build on different machine.

Build bundle result is not same. it occurred only locale bundle.
But all remote package type bundles have same file name.
Of course, all project assets are the same.

It make different catalog.json. and it can’t make contents update and app update.

[Build Infomation]
Unity 2020.3.20f1
for iOS
Addressable Package Ver : 1.18.19, 1.19.19, 1.20.5

I have spent several weeks to find solution for this.
And Search and read this forums aticles. like below…

Anyone have solution? please

Hi,
you can use WebExtract and binary2text to see which part of the assetbundle changes. Here is the doc: https://support.unity.com/hc/en-us/articles/217123266-How-do-I-determine-what-is-in-my-Scene-bundle-

1 Like

Thank you a lot ! Alan-Liu
I found changed position with your guide. :slight_smile:
8412393--1111884--capture_2 2022-09-03 215759.png

8412393--1111890--capture_3 2022-09-03 215759.png

I guess that…
The changed position is part of the shader.
8412393--1111893--capture_1 2022-09-03 215759.png

I will find out what Shader it is.
And I try to find the cause of the change.

Thank you a lot. again. Alan-Liu

It seems that compiled result of a shader changed. You can use AssetStudio to extract this shader from bundle to see why it changed.

1 Like

I also refer to your written article:

But, some kind of weird…

If I search for the “m_GlobalKeywordMask” variable shown in the screenshot above.
This variable found from AssetStudio Script Shader.cs… by googling.

I can’t find anything like that script or variable in my project.
I couldn’t guess … How Can Be?

8412675--1111947--2022-09-04 001057.png

m_GlobalKeywordMask is the data in the engine side, you can’t edit it directly. To see it in the editor, you can use Debug mode of Inspector.

And compressedBlob contains the compiled result of the shader, so investigating it may give you more clues about why the bundle changed.

1 Like

I delete previent reply.

After I have get some sleep.
I found that it have mistake in my checking.
:sweat_smile:

In your attached images, the different file is the .resource file. As far as I know, .resource file contains audio data from AudioClip

EDIT:
AssetStudio has a feature to export the all/selected assets(Menu: Export → Selected Assets). Then you can compare the exported files.

If there is still no difference in those files, maybe the difference is in some data only used by the engine side (like the EditorDataHash for the shader asset). In this case, you can use AssetStudio’s source code to debug the deserializing process to find out which asset changed.

1 Like

After TMpro shader version updated.
Bundle still have difference. But WebExtract result file status has changed.

[Before]
.txt file via binary2text has difference.

[Now]
.resource file has difference.

Thank you a lot. Alan-Liu.:slight_smile:
I will try to check with AudioClip Assets.

Unfortunately
I did not find any significant difference in AudioClip assets.

Probably now…
I have to make a decision.
I will change the group configuration so that local bundle is not used.

If a random and unpredictable local bundle change occurs as above,

As far as I know,
when the first Addressable Asset is loaded,
the Remote catalog.json is automatically downloaded and updated inside the Addressable System,
so the change in the local bundle file name means that the local bundle cannot be found, and therefore the asset cannot be read.

Usually, the local bundle has assets used for the initial start of the app,
so it means that it does not work from the start of the app.

In the actual service phase, it is not possible to proceed with this foreseeable risk.

Although the Unity company promotes the Addressable system, It’s not good.

At first, I thought it was because I was a beginner in Addressable system.
But, Multiple forum articles are also searched for cases similar to mine.

It is sad to think that it is difficult to use it in actual service in its current state.:frowning:

I don’t know if the Unity person in charge is seeing this post.

I change Title Tag. Question to Bug…

Thank you a lot. again. Alan-Liu. You’re awesome!:wink:

1 Like

As Alan-Liu further informed me,
“Export all/selected assets”
I tried using the function.

As a result.
The files below have been identified as different.

  • A large number of fbx files in the Animator folder.
  • Some wav files in AudioClip folder. (not All)
  • The fbx file doesn’t seem to be 3D model data.
  • All files have the same file size but different byte stream contents.

I couldn’t pinpoint the cause of the difference.
I share my tests.

1 Like

I encountered a similar issue of AudioClip before. I figured out it was due to an AssetPostprocessor didn’t run on the build machine. Normally, the changes made by the AssetPostprocessor should be commited to SVN, so there should not be local modification on the build machine. But someone forget to commit them and the AssetPostprocessor didn’t run on the build machine with unkown reason. After that, we checked if there was local modification on dev machine and made sure they were committed to SVN before making a release. Not sure it’s related to the issue above.

As a reply from a Unity developer, building on different machines is not recommended. For our project, in order to avoid assetbundles from being changed unexpectedly, we’re using only one machine to build Addressables and make sure every branch and every platform has their own folder, so they don’t interfere with each other.

2 Likes

The same problem in this post