我已经解决了这个问题2天了,找不到任何解决方案。
我在Visual Studio 2017中有一个包含三个项目的Xamarin Android应用程序:
NUnit 3 Test Project (Android)
类型的项目
Unit Test Project (.NET Framework)
类型的项目)到目前为止,一切工作都很顺利。当我选择我的主项目作为启动项目时,我的应用程序已部署到设备/模拟器。当我选择特定于Android的单元测试项目时,部署测试项目并在设备/模拟器上由nUnit Xamarin Runners执行单元测试。
但是几天前我用最新的可用更新更新了我的Visual Studio 2017,现在,当我尝试构建这个特定于Android的单元测试项目时我收到以下错误:
The file "obj\Debug\android\bin\packaged_resources" does not exist.
我到处搜索,包括this和this SO主题。我还完全重新安装了包含Android SDK的Visual Studio 2017和Xamarin。什么都没有帮助。根据我的阅读,我怀疑我安装的 Android SDK Build-tools 的版本有问题。这是我目前在SDK Manager中安装的内容:
正如其他SO线程建议的那样,我尝试卸载最新的 Android SDK Build-tools(25.0.2)并安装了版本23.0.3(我的所有项目都针对Android 6.0),但它也是没有帮助,我仍然有同样的错误。
也许值得补充的是,当我尝试在我的应用程序阅读this教程中实施RecyclerView时,这个问题可能已经开始发生,他们建议安装 Android 7.1.1(API 25)在SDK Manager中。然而,在此之后我撤消了我的所有更改,甚至重新安装了VS2017 + Xamarin。
你还有其他想法为什么会这样吗?我真的很感激任何帮助。谢谢!
编辑2017-04-09:
呃,我删除了VS2017,用全新的Android SDK安装了VS2015但问题仍然存在:(
答案 0 :(得分:22)
我终于找到了问题所在。它与SDK Manager或VS版本中的任何组件都没有关系。
关注localization tutorial from developer.xamarin.com,我在Android项目中使用Strings.xml
玩了一下。我想从资源中获取我的活动标签,所以在我定义的ActivityAttribute
中:
[Activity(Label = "@string/peopleListTitle")]
并在Strings.xml
文件中添加了此值:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-------Other resources values ----->
<string name="peopleListTitle">People List</string>
</resources>
在这种情况下,我的构建失败并出现上述错误:
The file "obj\Debug\android\bin\packaged_resources" does not exist
当我将ActivityAttribute
更改为直接使用字符串时:
[Activity(Label = "People List")]
构建正在通过而没有任何问题。
我设法找到了一个解决方案,但实际上当我尝试使用Strings.xml
中定义的标签文字时,我不知道它为什么不构建。
顺便说一句,我设法通过在工具 - &gt;中将构建输出详细程度设置为Diagnostic
来找到问题所在。选项 - &gt;项目和解决方案 - &gt;构建并运行,它在“输出”窗口中详细说明构建失败的原因。
答案 1 :(得分:17)
我遇到了同样的问题。删除短划线&#34; - &#34;从图像文件名中签名,问题解决了。错误信息错误!它不应该是:
文件&#34; obj \ Debug \ android \ bin \ packaged_resources&#34;不存在。
编写这样的错误消息,导致开发人员在问题是非法文件名时考虑其他问题。
答案 2 :(得分:4)
当我添加新图像作为资源时,我遇到了同样的问题。
有一个&#39; -
&#39;在文件名中(无效的资源名称字符)。我改名为&amp;删除那个角色,一切都好。
资源名称只能包含0-9,a-z或A-Z或任意组合。
答案 3 :(得分:2)
我遇到了同样的问题,我删除了所有图像文件名已经&#34; - &#34;字符。我的问题解决了
答案 4 :(得分:1)
此错误的另一个原因是您的版本号码可能有浮点数。在我的情况下,我将其更改为整数,一切正常。 (我通过将构建输出切换为详细来发现错误)
答案 5 :(得分:1)
简直有效。
答案 6 :(得分:0)
Mine是一个不同的解决方案(只丢失了半天):我无法让Hockey应用程序与正确版本的应用程序匹配崩溃,并意识到它使用的是VersionCode而不是VersionName所以我将我的代码更改为&#34 ; 0.0.34&#34;和名字一样。由于一些仍然未知的原因,应用程序构建并部署到设备大约3天后才开始出现此错误The file "obj\Debug\android\bin\packaged_resources" does not exist.
将其设置回数值可解决问题。
我通过浏览我的GIT日志并重建每次推送找到了问题,直到找到导致问题的那个。
答案 7 :(得分:0)
只是因为版本代码,我将代码设置为'1.0',文件“obj \ Debug \ android \ bin \ packaged_resources”不存在。;我将它设置为'1 ',一切都很好。
答案 8 :(得分:0)
答案 9 :(得分:0)
如果有任何手动删除这些条目,请检查resources.designer.cs中是否有未使用的条目。 这将解决问题。
答案 10 :(得分:0)
经过以下几个在线建议 - 更新SDK,更新Xamarin等 - 没有一个对我有用。
最后发现我的 AndroidManifest 文件中有一个Android提供商的闹钟活动,如下所示
<activity
android:name="com.njcommuter.droid/android.provider.AlarmClock"
android:label="AlarmClock"
.....
/>
删除此行 - 重建工作正常,没有任何错误,并且能够成功部署解决方案。
注意:通过将线放回来测试它,并且在重建时我再次得到相同的错误。 它可以链接到使用任何为其创建包的android提供程序,而不仅仅是AlarmClock。
答案 11 :(得分:0)
这个错误在某种程度上是一个包装器,可能是多个原因导致文件未创建。关键是查看详细输出并查找导致文件创建失败的基础错误。
在我的情况下,我损坏了icon.png文件(从VS xamarin nunit模板生成,不会少!)。一旦我输入了有效的png文件,一切都很好。
答案 12 :(得分:0)
此错误的另一个原因,如果Android NDK(不是android SDK)不对,更改de版本可以解决问题:转到Tools / Options / Xamarin / android配置器并更改de文件夹,在我的情况我已经三次,最后一次无法编译,但第二个文件夹版本为xx.r11c
。
答案 13 :(得分:0)