Не удалось разрешить Android.App.Fragment с включенным Link SDK Only

Я получаю сообщение об ошибке времени компиляции, когда опция компоновщика = «Только SDK» с сообщением «Не удалось разрешить Android.App.Fragment». Все началось, когда я добавил поддержку Google Maps с помощью FragmentActivity в свое приложение MonoDroid.

С параметром Linker = "None" все работает нормально, за исключением того факта, что .apk стал огромным (~ 30 МБ вместо 7 МБ, когда включен только SDK для ссылок)

Детали ошибки:

The "LinkAssemblies" task failed unexpectedly.
Mono.Cecil.ResolutionException: Failed to resolve Android.App.Fragment
   at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
   at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
   at Mono.Linker.Steps.MarkStep.InitializeType(TypeDefinition type)
   at Mono.Linker.Steps.MarkStep.InitializeAssembly(AssemblyDefinition assembly)
   at Mono.Linker.Steps.MarkStep.Initialize()
   at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
   at Mono.Linker.Pipeline.Process(LinkContext context)
   at MonoDroid.Tuner.Linker.Process(LinkerOptions options, LinkContext& context)
   at Xamarin.Android.Tasks.LinkAssemblies.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext()

Я нашел много подобных проблем (1, 2, 3), и единственным предложенным решением было отключить компоновщик, который это не относится к моему приложению.

Как я могу диагностировать и устранить проблему?

ТИА!


person Alexey Strakh    schedule 02.10.2013    source источник


Ответы (3)


Вы везде ссылаетесь на классы Mono.Android.Support.v4?

person Roosevelt    schedule 02.10.2013
comment
Ваше сообщение об ошибке (Не удалось разрешить Android.App.Fragment) указывает на то, что где-то вы используете Android.Fragment вместо android.support.v4.app.Fragment. Пробовали ли вы искать Fragment в своем решении и проверять пространства имен? Если это не поможет, я бы попытался найти тот класс, который отвечает за это сообщение об ошибке (возможно, ваш класс Google Maps), и закомментировать или временно удалить их, пока ошибка не исчезнет. Если вы обнаружите, какой класс вызывает эту проблему, скопируйте свой код сюда, и я постараюсь найти проблему для вас. - person Roosevelt; 03.10.2013

Я уже некоторое время борюсь с одной и той же проблемой. В настоящее время мне удалось переключиться на альфа-канал обновлений Xamarin и использовать альфа-сборки Xamarin.Android и Xamarin Studio. Запустив эти альфа-версии, я смог без проблем создавать выпускные сборки с включенным связыванием. Надеюсь, это поможет!

person GrimmRanger    schedule 09.10.2013

В конце концов компонент GooglePlayServices Xamarin был обновлен до версии 12.0.1, и его нельзя было использовать без каких-либо ошибок даже с флагом компоновщика «Только SDK». Вы можете использовать его прямо из хранилища компонентов без предварительной компиляции каких-либо привязок.

person Alexey Strakh    schedule 19.10.2013