将Firebase Ads添加到Xamarin.Forms会导致:名称不能以'$'字符开头,十六进制值0x24

时间:2018-03-26 22:27:03

标签: c# android firebase xamarin xamarin.forms

仅限Windows 此错误使用相同的解决方案在Mac上发生 NOT

将Firebase广告添加到Xamarin.Forms会导致:名称不能以“$”字符开头,十六进制值0x24 Visual Studio将其显示为警告,但它实际上是通过构建停止的。

1>DccClassCancelations.Android -> D:\dev\DccClassCancelationsLite\DccClassCancelations\DccClassCancelations\DccClassCancelations.Android\bin\Debug\DccClassCancelations.Android.dll 
1>No way to resolve conflict between "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e". Choosing "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" arbitrarily. 
1>Name cannot begin with the '$' character, hexadecimal value 0x24. 
1>C:\Program Files (x86)\Android\android-sdk\build-tools\25.0.3\zipalign.exe 4 "D:\dev\DccClassCancelationsLite\DccClassCancelations\DccClassCancelations\DccClassCancelations.Android\obj\Debug\android\bin\com.JacobErnst.DccClassCancelations.apk" "bin\Debug\\com.JacobErnst.DccClassCancelations-Signed.apk"  
1>C:\Program Files (x86)\Android\android-sdk\build-tools\25.0.3\apksigner.BAT sign --ks "C:\Users\jacob\AppData\Local\Xamarin\Mono for Android\debug.keystore" --ks-pass pass:android --ks-key-alias androiddebugkey --key-pass pass:android --min-sdk-version 15 --max-sdk-version 27  bin\Debug\com.JacobErnst.DccClassCancelations-Signed.apk  
1>"apksigner.BAT" exited with code 2. 
1>Done building project "DccClassCancelations.Android.csproj" -- FAILED. 
1>Build FAILED. 
1> 
1>Deploy failed on NExus6 ========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========

visual studio解决方案中的任何文件都没有以'$'开头的名称

重现的步骤

  1. 制作一个新的Xamarin.Forms项目
  2. 从NuGet安装Xamarin.Firebase.Ads包
  3. 构建Android项目

1 个答案:

答案 0 :(得分:2)

1>Name cannot begin with the '$' character, hexadecimal value 0x24.不应该破坏您的代码。 (不可否认,我几周都忽略了这个错误,我没有编译问题。)

从你的输出我会认为问题是因为1>"apksigner.BAT" exited with code 2.根据经验,我遇到了与应用程序大小相似的问题。在包含Google服务时,Android可以轻松满足65,000种方法的限制。解决方案是启用multidex。

总而言之,如果我之前的建议不起作用,Name cannot begin with the '$' character不应该导致致命错误,我建议你考虑正确重命名mscorlib(但同样不太可能是你问题的根源)然后你的签名过程(没有适当的细节我不能在这里建议解决方案,但签署你的apk时的错误至少会崩溃你的应用程序,如果不终止构建)因为