I am having a couple different problems linking my assemblies after they are obfuscated. I have two library assemblies and the main application assembly, all of which are compiled for Mono for Android. If I obfuscate only the first library assembly, I am able to link and build my apk without any problems. If I obfuscate the second, assembly, I get the following error during linking:
[msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: The "LinkAssemblies" task failed unexpectedly. [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Collections.Generic.Collection`1.get_Item(Int32 index) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.SignatureReader.GetGenericParameter(GenericParameterType type, UInt32 var) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.SignatureReader.ReadTypeSignature(ElementType etype) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.MetadataReader.GetTypeSpecification(UInt32 rid) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.MetadataReader.LookupToken(MetadataToken token) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.Cil.CodeReader.ReadOperand(Instruction instruction) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.Cil.CodeReader.ReadCode() [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.Cil.CodeReader.ReadFatMethod() [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.Cil.CodeReader.ReadMethodBody() [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.Cil.CodeReader.ReadMethodBody(MethodDefinition method) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.MethodDefinition.<get_Body>m__34(MethodDefinition method, MetadataReader reader) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.ModuleDefinition.Read[TItem,TRet](TItem item, Func`3 read) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Cecil.MethodDefinition.get_Body() [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Linker.Steps.MarkStep.ProcessQueue() [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Linker.Steps.MarkStep.Process() [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Linker.Steps.MarkStep.Process(LinkContext context) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Mono.Linker.Pipeline.Process(LinkContext context) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at MonoDroid.Tuner.Linker.Process(LinkerOptions options, LinkContext& context) [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Xamarin.Android.Tasks.LinkAssemblies.Execute() [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [msbuild] C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(547,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult) [msbuild] Done executing task "LinkAssemblies" -- FAILED. I am calling msbuild from nant, and my build process goes something like this: 1. msbuild target="Build" 2. obfuscate all assemblies 3. msbuild target="SignAndroidPackage" 4. zipalign package The SignAndroidPackage target is the task that fails. Any ideas why? If I skip obfuscation of the second assembly, the linking process succeeds, but I have another problem. The SignAndroidPackage target appears to rebuild the assembly for my main application, because the assembly that gets added to the apk is not obfuscated. Am I calling the correct build targets in the correct order? Thanks, Matt -- View this message in context: http://mono-for-android.1047100.n5.nabble.com/Linking-problem-with-obfuscated-assembly-tp5666519p5666519.html Sent from the Mono for Android mailing list archive at Nabble.com. _______________________________________________ Monodroid mailing list Monodroid@lists.ximian.com UNSUBSCRIBE INFORMATION: http://lists.ximian.com/mailman/listinfo/monodroid