【问题标题】:Xamarin Android Manifest.xml ${applicationId} error on buildXamarin Android Manifest.xml ${applicationId} 构建错误
【发布时间】:2020-01-10 14:18:46
【问题描述】:

我是 Xamarin 的新手。我正在研究 FCM,无法解决 manifest.xml 中有关 applicationId 的问题。在构建 VS 时,接收器标签中的 ${applicationId} 会自动替换为 APP ID。我的 APP ID 中包含“:”,在构建我的项目时,我收到了这个错误:

标签category属性名包含无效字符':'

APP ID:1:155007225:android:31f4cbf34842713c6f7b

接收者代码:

<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <category android:name="1:155007225:android:31f4cbf34842713c6f7b" />
  </intent-filter>
</receiver>
<activity android:label="@string/app_name" android:theme="@style/AppTheme" android:name="md5a2380a28141411635d1963b62f9f05b7.MainActivity">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
<service android:name="md5a2380a28141411635d1963b62f9f05b7.MyFirebaseIIDService">
  <intent-filter>
    <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
  </intent-filter>
</service>
<provider android:name="mono.MonoRuntimeProvider" android:exported="false" android:initOrder="2147483647" android:authorities="FCM.FCM.mono.MonoRuntimeProvider.__mono_init__" />
<!--suppress ExportedReceiver-->
<receiver android:name="mono.android.Seppuku">
  <intent-filter>
    <action android:name="mono.android.intent.action.SEPPUKU" />
    <category android:name="mono.android.intent.category.SEPPUKU.FCM.FCM" />
  </intent-filter>
</receiver>

如果你能看到我的代码在 intent-filter 标签下有 category 标签

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 可以分享Manifest.xml的代码吗?

标签: c# firebase xamarin.android firebase-cloud-messaging android-manifest


【解决方案1】:

请为接收者尝试此代码:

<application android:label="YourAppName">
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="${applicationId}" />
        </intent-filter>
    </receiver>
</application>

【讨论】:

  • 不。还是同样的错误。每当我构建我的项目时,VS 会自动将 ${applicationId} 替换为实际的应用程序 ID,并且该应用程序 ID 包含冒号“:”并且我的 manifest.xml 文件不会忽略它。卡在这里...
【解决方案2】:

您需要使用Package Name作为applicationId,而不是您从Firebase获取的app id,请参考Set the Package Name

在 Firebase 云消息传递中,您为 启用 FCM 的应用程序。此包名称也用作应用程序 ID 与 API 密钥相关联。配置应用程序以使用它 包名

更新:

试试下面的代码:

<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" 
android:exported="true" 
android:permission="com.google.android.c2dm.permission.SEND">
 <intent-filter>
  ....
    <category android:name="${applicationId}"
</intent-filter>

【讨论】:

  • 我正在使用您共享的相同文档,但这是一件事。我用包名替换了我的 app_id,但 VS 在构建时自动用 app_id 替换它,但仍然出现该错误。
  • 我的 manifest.xml 和你更新的一样。我想你没有明白这一点。如果您在“此 XML 执行以下操作”下看到第 3 品脱文档:Xamarin.Android Firebase 绑定将使用应用 ID 替换令牌 ${applicationId};
  • 我无法重现您的问题,也许您可​​以尝试使用 &lt;category android:name="applicationId"/&gt; 。或&lt;category android:name="yourpackagename"/&gt;
  • 能否分享一个基本的演示,以便我们进行测试?
  • 恐怕这不可能。您可以使用您发布的相同文档创建 xamarin android 项目并添加 FCM。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多