问题标签 [xamarin-linker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 将标准库与 Xamarin 链接
我用 Xamarin 创建了一个简单的绑定项目。绑定项目导入一个静态库MyLibrary.a
。它还包含ApiDefinition.cs
并StructAndEnum.cs
通过Sharpie工具制作。
现在我有一个链接该绑定项目的 iOS 项目。MyLibrary.a
为了工作需要一些框架和库(见下文)。
为了使其正常工作,我遵循了Xamarin 文档。
在 iOS 项目中,我添加了以下内容mtouch arguments
(另见附图)。
--cxx -gcc_flags "-L${ProjectDir} -framework CFNetwork -framework SystemConfiguration -framework MobileCoreServices -framework Security -framework AVFoundation -libicucore -libxml2 -libc++ -libzd -libstdc++.6.0.9"
当我尝试编译时,我总是以构建错误结束。
MTOUCH:错误 MT5209:本机链接错误:找不到 -libicucore 的库 MTOUCH:错误 MT5201:本机链接失败。请查看提供给 gcc 的构建日志和用户标志:-L/Users/tmp/Documents/Projects/Ovp/BindinTest.iOS -framework CFNetwork -framework SystemConfiguration -framework MobileCoreServices -framework Security -framework AVFoundation -libicucore -libxml2 -libc++ -libzd -libstdc++.6.0.9 MTOUCH:错误 MT5202:本机链接失败。请查看构建日志。
有什么线索可以让它工作吗?也许缺少了什么?
先感谢您。
c# - 为什么在 Xamarin 中使用链接器会减慢发布版本中的应用程序?
在安装应用程序后,在 Xamarin 中使用 Linker 来减小我的 android 应用程序的发布版本的大小。与我在调试模式下调试应用程序时相比,应用程序在发布版本中的运行速度要慢得多。
- 除了应用程序变慢之外,没有报告错误并且应用程序运行时不会崩溃。
在不使用链接器的情况下创建发布版本不会导致应用程序变慢。
这有点令人困惑,因为我认为 Linker 旨在减少应用程序大小而不影响应用程序性能。
这种情况有解释吗?
xamarin - 忽略 Xamarin.Android 链接器中的程序集
尝试使用Link SDK Assemblies Only
(一切正常Don't Link
)构建应用程序时出现错误
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:错误:执行任务时出错LinkAssemblies:错误XA2006:引用元数据项'System.Void Xamarin.Forms.Element:: set_AutomationId(System.String)' (在'ZXing.Net.Mobile.Forms, Version=2.1.47.0, Culture=neutral, PublicKeyToken=null'中定义)来自'ZXing.Net.Mobile.Forms, Version=2.1.47.0, Culture=neutral, PublicKeyToken=null' 无法解析。(FleetApp.Droid)
我正在尝试在忽略列表中添加导致问题的程序集:
但我无法让错误消失。这是正确的方法吗?还是我添加了错误的程序集以忽略列表?
PS 还尝试在没有大括号的情况下添加它们。
xamarin - Xamarin iOS 链接器在 System.Net.Http.Primitives.dll 上失败
在为 Release 构建我的 Xamarin iOS (10.4.0.88) 项目时,仅启用 Link SDK 程序集时出现以下错误。我有 Mono 版本 4.8.0.459
C:\Program Files (x86)\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(694,3):警告:无法将 Aot 文件复制到目标目录 /Users/markmeyer/Library/Caches/Xamarin /mtbs/builds/ServiceOrdersMobileApps.iOS/295315d462497600265210bd6b0fdce2/obj/iPhone/Release/mtouch-cache/64/Build/Msym/Msym/tmp:无法启动进程。1> --- 内部异常 1> System.ComponentModel.Win32Exception (0x80004005): ApplicationName='mono-symbolicate', CommandLine='store-symbols "/Users/markmeyer/Library/Caches/Xamarin/mtbs/builds/ServiceOrdersMobileApps. iOS/295315d462497600265210bd6b0fdce2/bin/iPhone/Release/ServiceOrdersMobileAppsiOS.app.mSYM" "/Users/markmeyer/Library/Caches/Xamarin/mtbs/builds/ServiceOrdersMobileApps。--- 1> 进程以代码 1 退出,命令:1> /Library/Frameworks/Mono.framework/Versions/Current/bin/mono /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5/ mono-cil-strip.exe /Users/markmeyer/Library/Caches/Xamarin/mtbs/builds/ServiceOrdersMobileApps.iOS/295315d462497600265210bd6b0fdce2/obj/iPhone/Release/mtouch-cache/64/Build/System.Net.Http.Primitives。 dll /Users/markmeyer/Library/Caches/Xamarin/mtbs/builds/ServiceOrdersMobileApps.iOS/295315d462497600265210bd6b0fdce2/bin/iPhone/Release/ServiceOrdersMobileAppsiOS.app/.monotouch-64/System.Net.Http.Primitives.dll 1> Mono CIL剥离器 1> 错误:System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。1> 参数名称:索引 1> 在 System.Collections.CollectionBase.System。
/Users/markmeyer/Library/Caches/Xamarin/mtbs/builds/ServiceOrdersMobileApps.iOS/295315d462497600265210bd6b0fdce2/obj/iPhone/Release/mtouch-cache/64/Build/System.Net.Http.Primitives.dll
. 1> --- 内部异常 1>C:\Program Files (x86)\MSBuild\Xamarin\iOS\Xamarin.iOS.Common.targets(694,3): 错误:无法剥离程序集/Users/markmeyer/Library/Caches/Xamarin/mtbs/builds/ServiceOrdersMobileApps.iOS/295315d462497600265210bd6b0fdce2/obj/iPhone/Release/mtouch-cache/64/Build/System.Net.Http.Primitives.dll
。1> --- 1> 在 /Users/builder/data/lanes/3985/9975cb17/source/xamarin-macios/tools 中的 MonoTouch.Tuner.Stripper.Process (System.String assembly_file, System.String output_file) [0x000ba] /mtouch/Stripper.cs:33 1> 在 /Users/builder/data/lanes/3985/9975cb17/source/xamarin-macios/tools 中的 Xamarin.Bundler.Target.m__2 (Xamarin.Bundler.Assembly 程序集)[0x00065] /mtouch/Target.cs:1041 1> 在 System.Threading.Tasks.Parallel+c__AnonStorey62[TSource,TLocal].<>m__0 (System.Int32 i) [0x00012] in <12e050e5b3d34326a1b4e2e7624e75da>:0 1> at System.Threading.Tasks.Parallel+<ForWorker>c__AnonStorey3
1[TLocal].<>m__1 () [0x000ed] in <12e050e5b3d34326a1b4e2e7624e75da>:0
我有以下额外的 mtouch 参数
-cxx -gcc_flags "-lc++" -v -v -v -v
如果我关闭链接器,一切都会构建并正常工作。我需要链接器才能让我的应用程序获得应用程序商店的批准,因为它会删除我不需要的东西(例如 CallKit)。有什么建议么?
c# - Xamarin 链接器删除所有构造函数但保留实例方法?
首先,一般注意,Xamarin 所谓的“链接器”实际上更像是“死代码删除器”。它应该防止不可调用的代码进入已编译的应用程序。
我的应用程序中有一个类型。当我使用反射来获取它的构造函数时,我看到零构造函数:
然而,当我使用反射查看它的实例成员时,我看到了很多:
上面的输出是:
这是一个问题,因为该类型是通往许多其他类型的门户。我希望通过摆脱所有构造函数,所有实例成员都会消失。他们没有。
这是链接器中的错误吗?或者它是否仍然不想摆脱实例成员?
我确实通过强制转换访问该类型的成员。也许这就是问题所在?
更新:摆脱所有演员并没有解决问题。我在很多地方都在调用超类对象的虚拟成员;这是我的下一个猜测,但如果这是问题所在,修复将是一团糟。
xamarin.android - 链接器错误 nach update auf neueste Xamarin Android 库
由于我将我的 Xamarin Forms 项目更新为最新的 Android 库 25.1.1,因此由于此链接器错误,我无法再构建版本
xamarin - Xamarin mtouch 链接器 ProjectDir 解析为 Windows 不是主机
当使用 mac 代理从 Windows 上的 Visual Studio 构建 iOS Xamarin 项目时,-B ${ProjectDir} 中使用的自定义链接器路径将 ProjectDir 解析为 Windows 而不是主机位置。
唯一的解决方法是手动指定路径,但这非常不方便。
似乎在 Xamarin Bugzilla 上报告了相同的问题,但似乎没有解决或使用最新的 Xamarin 工具版本之一重新引入: https ://bugzilla.xamarin.com/show_bug.cgi?id=22906#c4
你知道是否有另一种解决方法?
xamarin.ios - Xamarin 链接器:找不到类型 MvvmCross.Platform.IoC.MvxPropertyInjector 的默认构造函数
这与此问题相同,但该解决方案对我不起作用。我有一个 LinkerPleaseInclude.cs 文件,其中包含以下内容:
我使用 Link All 作为链接器行为,但我的印象是在 LinkerPleaseInclude.cs 中包含上述内容会提示链接器不要将其删除。
不确定这是否重要,但这里有一些平台详细信息:
Xamarin Studio 6.3
MvvmCross 4.4.0
.NETCore UWP 5.3.3
android - Xamarin 在发布模式下使用 Proguard 链接
我正在开发适用于 Android 和 iOS的Xamarin Forms应用程序。我们使用以包形式提供的第三方 SDK .aar
,构建操作设置为LibraryProjectZip
. 然后,我们从代码的表单、iOS 和 Android 部分调用。如果我没记错的话,链接在调试模式下工作得很好。
我没能把Linker+ProGuard
工作放在一起。我已经阅读了几天并尝试了许多解决方案。我有java codes 1 and 2
- 所以我更新了 ProGuard 并开始工作。然后链接产生错误 -UnauthorizedAccessException
所以我不得不去相应的文件夹并删除ReadOnly
权限。然后项目构建成功,但应用程序功能丢失,即使它运行,Device Log
我可以看到一些类丢失了。
为了解决这个问题,我创建了一个ProGuard.cfg
并添加了大多数因该"-keep"
命令而崩溃的程序集。但是,我似乎无法找到一种方法来保留这个.aar
包的功能
有什么建议么?
我在带有 JDK 1.8 的 Windows 10 上使用 VS 2017 和 Xamarin 7.4,以管理员身份运行。尝试链接Sdk Assemblies / User&Sdk Assemblies
。Multidex
开启。我尝试将所有项目的程序集名称放在“跳过链接程序集”字段中,但没有结果。在设备日志中,我得到了失败调用的包名称,因此我也尝试将其添加到 ProGuard,但没有帮助。(看起来像"-keep class com.something.something"
)