gpt4 book ai didi

android - Xamarin中如何处理 "${applicationid}"?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:01 25 4
gpt4 key购买 nike

我正在尝试为 Zendesk 库创建绑定(bind),但遇到了问题。

Zendesk Belvedere 库 (belvedere-1.0.2.1.aar) 在其 list 文件中包含一个文件提供程序:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
...

<application>
<provider
android:name="com.zendesk.belvedere.BelvedereFileProvider"
android:authorities="${applicationId}.belvedere.attachments"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/belvedere_attachment_storage" />
</provider>
</application>

</manifest>

当 Gradle 用作构建工具时,它将此 aar 放入 APK 文件并将 ${applicationId}.belvedere.attachments 替换为 com.your_package_name_here.belvedere.attachments 在合并的 list 文件中。没关系。

但是,Xamarin 的处理方式不同。这是我在最终 APK 的 list 中找到的内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
...

<application
...
...
<provider
android:name="com.zendesk.belvedere.BelvedereFileProvider"
android:exported="false"
android:authorities="dollar_openBracket_applicationId_closeBracket"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/belvedere_attachment_storage" />
</provider>
...
...
</application>
</manifest>

显然,dollar_openBracket_applicationId_closeBracket 不是我需要的。

似乎一切正常,但是安装多个使用这些绑定(bind)的 Xamarin 应用程序是不可能的,因为所有这些应用程序都会有具有相同权限的冲突提供程序(并且用户会收到 INSTALL_FAILED_CONFLICTING_PROVIDER 错误)。

有没有办法改变 list 中的 dollar_openBracket_applicationId_closeBracket

编辑: 显示问题的小示例:https://gitlab.com/lassana/ZendeskXamarin/

最佳答案

当前 Xamarin.Android list 合并构建任务,直到并包括版本 7.1.0.19,不像 gradle 那样在合并的 list 中提供任何 bundeID/ApplicationID(${}} 替换。

这只是 list 处理/合并任务中的一个限制,因此您最终会在最终 list 中得到 dollar_openBracket_applicationId_closeBracket 并且必须更正两者 展现自己。

我目前唯一知道的避免 list 合并任务的解决方案,它的局限性是:

  1. 从“.aar”的 list 中删除文件提供程序条目
  2. 添加您应用 list 的完整文件提供程序条目

注意:您必须完成这两个步骤

取决于 .aar 更改的频率以及您从何处获取 .aar 文件:

  • 手动解压缩aar,删除条目并重新压缩aar(最快的方法)
  • 使用 bash 或 powershell 命令通过 shell 脚本在构建步骤中自动执行此操作
  • 编写一个基于 MSBuild C# 的任务来执行此操作。
  • 请求上游更改 aar list (不太可能发生 ;-) 因为它在 gradle 上工作正常)

仅供引用:我个人已经多次看到您遇到的 ${applicationId} 问题。我已经编写了构建脚本 (bash/.ps1) 来进行 list 修复,因为它似乎总是在我的 .arr list 中出现一些特殊情况正在处理。

关于android - Xamarin中如何处理 "${applicationid}"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41551813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com