我用Xamarin.Forms创建了一个Android应用程序。我使用“SKD和用户程序集”来链接和使用类的一些虚拟用法(来欺骗链接器)并使用
[Android.Runtime.Preserve(AllMembers = true)]
注释我可以毫无问题地运行我的应用程序,并将apk大小从大约50 MB减少到19 MB。但是19 MB仍然太多了!所以我使用“Bundle assembly into native code”,build和archive就可以了,我的apk大小现在大约是6 MB。但是当我打开应用程序时,它立即关闭而没有任何错误!
答案 0 :(得分:0)
如果您遗漏了.apk
,请检查libmonodroid_bundle_app.so
的内容,如果有,则有两种基本可能性。
您的Visual Studio(Mac或Windows)安装不是有效的企业许可证,也不是社区/专业许可证,并且mkbundle
步骤未执行
IMHO: This should always be an MSBuild error/failure if
BundleAssemblies is true in your `.csproj` but you do not
have the correct license but it is currently not.
MSBuild在包含CIL程序集的共享库的Android NDK大楼失败。
这个问题出现在bugzilla上,并且在7.2.0版本中已经修复,但我已经看到它在7.5 / 8.x版本中重新出现。
此问题可能是无声失败,因此MSBuild无法看到,因此生成的APK没有libmonodroid_bundle_app.so
文件。
审核问题48678
使用cmd-line中的MSBuild在Visual Studio IDE外部进行测试。将/t:PackageForAndroid
传递给发布配置,看看您是否获得了干净的_BuildApkEmbed
任务:
清洁/工作:
_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]
分拆/错误:
Platform header files for target Arm and API Level XX was not found. Expected path .....
如果是这种情况,请(重新)安装Android NDK:
最后一次失败,与您的问题无关,但可能与其他问题无关。
在归档过程中完全崩溃并重新启动Visual Studio 2017。
如果您在Android NDK安装中缺少文件,则安装损坏或版本错误。此外,谷歌的某些版本没有任何包含目录(?!?!),但确实有arch lib
目录,没有头文件,Xamarin.Android MSBuild进程挂起VS和导致崩溃/重启。