xamarin.android - Xamarin.Android 版本构建失败并显示“STRING_TOO_LARGE”消息
问题描述
我们有一个相当复杂的 Xamarin.Android 项目,可以使用Visual Studio 2019 v16.3 中的调试版本构建。
每当我将它设置为构建发布版本时,我都会收到此错误:
Xamarin.Android.Common.targets(1657,2):错误 APT0000:字符串太大,无法使用 UTF-8 进行编码,而是写为“STRING_TOO_LARGE”。
Xamarin.Android.Common.targets(1657,2):错误 APT0000:字符串太大,无法使用 UTF-8 进行编码,而是写为“STRING_TOO_LARGE”。
我检查了我们的strings.xml
文件并将所有“长”文本(超过 30 个字符)替换为一个字母,但错误仍然存在。还检查了anim
和drawable
xml 文件,但它们不包含长路径或任何类似长字符串的东西。
不幸的是,错误并没有说明字符串是什么......
我应该如何解决这个问题?
更新:
我们尝试在单独的机器上构建它,错误也出现在那里。似乎代码中的某处实际上有一个很长的字符串。谁设计了该错误消息并认为它会很有用……?
解决方案
看来软件能找到人眼看不到的东西……</p>
我创建了一个Powershell 脚本来计算文件中的字符,结果发现我们有 2 个长度超过 32k的可绘制对象。
当我截断它们时,构建成功。奇怪的是我们可以使用 Visual Studio 16.2 发布该软件。
推荐阅读
- php - 使用 Laravel 返回一对多 Eloquent Relation 中的最后一条记录
- http - 在真实网络中,服务器是否相互发送请求?
- elasticsearch - 如何根据 Elasticsearch 中的最大单词数对句子进行标记?
- reactjs - 为什么酶测试在 React 中不起作用?
- sql - 如何知道外键是否在删除子句上有级联
- rust - 当变量和函数同名时如何调用函数?
- c# - 单个文件夹应可供组织中的所有用户使用
- c# - 反序列化字符串(AuthenticationHeaderValue.Parameter)
- python - 为什么要在赋值之前先定义一个list类型的python变量?
- database - 使用 mongo 控制台在 Mongo db 中创建索引时出错