I manage to get it working by making AddressableAssets.MoveAssetsFromResources a public function.
I wish I had a safer way to do that.
My example code:
var settings = AddressableAssetSettingsDefaultObject.Settings;
var group = AddressableAssetSettingsDefaultObject.Settings.FindGroup(groupName);
if (!group)
{
throw new Exception($"Addressable : can't find group {groupName}");
}
var entry = AddressableAssetSettingsDefaultObject.Settings.CreateOrMoveEntry(AssetDatabase.AssetPathToGUID(path), group,
false,
true);
if (path.Contains("Resources/"))
{
var newName = path.Replace("\\", "/");
newName = newName.Replace("Resources", "Resources_moved");
newName = newName.Replace("resources", "resources_moved");
settings.MoveAssetsFromResources(
new Dictionary<string, string>() {{AssetDatabase.AssetPathToGUID(path), newName}}, entry.parentGroup);
}
if (entry == null)
{
throw new Exception($"Addressable : can't add {path} to group {groupName}");
}
entry.labels.Add(groupName);
settings.SetDirty(AddressableAssetSettings.ModificationEvent.EntryMoved, entry, true);