我正在尝试为Zendesk库创建绑定,但我遇到了一个问题.
Zendesk Belvedere库(belvedere-1.0.2.1.aar)在其清单文件中包含一个文件提供程序:
当Gradle用作构建工具时,它会将其放在APK文件中,${applicationId}.belvedere.attachments
并com.your_package_name_here.belvedere.attachments
在合并的清单文件中替换它.没关系.
但是,Xamarin以不同的方式处理它.这是我在最终APK的清单中找到的内容:
... ...
显然,dollar_openBracket_applicationId_closeBracket
不是我需要的.
似乎一切正常,但是不可能安装几个使用这些绑定的Xamarin应用程序,因为所有这些应用程序都会有相同权限的冲突提供程序(并且用户会收到INSTALL_FAILED_CONFLICTING_PROVIDER
错误).
是否有办法改变dollar_openBracket_applicationId_closeBracket
清单?
编辑:显示问题的小样本:https://gitlab.com/lassana/ZendeskXamarin/
当前Xamarin.Android
清单合并构建任务(包括版本)在合并清单7.1.0.19
中不提供任何bundeID/ApplicationID(${}
}替换gradle
.
这只是清单处理/合并任务的一个限制,因此dollar_openBracket_applicationId_closeBracket
您最终会在最终清单中结束,并且必须自己更正两个清单.
当前唯一的解决方案让我知道要避免清单合并任务,它的局限性是:
从'.aar`的清单中删除文件提供程序条目
添加应用程序清单的完整文件提供程序条目
注意:您必须执行这两个步骤
取决于.aar
更改的频率以及.aar
从中获取文件的位置:
手动解压缩aar
,删除条目并重新压缩aar
(最快的方式)
使用bash或powershell cmds通过shell脚本在构建步骤中自动执行此操作
编写一个基于MSBuild C#的任务来完成它.
请求aar
上游更改清单(不太可能发生;-)因为它工作正常w/gradle
)
仅供参考:我个人已经看过${applicationId}
你有几次这个问题.我已经编写了构建脚本(bash/.ps1
)来执行清单修复,因为它似乎总是在.arr
我正在处理的清单中的一些特殊情况.