首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xamarin.Forms将程序集绑定到本机代码中

Xamarin.Forms将程序集绑定到本机代码中
EN

Stack Overflow用户
提问于 2017-11-21 14:13:46
回答 1查看 1.2K关注 0票数 2

我用Xamarin.Forms创建了一个安卓应用程序。我使用"SKD和用户程序集“进行链接,并使用类的虚拟用法(以愚弄链接器),并使用

代码语言:javascript
运行
复制
[Android.Runtime.Preserve(AllMembers = true)] 

注释我可以在没有问题的情况下运行我的应用程序,并将apk大小从大约50 MB减少到19 MB。但是19 MB还是太多了!所以我使用了“将程序集绑定到本机代码”,构建和存档是可以的,我的apk大小现在大约是6MB。但当我打开应用程序,它立即关闭,没有任何错误!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-21 18:50:21

检查.apk的内容,如果缺少libmonodroid_bundle_app.so,则有两种基本的可能性。

  • Visual (Mac或Windows)安装不是有效的企业许可证,也不是社区/职业许可证,而且mkbundle步骤没有执行 IMHO:如果MSBuild在您的.csproj中是真的,但是您没有正确的许可证,但是它目前不是正确的,那么这应该始终是一个.csproj错误/失败。
  • MSBuild在包含CIL程序集的共享库的Android构建上失败。

这个问题出现在bugzilla上,并在7.2.0版本中得到了修正,但我在7.5 / 8.x版本中看到了它的出现。

这样做的问题可能是静默故障,因此MSBuild没有看到,因此产生的APK没有libmonodroid_bundle_app.so文件。

  • 评审问题48678
  • 使用cmd行的MSBuild在外部进行测试。将/t:PackageForAndroid传递给发行版配置,并查看是否得到一个干净的_BuildApkEmbed任务:

清洁/工作:

代码语言:javascript
运行
复制
    _BuildApkEmbed:
      [mkbundle stderr]
     [cc stderr]
     [LD] X:\Docker\android-sdk-windows\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm
      -linux-androideabi-ld.exe --shared obj\Release\bundles\armeabi-v7a\temp.o obj\Release\bundles\armeabi-v7a\assemblies.
      o -o obj\Release\bundles\armeabi-v7a\libmonodroid_bundle_app.so -L X:\Docker\android-sdk-windows\ndk-bundle\platfo
    rms\android-14\arch-arm\usr\lib -lc -lm -ldl -llog -lz
      [ld stderr]

破损/错误:

代码语言:javascript
运行
复制
Platform header files for target Arm and API Level XX was not found. Expected path .....

如果是这样的话,(重新)安装Android:

最后一次失败,与你的问题无关,但可能与其他问题有关。

存档过程中Visual 2017的完全崩溃和重新启动。

如果您在Android安装中缺少文件,请安装错误或错误的版本。此外,谷歌的一些版本没有任何,包括目录(?!?!)但是确实有lib目录,没有头文件,Xamarin.Android MSBuild进程会挂起VS并导致崩溃/重新启动。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47415237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档