我用Xamarin.Forms创建了一个安卓应用程序。我使用"SKD和用户程序集“进行链接,并使用类的虚拟用法(以愚弄链接器),并使用
[Android.Runtime.Preserve(AllMembers = true)]
注释我可以在没有问题的情况下运行我的应用程序,并将apk大小从大约50 MB减少到19 MB。但是19 MB还是太多了!所以我使用了“将程序集绑定到本机代码”,构建和存档是可以的,我的apk大小现在大约是6MB。但当我打开应用程序,它立即关闭,没有任何错误!
发布于 2017-11-21 18:50:21
检查.apk
的内容,如果缺少libmonodroid_bundle_app.so
,则有两种基本的可能性。
mkbundle
步骤没有执行
IMHO:如果MSBuild在您的.csproj
中是真的,但是您没有正确的许可证,但是它目前不是正确的,那么这应该始终是一个.csproj
错误/失败。这个问题出现在bugzilla上,并在7.2.0版本中得到了修正,但我在7.5 / 8.x版本中看到了它的出现。
这样做的问题可能是静默故障,因此MSBuild没有看到,因此产生的APK没有libmonodroid_bundle_app.so
文件。
/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:
最后一次失败,与你的问题无关,但可能与其他问题有关。
存档过程中Visual 2017的完全崩溃和重新启动。
如果您在Android安装中缺少文件,请安装错误或错误的版本。此外,谷歌的一些版本没有任何,包括目录(?!?!)但是确实有lib
目录,没有头文件,Xamarin.Android MSBuild进程会挂起VS并导致崩溃/重新启动。
https://stackoverflow.com/questions/47415237
复制相似问题