android – 如何在Xamarin中处理“${applicationid}”?

前端之家收集整理的这篇文章主要介绍了android – 如何在Xamarin中处理“${applicationid}”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试为Zendesk库创建绑定,我面临着一个问题.

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

<?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用作构建工具时,将其放在APK文件中,并将合并清单文件中的com.your_package_name_here.belvedere.attachments替换为${applicationId} .belvedere.attachments.没关系.

不过,Xamarin处理方式不一样.这是我在最终的APK的清单中找到的:

<?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不是我需要的.

似乎一切都有效,但是它不可能安装几个使用这些绑定的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清单在上游更改(不太可能发生;-)因为它可以正常工作/ gradle)

FYI:我个人已经看到你有几次${applicationId}问题.我已经编写了构建脚本(bash / .ps1)来执行清单修复,因为它似乎总是在我正在处理的.arr的清单中的一些特殊情况.

原文链接:https://www.f2er.com/android/313542.html

猜你在找的Android相关文章