{"id":565,"date":"2023-12-03T21:19:34","date_gmt":"2023-12-04T05:19:34","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/?p=565"},"modified":"2024-05-16T18:22:20","modified_gmt":"2024-05-17T01:22:20","slug":"net-8-%e4%b8%ad-android-%e8%b5%84%e6%ba%90%e7%94%9f%e6%88%90%e7%9a%84%e6%94%b9%e8%bf%9b%e5%92%8c%e5%8f%98%e5%8c%96","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/net-8-%e4%b8%ad-android-%e8%b5%84%e6%ba%90%e7%94%9f%e6%88%90%e7%9a%84%e6%94%b9%e8%bf%9b%e5%92%8c%e5%8f%98%e5%8c%96\/","title":{"rendered":".NET 8 \u4e2d Android \u8d44\u6e90\u751f\u6210\u7684\u6539\u8fdb\u548c\u53d8\u5316\u00a0"},"content":{"rendered":"<p style=\"text-align: center;\"><em>\u672c\u7bc7\u7ffb\u8bd1\u4e8eDean Ellis\u7684\u00a0<a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/android-resource-designer-dotnet-8\/\">Improvements &amp; Changes in Android resource generation in .NET 8 &#8211; .NET Blog (microsoft.com)<\/a>\u00a0<\/em><\/p>\n<p><span data-contrast=\"auto\">\u968f\u7740<\/span><span data-contrast=\"auto\"> .NET 8 <\/span><span data-contrast=\"auto\">\u7684\u53d1\u5e03\uff0c\u6211\u4eec\u5f15\u5165\u4e86\u4e00\u4e2a\u65b0\u7cfb\u7edf\uff0c\u7528\u4e8e\u751f\u6210\u8bbf\u95ee<\/span><span data-contrast=\"auto\"> Android <\/span><span data-contrast=\"auto\">\u8d44\u6e90\u7684<\/span><span data-contrast=\"auto\"> C# <\/span><span data-contrast=\"auto\">\u4ee3\u7801\u3002<\/span> <span data-contrast=\"auto\">\u5728<\/span><span data-contrast=\"auto\"> Xamarin.Android\u3001.NET 6 <\/span><span data-contrast=\"auto\">\u548c<\/span><span data-contrast=\"auto\"> .NET 7 <\/span><span data-contrast=\"auto\">\u4e2d\u751f\u6210<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\"> Resource.designer.cs <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u7684\u7cfb\u7edf\u5df2\u7ecf\u88ab\u5f03\u7528\u3002<\/span> <span data-contrast=\"auto\">\u65b0\u7cfb\u7edf\u751f\u6210\u4e00\u4e2a\u540d\u4e3a<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> _Microsoft.Android.Resource.Designer <\/span><\/span><span data-contrast=\"auto\">\u7a0b\u5e8f\u96c6\u3002\u5176\u4e2d\u5305\u542b\u6bcf\u4e2a\u7a0b\u5e8f\u96c6\u7684\u6240\u6709\u6700\u7ec8\u8d44\u6e90\u7c7b\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<h3><b><span data-contrast=\"auto\">\u4ec0\u4e48\u662f<\/span><\/b><b><span data-contrast=\"auto\"> Android <\/span><\/b><b><span data-contrast=\"auto\">\u8d44\u6e90\uff1f<\/span><\/b><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">\u6240\u6709<\/span><span data-contrast=\"auto\"> Android <\/span><span data-contrast=\"auto\">\u5e94\u7528\u7a0b\u5e8f\u90fd\u5305\u542b\u4e00\u4e9b\u7528\u6237\u754c\u9762\u8d44\u6e90\u3002\u5b83\u4eec\u901a\u5e38\u5177\u6709<\/span><span data-contrast=\"auto\"> XML <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u5f62\u5f0f<\/span><span data-contrast=\"auto\">\uff0c<\/span><span data-contrast=\"auto\">\u5305\u542b\u7528\u6237\u754c\u9762\u5e03\u5c40\u3001<\/span><span data-contrast=\"auto\">png <\/span><span data-contrast=\"auto\">\u6216<\/span><span data-contrast=\"auto\"> svg <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u5f62\u5f0f\u7684\u56fe\u50cf\u548c\u56fe\u6807\u4ee5\u53ca\u5305\u542b\u6837\u5f0f\u548c\u4e3b\u9898\u7b49\u5185\u5bb9\u7684\u503c\u3002\u8bf7\u53c2\u9605<\/span> <a href=\"https:\/\/developer.android.com\/guide\/topics\/resources\/providing-resources\"><span data-contrast=\"auto\">Google <\/span><span data-contrast=\"none\">\u6587\u6863<\/span><\/a><span data-contrast=\"auto\">\u4ee5\u6df1\u5165\u4e86\u89e3<\/span><span data-contrast=\"auto\"> Android <\/span><span data-contrast=\"auto\">\u8d44\u6e90<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><span data-contrast=\"auto\">Android<\/span><span data-contrast=\"auto\">\u6784\u5efa\u8fc7\u7a0b\u7684\u4e00\u90e8\u5206\u662f\u4f7f\u7528<\/span><span data-contrast=\"auto\">android sdk<\/span><span data-contrast=\"auto\">\u5de5\u5177<\/span><a href=\"https:\/\/developer.android.com\/tools\/aapt2\"><span data-contrast=\"none\">aapt2<\/span><\/a><span data-contrast=\"auto\">\u5c06\u8fd9\u4e9b\u8d44\u6e90\u7f16\u8bd1\u6210\u4e8c\u8fdb\u5236\u5f62\u5f0f\u3002\u4e3a\u4e86\u8bbf\u95ee\u8fd9\u4e9b\u8d44\u6e90\uff0c<\/span><span data-contrast=\"auto\">android <\/span><span data-contrast=\"auto\">\u516c\u5f00\u4e86\u4e00\u4e2a<\/span><span data-contrast=\"auto\"> API<\/span><span data-contrast=\"auto\">\uff0c\u5b83\u5141\u8bb8\u60a8\u4f20\u9012\u4e00\u4e2a\u6574\u6570<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> id<\/span> <\/span><span data-contrast=\"auto\">\u6765\u68c0\u7d22\u8d44\u6e90<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<pre class=\" prettyprinted\" tabindex=\"0\"><code class=\"language-csharp prettyprinted\"><span class=\"typ\">SetContentView<\/span> <span class=\"pun\">(<\/span><span class=\"lit\">2131492864<\/span><span class=\"pun\">);<\/span><\/code><\/pre>\n<p><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><span data-contrast=\"auto\">\u4f5c\u4e3a<\/span> <a href=\"https:\/\/developer.android.com\/tools\/aapt2\"><span data-contrast=\"none\">aapt2<\/span><\/a> <span data-contrast=\"auto\">\u6784\u5efa\u8fc7\u7a0b\u7684\u4e00\u90e8\u5206\uff0c\u5c06\u751f\u6210\u6587\u4ef6<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\"> R.txt<\/span><span data-contrast=\"auto\">\uff0c\u5176\u4e2d\u5305\u542b\u4ece\u8d44\u6e90\u7684<\/span><span data-contrast=\"auto\">\u201cstring\u201d<\/span><span data-contrast=\"auto\">\u540d\u79f0\u5230<\/span><span data-contrast=\"auto\"> Id <\/span><span data-contrast=\"auto\">\u7684\u6620\u5c04\u3002\u4f8b\u5982\uff0c<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\">layout\/Main.xml<\/span> <\/span><span data-contrast=\"auto\">\u53ef\u80fd\u6620\u5c04\u5230<\/span><span data-contrast=\"auto\"> id 2131492864\u3002<\/span><span data-contrast=\"auto\">\u4e3a\u4e86\u4ece<\/span><span data-contrast=\"auto\"> C# <\/span><span data-contrast=\"auto\">\u8bbf\u95ee\u6b64\u6570\u636e\uff0c\u6211\u4eec\u9700\u8981\u4e00\u79cd\u5728\u4ee3\u7801\u4e2d\u516c\u5f00\u8fd9\u4e9b\u6570\u636e\u7684\u65b9\u6cd5\u3002\u8fd9\u662f\u7531\u9879\u76ee<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> $(RootNamespace)<\/span> <\/span><span data-contrast=\"auto\">\u4e2d\u7684<\/span><span style=\"color: #ff0000;\" data-contrast=\"none\"> Resource <\/span><span data-contrast=\"auto\">\u7c7b\u5904\u7406\u7684\u3002\u6211\u4eec\u4ece<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> R.txt<\/span> <\/span><span data-contrast=\"auto\">\u4e2d\u83b7\u53d6\u503c\u5e76\u5c06\u5b83\u4eec\u516c\u5f00\u5728\u8fd9\u4e2a\u7c7b\u4e2d\u3002\u5728<\/span><span data-contrast=\"auto\"> .NET 7 <\/span><span data-contrast=\"auto\">\u53ca\u4e4b\u524d\u7248\u672c\u7684\u7cfb\u7edf\u4e2d\uff0c\u8be5\u7c7b\u88ab\u5199\u5165<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> Resource.designer.cs<\/span> <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u3002\u5b83\u5141\u8bb8\u7528\u6237\u4e0d\u9700\u8981\u786c\u7f16\u7801<\/span><span data-contrast=\"auto\">Id<\/span><span data-contrast=\"auto\">\u5c31\u53ef\u4ee5\u7f16\u5199\u53ef\u7ef4\u62a4\u7684\u4ee3\u7801\u3002\u6240\u4ee5\u4e0a\u9762\u7684\u8c03\u7528\u5b9e\u9645\u4e0a\u770b\u8d77\u6765\u50cf\u8fd9\u6837<\/span><span data-contrast=\"auto\">\uff1a<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<pre class=\" prettyprinted\" tabindex=\"0\"><code class=\"language-csharp prettyprinted\"><span class=\"typ\">SetContentView<\/span> <span class=\"pun\">(<\/span><span class=\"typ\">Resource<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Layout<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Main<\/span><span class=\"pun\">);<\/span><\/code><\/pre>\n<p><span data-contrast=\"auto\"><span style=\"color: #ff0000;\">Resource.Id.Main<\/span> <\/span><span data-contrast=\"auto\">\u5c06\u6620\u5c04\u5230<\/span> <a href=\"https:\/\/developer.android.com\/tools\/aapt2\"><span data-contrast=\"none\">aapt2<\/span><\/a> <span data-contrast=\"auto\">\u751f\u6210\u7684<\/span><span data-contrast=\"auto\"> Id\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<h3><b><span data-contrast=\"auto\">\u4e3a\u4ec0\u4e48\u8981\u5236\u5b9a\u8fd9\u4e2a\u65b0\u7cfb\u7edf\uff1f<\/span><\/b><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">\u65e7\u7cfb\u7edf\u5b58\u5728\u4e00\u4e9b\u5f71\u54cd\u5e94\u7528\u7a0b\u5e8f\u5927\u5c0f\u548c\u542f\u52a8\u6027\u80fd\u7684\u95ee\u9898\u3002\u5728\u65e7\u7cfb\u7edf\u4e2d\uff0c\u6bcf\u4e2a<\/span><span data-contrast=\"auto\"> Android <\/span><span data-contrast=\"auto\">\u7a0b\u5e8f\u96c6\u90fd\u6709\u81ea\u5df1\u7684\u4e00\u7ec4<\/span><span data-contrast=\"auto\">Resource<\/span><span data-contrast=\"auto\">\u7c7b\u3002\u6240\u4ee5\u6211\u4eec\u5b9e\u9645\u4e0a\u5230\u5904\u90fd\u6709\u91cd\u590d\u7684\u4ee3\u7801\u3002\u56e0\u6b64\uff0c\u5982\u679c\u60a8\u5728\u9879\u76ee\u4e2d\u4f7f\u7528<\/span><span data-contrast=\"auto\"> AndroidX<\/span><span data-contrast=\"auto\">\uff0c\u5219\u5f15\u7528<\/span><span data-contrast=\"auto\"> AndroidX <\/span><span data-contrast=\"auto\">\u7684\u6bcf\u4e2a\u7a0b\u5e8f\u96c6\u90fd\u4f1a\u6709\u4e00\u4e2a\u50cf\u4e0b\u9762\u7684<\/span><span data-contrast=\"auto\">Resource<\/span><span data-contrast=\"auto\">\u8bbe\u8ba1\u5668<\/span><span data-contrast=\"auto\"> Id <\/span><span data-contrast=\"auto\">\u7c7b<\/span><span data-contrast=\"auto\">\uff1a\u00a0<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<pre class=\" prettyprinted\" tabindex=\"0\"><code class=\"language-csharp prettyprinted\"><span class=\"kwd\">public<\/span> <span class=\"kwd\">class<\/span> <span class=\"typ\">Resource<\/span> <span class=\"pun\">{<\/span>\r\n    <span class=\"kwd\">public<\/span> <span class=\"kwd\">class<\/span> <span class=\"typ\">Id<\/span> <span class=\"pun\">{<\/span>\r\n        <span class=\"com\">\/\/ aapt resource value: 0x7F0A0005<\/span>\r\n        <span class=\"kwd\">public<\/span> <span class=\"kwd\">const<\/span> <span class=\"kwd\">int<\/span><span class=\"pln\"> seekBar <\/span><span class=\"pun\">=<\/span> <span class=\"lit\">2131361797<\/span><span class=\"pun\">;<\/span>\r\n        <span class=\"com\">\/\/ aapt resource value: 0x7F0A0006<\/span>\r\n        <span class=\"kwd\">public<\/span> <span class=\"kwd\">const<\/span> <span class=\"kwd\">int<\/span><span class=\"pln\"> menu <\/span><span class=\"pun\">=<\/span> <span class=\"lit\">2131361798<\/span><span class=\"pun\">;<\/span>\r\n    <span class=\"pun\">}<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<p><span data-contrast=\"auto\">\u8be5\u4ee3\u7801\u5c06\u5728\u6bcf\u4e2a\u5e93\u4e2d\u91cd\u590d\u3002\u53ef\u80fd\u8fd8\u6709\u5176\u4ed6\u7c7b\uff0c\u4f8b\u5982<\/span><i><span data-contrast=\"none\">Layout\/Menu\/Style<\/span><\/i><span data-contrast=\"auto\">\uff0c\u90fd\u5305\u542b\u8fd9\u4e9b\u91cd\u590d\u7684\u4ee3\u7801<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><span data-contrast=\"auto\">\u6b64\u5916\uff0c\u6bcf\u4e2a<\/span><span data-contrast=\"auto\">Resource<\/span><span data-contrast=\"auto\">\u7c7b\u90fd\u9700\u8981\u5728\u8fd0\u884c\u65f6\u66f4\u65b0\u4ee5\u83b7\u5f97\u6b63\u786e\u7684\u503c\u3002\u8fd9\u662f\u56e0\u4e3a\u53ea\u6709\u5f53\u6211\u4eec\u6784\u5efa\u6700\u7ec8\u5e94\u7528\u7a0b\u5e8f\u5e76\u751f\u6210<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> R.txt<\/span> <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u65f6\uff0c\u6211\u4eec\u624d\u77e5\u9053\u6bcf\u4e2a\u8d44\u6e90\u7684<\/span><span data-contrast=\"auto\">Id<\/span><span data-contrast=\"auto\">\u3002\u56e0\u6b64\u5e94\u7528\u7a0b\u5e8f<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\">Resource<\/span><span data-contrast=\"auto\">\u7c7b\u662f\u552f\u4e00\u5177\u6709\u6b63\u786e<\/span><span data-contrast=\"auto\"> Id<\/span><span data-contrast=\"auto\">\u7684\u7c7b\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u65e7\u7cfb\u7edf\u4f7f\u7528\u4e86\u540d\u4e3a<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\"> UpdateIdValues <\/span><span data-contrast=\"auto\">\u7684\u65b9\u6cd5\uff0c\u8be5\u65b9\u6cd5\u5728\u542f\u52a8\u65f6\u8c03\u7528\u3002\u8be5\u65b9\u6cd5\u5c06\u904d\u5386\u6240\u6709\u5e93\u9879\u76ee\u5e76\u66f4\u65b0\u8d44\u6e90<\/span><span data-contrast=\"auto\"> Id<\/span><span data-contrast=\"auto\">\u4ee5\u5339\u914d\u5e94\u7528\u7a0b\u5e8f\u4e2d\u7684\u8d44\u6e90<\/span><span data-contrast=\"auto\"> Id<\/span><span data-contrast=\"auto\">\u3002\u6839\u636e\u5e94\u7528\u7a0b\u5e8f\u7684\u5c3a\u5bf8\uff0c\u8fd9\u53ef\u80fd\u4f1a\u5bfc\u81f4\u4e25\u91cd\u7684\u542f\u52a8\u5ef6\u8fdf\u3002\u4e0b\u9762\u662f\u8be5\u65b9\u6cd5\u4e2d\u7684\u4ee3\u7801\u793a\u4f8b<\/span><span data-contrast=\"auto\">\uff1a<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<pre class=\" prettyprinted\" tabindex=\"0\"><code class=\"language-csharp prettyprinted\"><span class=\"kwd\">public<\/span> <span class=\"kwd\">static<\/span> <span class=\"kwd\">void<\/span> <span class=\"typ\">UpdateIdValues<\/span><span class=\"pun\">()<\/span>\r\n<span class=\"pun\">{<\/span>\r\n    <span class=\"kwd\">global<\/span><span class=\"pun\">::<\/span><span class=\"typ\">Library<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Resource<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Id<\/span><span class=\"pun\">.<\/span><span class=\"pln\">seekBar <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">global<\/span><span class=\"pun\">::<\/span><span class=\"typ\">Foo<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Foo<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Resource<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Id<\/span><span class=\"pun\">.<\/span><span class=\"pln\">seekBar<\/span><span class=\"pun\">;<\/span>\r\n    <span class=\"kwd\">global<\/span><span class=\"pun\">::<\/span><span class=\"typ\">Library<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Resource<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Id<\/span><span class=\"pun\">.<\/span><span class=\"pln\">menu <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">global<\/span><span class=\"pun\">::<\/span><span class=\"typ\">Foo<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Foo<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Resource<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Id<\/span><span class=\"pun\">.<\/span><span class=\"pln\">menu<\/span><span class=\"pun\">;<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<p><span data-contrast=\"auto\">\u66f4\u7cdf\u7cd5\u7684\u662f\uff0c<\/span><span data-contrast=\"none\">\u7531\u4e8e<\/span><span style=\"color: #ff0000;\" data-contrast=\"none\">UpdateIdValues<\/span><span data-contrast=\"none\">\u4ee3\u7801\u7684\u5b58\u5728\uff0c\u4fee\u526a\u5668\u65e0\u6cd5\u5220\u9664\u8fd9\u4e9b\u7c7b\u4e2d\u7684\u4efb\u4f55\u4e00\u4e2a\u3002\u56e0\u6b64\uff0c\u5373\u4f7f\u5e94\u7528\u7a0b\u5e8f\u53ea\u4f7f\u7528\u4e86\u4e00\u4e2a\u6216\u4e24\u4e2a\u5b57\u6bb5\uff0c\u6240\u6709\u8fd9\u4e9b\u7c7b\u90fd\u4f1a\u88ab\u4fdd\u7559<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><span data-contrast=\"none\">\u65b0\u7cfb\u7edf\u5bf9\u6240\u6709\u8fd9\u4e9b\u8fdb\u884c\u4e86\u91cd\u65b0\u8bbe\u8ba1\uff0c\u4ee5\u4f7f\u5176\u9002\u5e94\u4fee\u526a\u5668\uff0c\u51e0\u4e4e\u4ee5\u4e0a\u663e\u793a\u7684\u6240\u6709\u4ee3\u7801\u90fd\u4e0d\u518d\u751f\u6210\u3002<\/span> <span data-contrast=\"auto\">\uff0c<\/span><span data-contrast=\"auto\">\u751a\u81f3\u6839\u672c\u4e0d\u9700\u8981<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\"> UpdateIdValues <\/span><span data-contrast=\"auto\">\u8c03\u7528\u3002\u8fd9\u5c06\u6539\u5584\u5e94\u7528\u7a0b\u5e8f\u7684\u5927\u5c0f\u548c\u542f\u52a8\u65f6\u95f4<\/span><span data-contrast=\"auto\">\u3002\u00a0<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<h3><b><span data-contrast=\"auto\">\u8fd9\u4e2a\u65b0\u7cfb\u7edf\u662f\u5982\u4f55\u8fd0\u4f5c\u7684<\/span><\/b><b><span data-contrast=\"auto\">\uff1f<\/span><\/b><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">\u9ed8\u8ba4\u60c5\u51b5\u4e0b<\/span><span data-contrast=\"auto\">\uff0c.NET 8 Android<\/span><span data-contrast=\"auto\">\u5c06<\/span><span data-contrast=\"auto\"> MSBuild <\/span><span data-contrast=\"auto\">\u5c5e\u6027<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\"> $(AndroidUseDesignerAssembly) <\/span><span data-contrast=\"auto\">\u8bbe\u7f6e\u4e3a<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> true<\/span>\uff0c<\/span><span data-contrast=\"auto\">\u5b8c\u5168\u5173\u95ed\u65e7\u7cfb\u7edf\u3002\u91cd\u65b0\u542f\u7528\u65e7\u7cfb\u7edf\u9700\u8981\u624b\u52a8\u5c06\u6b64\u5c5e\u6027\u66f4\u6539\u4e3a<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> false<\/span>\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u65b0\u7cfb\u7edf\u4f9d\u8d56\u4e8e\u89e3\u6790<\/span> <a href=\"https:\/\/developer.android.com\/tools\/aapt2\"><span data-contrast=\"none\">aapt2<\/span><\/a> <span data-contrast=\"auto\">\u5728\u6784\u5efa\u8fc7\u7a0b\u4e2d\u751f\u6210\u7684<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> R.txt<\/span> <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u3002\u5728\u8fd0\u884c<\/span><span data-contrast=\"auto\"> C# <\/span><span data-contrast=\"auto\">\u7f16\u8bd1\u5668\u4e4b\u524d\uff0c\u5c06\u89e3\u6790<\/span><span data-contrast=\"auto\"> R.txt <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u5e76\u751f\u6210\u65b0\u7684\u7a0b\u5e8f\u96c6\u3002\u8be5\u7a0b\u5e8f\u96c6\u5c06\u4fdd\u5b58\u5728<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\">IntermediateOutputPath<\/span> <\/span><span data-contrast=\"auto\">\u4e2d\uff0c\u5e76\u4e14\u5b83\u4f1a\u81ea\u52a8\u6dfb\u52a0\u5230\u5e94\u7528\u7a0b\u5e8f\u6216\u5e93\u7684<\/span><span data-contrast=\"none\">\u5f15\u7528<\/span><span data-contrast=\"auto\">\u5217\u8868\u4e2d\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u5bf9\u4e8e\u5e93\u9879\u76ee\uff0c\u6211\u4eec\u751f\u6210\u5f15\u7528\u7a0b\u5e8f\u96c6\u800c\u4e0d\u662f\u5b8c\u6574\u7a0b\u5e8f\u96c6\u3002\u8fd9\u5411\u7f16\u8bd1\u5668\u53d1\u51fa\u4fe1\u53f7\uff0c\u8868\u660e\u8be5\u7a0b\u5e8f\u96c6\u5c06\u5728\u8fd0\u884c\u65f6\u88ab\u66ff\u6362\u3002<\/span><span data-contrast=\"auto\">\uff08<\/span><a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/standard\/assembly\/reference-assemblies\"><span data-contrast=\"auto\">\u5f15\u7528<\/span><span data-contrast=\"none\">\u7a0b\u5e8f\u96c6<\/span><\/a><span data-contrast=\"auto\">\u662f\u5305\u542b\u7a0b\u5e8f\u7ea7<\/span> <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/api\/system.runtime.compilerservices.referenceassemblyattribute?view=net-7.0\"><span data-contrast=\"none\">ReferenceAssemblyAttribute<\/span><\/a> <span data-contrast=\"auto\">\u7684\u7a0b\u5e8f\u96c6\u3002\uff09<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u5bf9\u4e8e\u5e94\u7528\u7a0b\u5e8f\u9879\u76ee\uff0c\u6211\u4eec\u751f\u6210\u5b8c\u6574\u7684\u7a0b\u5e8f\u96c6\u4f5c\u4e3a<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> UpdateAndroidResources<\/span> <\/span><span data-contrast=\"auto\">\u76ee\u6807\u7684\u4e00\u90e8\u5206\u3002<\/span> <span data-contrast=\"auto\">\u8fd9\u786e\u4fdd\u6211\u4eec\u4f7f\u7528\u7684\u662f<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> R.txt<\/span> <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u4e2d\u7684\u6700\u7ec8\u503c\u3002\u8fd9\u4e2a\u6700\u7ec8\u7684\u7a0b\u5e8f\u96c6\u5c06\u4f7f\u7528\u6700\u7ec8\u7684\u5305\u8fdb\u884c\u90e8\u7f72<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u9664\u4e86\u7a0b\u5e8f\u96c6\u4e4b\u5916\uff0c\u8fd8\u5c06\u751f\u6210\u6e90\u6587\u4ef6<\/span><span data-contrast=\"auto\"> _<span style=\"color: #ff0000;\">_Microsoft.Android.Resource.Designer.cs<\/span><\/span><span data-contrast=\"auto\">\uff0c\u5982\u679c\u60a8\u4f7f\u7528<\/span><span data-contrast=\"auto\"> F#<\/span><span data-contrast=\"auto\">\uff0c\u6e90\u6587\u4ef6\u4e3a<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> __Microsoft.Android.Resource.Designer.fs<\/span>\u3002<\/span><span data-contrast=\"auto\">\u5b83\u5305\u542b\u4e00\u4e2a\u4ece<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> Resource<\/span> <\/span><span data-contrast=\"auto\">\u7c7b\u6d3e\u751f\u7684\u7c7b\u3002\u5b83\u5c06\u5b58\u5728\u4e8e\u9879\u76ee\u7684<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> $(RootNamespace<\/span>) <\/span><span data-contrast=\"auto\">\u4e2d\u3002<\/span><span data-contrast=\"none\">\u8fd9\u662f\u4f7f\u73b0\u6709\u4ee3\u7801\u80fd\u591f\u6b63\u5e38\u5de5\u4f5c\u7684\u7ebd\u5e26<\/span> <span data-contrast=\"auto\">\u3002 <\/span><span data-contrast=\"auto\">\u56e0\u4e3a<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\">Resource<\/span><span data-contrast=\"auto\">\u7c7b\u7684\u547d\u540d\u7a7a\u95f4\u4e0d\u4f1a\u6539\u53d8\u3002\u5bf9\u4e8e\u5e94\u7528\u7a0b\u5e8f\u9879\u76ee\uff0c\u9879\u76ee<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\"> RootNamespace <\/span><span data-contrast=\"auto\">\u4e2d\u7684<\/span><span data-contrast=\"auto\"><span style=\"color: #ff0000;\"> Resource<\/span> <\/span><span data-contrast=\"auto\">\u7c7b\u5c06\u4ece\u8bbe\u8ba1\u5668\u7a0b\u5e8f\u96c6\u4e2d\u7684<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\"> ResourceConstants <\/span><span data-contrast=\"auto\">\u7c7b\u6d3e\u751f\u3002<\/span><span data-contrast=\"none\">\u8fd9\u662f\u4e3a\u4e86\u4fdd\u6301\u4e0e\u65e7\u7684<\/span><span style=\"color: #ff0000;\" data-contrast=\"none\">Resource.designer.cs<\/span><span data-contrast=\"none\">\u6587\u4ef6\u5728\u5e94\u7528\u7a0b\u5e8f\u9879\u76ee\u4e2d\u7684\u5de5\u4f5c\u65b9\u5f0f\u7684\u5411\u540e\u517c\u5bb9\u6027<\/span> <span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u6d4b\u8bd5\u8868\u660e\u6211\u4eec\u53ef\u4ee5\u5c06\u542f\u52a8\u65f6\u95f4\u7f29\u77ed\u7ea6<\/span><strong> 8%<\/strong><span data-contrast=\"auto\">\u3002\u6574\u4f53\u5c01\u88c5\u5c3a\u5bf8\u5927\u7ea6\u51cf\u5c11<\/span><span data-contrast=\"auto\"><strong> 2%-4%<\/strong>\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2023\/10\/startup-graph.png\" alt=\"Graph showing Android Startup time improvements\" \/><\/p>\n<h3><b><span data-contrast=\"auto\">\u6211\u7684<\/span><\/b><b><span data-contrast=\"auto\"> NuGet <\/span><\/b><b><span data-contrast=\"auto\">\u5305\u4ecd\u7136\u6709\u6548\u5417\uff1f<\/span><\/b><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">\u6709\u4e9b\u4eba\u53ef\u80fd\u62c5\u5fc3\u901a\u8fc7\u6b64\u66f4\u6539\uff0c\u73b0\u6709\u7684\u5305\u5f15\u7528\u5c06\u505c\u6b62\u5de5\u4f5c\u3002\u4e0d\u7528\u62c5\u5fc3\uff0c\u65b0\u7cfb\u7edf\u5f15\u5165\u4e86\u4e00\u4e2a\u4fee\u526a\u6b65\u9aa4\uff0c\u5b83\u5c06\u4f1a\u5347\u7ea7\u65e7\u7cfb\u7edf\u7684\u7a0b\u5e8f\u96c6\u5f15\u7528\u4ee5\u4f7f\u7528\u65b0\u7cfb\u7edf\u3002\u8fd9\u5c06\u4f5c\u4e3a\u6784\u5efa\u7684\u4e00\u90e8\u5206\u81ea\u52a8\u5b8c\u6210\u3002\u6b64\u4fee\u526a\u6b65\u9aa4\u5206\u6790\u6240\u6709\u7a0b\u5e8f\u96c6\u4e2d\u7684<\/span><span data-contrast=\"auto\"> IL<\/span><span data-contrast=\"auto\">\uff0c\u67e5\u627e\u4f7f\u7528\u65e7<\/span><span data-contrast=\"auto\"> Resource.designer <\/span><span data-contrast=\"auto\">\u5b57\u6bb5\u7684\u4f4d\u7f6e\u3002\u7136\u540e\uff0c<\/span><span data-contrast=\"none\">\u5b83\u5c06\u66f4\u65b0\u8fd9\u4e9b\u5730\u65b9\u4ee5\u4f7f\u7528\u65b0\u7684Designer\u7a0b\u5e8f\u96c6\u5c5e\u6027\u3002\u5b83\u8fd8\u5c06\u5b8c\u5168\u5220\u9664\u8be5\u7a0b\u5e8f\u96c6\u4e2d\u7684\u65e7<\/span><span data-contrast=\"none\">Resource.designer\u3002<\/span><span data-contrast=\"auto\">\u56e0\u6b64\uff0c\u5373\u4f7f\u60a8\u4f7f\u7528\u65e7\u8f6f\u4ef6\u5305\uff0c\u60a8\u4ecd\u7136\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e2a\u65b0\u7cfb\u7edf<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u94fe\u63a5\u5668\u6b65\u9aa4\u5e94\u8be5\u6db5\u76d6\u8bbf\u95ee<\/span><span data-contrast=\"auto\"> Resource.designer.cs <\/span><span data-contrast=\"auto\">\u5b57\u6bb5\u7684\u51e0\u4e4e\u6240\u6709\u4ee3\u7801\u3002\u4f46\u662f\uff0c\u5982\u679c\u60a8\u9047\u5230\u95ee\u9898\uff0c\u8bf7\u5728<\/span><span data-contrast=\"auto\"> https:\/\/github.com\/xamarin\/xamarin-android\/issues\/new\/choose <\/span><span data-contrast=\"auto\">\u4e0a\u63d0\u4ea4\u95ee\u9898<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u8fd9\u4e2a\u529f\u80fd\u5c06\u9002\u7528\u4e8e<\/span><span data-contrast=\"auto\"> net8.0-android <\/span><span data-contrast=\"auto\">\u4e4b\u524d\u7684\u4efb\u4f55<\/span><span data-contrast=\"auto\"> Android <\/span><span data-contrast=\"auto\">\u7a0b\u5e8f\u96c6\u5f15\u7528<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u4f7f\u7528\u65b0\u7cfb\u7edf\u6784\u5efa\u7684\u5305\u4e0d\u80fd\u4e0e\u4ee5\u524d\u7248\u672c\u7684<\/span><span data-contrast=\"auto\">.NET Android <\/span><span data-contrast=\"auto\">\u4e00\u8d77\u4f7f\u7528\u3002\u5982\u679c\u60a8\u9700\u8981\u652f\u6301<\/span><span data-contrast=\"auto\"> .NET 7 <\/span><span data-contrast=\"auto\">\u6216<\/span><span data-contrast=\"auto\"> Classic Xamarin.Android<\/span><span data-contrast=\"auto\">\uff0c\u8bf7\u8003\u8651\u4f7f\u7528\u591a\u76ee\u6807\u5b9a\u4f4d<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<h3><b><span data-contrast=\"auto\">NuGet <\/span><\/b><b><span data-contrast=\"auto\">\u5305\u4f5c\u8005<\/span><\/b><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">\u5982\u679c\u60a8\u6b63\u5728\u7ef4\u62a4\u5305\u542b<\/span><span data-contrast=\"auto\"> Android <\/span><span data-contrast=\"auto\">\u8d44\u6e90\u7684<\/span><span data-contrast=\"auto\"> NuGet <\/span><span data-contrast=\"auto\">\u5305\uff0c\u5982\u679c\u662f\u7684\u8bdd\uff0c\u60a8\u5c06\u9700\u8981\u8fdb\u884c\u4e00\u4e9b\u66f4\u6539\u3002\u9996\u5148\uff0c\u4e0d\u9700\u8981\u968f<\/span><span data-contrast=\"auto\"> NuGet <\/span><span data-contrast=\"auto\">\u4e00\u8d77\u63d0\u4f9b\u65b0\u7684<\/span><span data-contrast=\"auto\"> _Microsoft.Android.Resource.Designer.dll<\/span><span data-contrast=\"auto\">\u3002\u5b83\u5c06\u7531\u4f7f\u7528<\/span><span data-contrast=\"auto\"> NuGet <\/span><span data-contrast=\"auto\">\u7684\u5e94\u7528\u7a0b\u5e8f\u5728\u6784\u5efa\u65f6\u751f\u6210<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u65b0\u7cfb\u7edf\u4e0e<\/span><span data-contrast=\"auto\"> Classic Pre .NET Xamarin.Android <\/span><span data-contrast=\"auto\">\u4ee5\u53ca<\/span><span data-contrast=\"auto\"> .NET 6\/7 Android <\/span><span data-contrast=\"auto\">\u8f6f\u4ef6\u5305\u4e0d\u517c\u5bb9\u3002\u56e0\u6b64\uff0c\u5982\u679c\u60a8\u60f3\u7ee7\u7eed\u652f\u6301<\/span><span data-contrast=\"auto\"> Classic Xamarin.Android <\/span><span data-contrast=\"auto\">\u4ee5\u53ca<\/span><span data-contrast=\"auto\"> .NET 8\uff0c<\/span><span data-contrast=\"auto\">\u60a8\u5c06\u9700\u8981\u5bf9\u7a0b\u5e8f\u96c6\u8fdb\u884c\u591a\u76ee\u6807\u64cd\u4f5c\u3002\u5982\u679c\u60a8\u4e0d\u518d\u9700\u8981\u652f\u6301<\/span><span data-contrast=\"auto\"> Xamarin.Android <\/span><span data-contrast=\"auto\">\u7c7b\uff0c\u60a8\u53ef\u4ee5\u5c06\u9879\u76ee\u5347\u7ea7\u5230<\/span><span data-contrast=\"auto\"> .NET Sdk Style <\/span><span data-contrast=\"auto\">\u9879\u76ee\u5e76\u4f7f\u7528\u4ee5\u4e0b\u5185\u5bb9<\/span><span data-contrast=\"auto\">\uff1a<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<pre class=\" prettyprinted\" tabindex=\"0\"><code class=\"language-xml prettyprinted\"><span class=\"tag\">&lt;TargetFrameworks&gt;<\/span><span class=\"pln\">net7.0-android;net8.0-android<\/span><span class=\"tag\">&lt;\/TargetFrameworks&gt;<\/span><\/code><\/pre>\n<p><span data-contrast=\"auto\">Classic Xamarin.Android <\/span><span data-contrast=\"auto\">\u5c06\u4e8e\u660e\u5e74\u505c\u6b62\u652f\u6301\uff0c\u6240\u4ee5\u8fd9\u53ef\u80fd\u662f\u6700\u4f73\u9009\u62e9\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u5982\u679c\u60a8\u9700\u8981\u652f\u6301\u8fd9\u4e24\u4e2a\u7cfb\u7edf\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528<\/span><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/android-resource-designer-dotnet-8\/\"><span data-contrast=\"none\">Xamarin.Legacy.Sdk<\/span><\/a><span data-contrast=\"auto\">\u6765\u540c\u65f6\u652f\u6301<\/span><span data-contrast=\"auto\"> Xamarin.Android <\/span><span data-contrast=\"auto\">\u548c<\/span><span data-contrast=\"auto\"> net8.0-android\u3002 <\/span><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/android-resource-designer-dotnet-8\/\"><span data-contrast=\"none\">Xamarin.Legacy.Sdk<\/span><\/a><span data-contrast=\"auto\">\u662f\u4e0d\u53d7\u652f\u6301\u7684<\/span><span data-contrast=\"auto\">\uff0c<\/span><span data-contrast=\"auto\">\u6240\u4ee5\u5b83\u53ea\u80fd\u4f5c\u4e3a\u7528\u6237\u5347\u7ea7\u5230<\/span><span data-contrast=\"auto\"> .NET 8 <\/span><span data-contrast=\"auto\">\u65f6\u7684\u6743\u5b9c\u4e4b\u8ba1\u3002\u6709\u5173\u5982\u4f55\u4f7f\u7528\u6b64\u5305\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605<\/span><span data-contrast=\"auto\"> Xamarin.Legacy.Sdk GitHub <\/span><span data-contrast=\"auto\">\u7ad9\u70b9<\/span> <a href=\"https:\/\/github.com\/xamarin\/Xamarin.Legacy.Sdk\"><span data-contrast=\"auto\">https:\/\/github.com\/xamarin\/<\/span><span data-contrast=\"none\">Xamarin.Legacy.Sdk<\/span><\/a><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u4ece<\/span><span data-contrast=\"auto\"> .NET 6 android <\/span><span data-contrast=\"auto\">\u5f00\u59cb\uff0c<\/span><span data-contrast=\"auto\">AndroidResource\u3001AndroidAsset\u3001AndroidEnvironment\u3001AndroidJavaLibrary\u3001EmbeddedNativeLibrary <\/span><span data-contrast=\"auto\">\u548c<\/span><span data-contrast=\"auto\"> AndroidNativeLibrary <\/span><span data-contrast=\"auto\">\u9879\u4e0d\u518d\u6253\u5305\u5728\u7a0b\u5e8f\u96c6\u4e2d\u3002\u800c\u662f\u5728\u6784\u5efa\u65f6\u4f1a\u751f\u6210\u4e00\u4e2a<\/span><span data-contrast=\"auto\"> .aar <\/span><span data-contrast=\"auto\">\u6587\u4ef6\uff0c\u5176\u4e2d\u5305\u542b\u8fd9\u4e9b\u6570\u636e\uff0c\u5e76\u547d\u540d\u4e3a\u4e0e\u7a0b\u5e8f\u96c6\u76f8\u540c\u7684\u540d\u79f0\u3002\u4e3a\u4e86\u6b63\u5e38\u5de5\u4f5c\uff0c\u9700\u8981\u5c06<\/span><span data-contrast=\"auto\">.aar <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u4e0e\u7a0b\u5e8f\u96c6\u4e00\u8d77\u53d1\u9001\u5230<\/span><span data-contrast=\"auto\"> NuGet <\/span><span data-contrast=\"auto\">\u4e2d\u3002\u5982\u679c\u4e0d\u5305\u542b<\/span><span data-contrast=\"auto\">.aar\uff0c<\/span><span data-contrast=\"auto\">\u5728\u8fd0\u884c\u65f6\u5c06\u4f1a\u51fa\u73b0\u8d44\u6e90\u4e22\u5931\u9519\u8bef\uff0c\u4f8b\u5982<\/span><span data-contrast=\"auto\">\uff1a<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<pre class=\" prettyprinted\" tabindex=\"0\"><code class=\"language-csharp prettyprinted\"><span class=\"typ\">System<\/span><span class=\"pun\">.<\/span><span class=\"typ\">MissingMethodException<\/span><span class=\"pun\">:<\/span> <span class=\"str\">'Method not found: int .Style.get_MyTheme()'<\/span><\/code><\/pre>\n<p><span data-contrast=\"auto\">\u5982\u679c\u60a8\u5728\u9879\u76ee\u4e2d\u4f7f\u7528<\/span><span style=\"color: #ff0000;\" data-contrast=\"auto\"> dotnet pack <\/span><span data-contrast=\"auto\">\u5e76\u5728<\/span><span data-contrast=\"auto\"> csproj <\/span><span data-contrast=\"auto\">\u4e2d\u6307\u5b9a<\/span><span data-contrast=\"auto\"> NuGet <\/span><span data-contrast=\"auto\">\u5c5e\u6027\u548c\u8bbe\u7f6e\uff0c\u5219\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u5305\u542b<\/span><span data-contrast=\"auto\"> .aar<\/span><span data-contrast=\"auto\">\u3002\u4f46\u662f\uff0c\u5982\u679c\u60a8\u4f7f\u7528<\/span><span data-contrast=\"auto\"> .nuspec<\/span><span data-contrast=\"auto\">\uff0c\u5219\u9700\u8981\u624b\u52a8\u5c06<\/span><span data-contrast=\"auto\"> .aar <\/span><span data-contrast=\"auto\">\u6587\u4ef6\u6dfb\u52a0\u5230\u8981\u5305\u542b\u7684\u6587\u4ef6\u5217\u8868\u4e2d\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><span data-contrast=\"none\">\u4e0e.<\/span><span data-contrast=\"none\">aar<\/span><span data-contrast=\"none\">\u6587\u4ef6\u548c\u5d4c\u5165\u6587\u4ef6\u76f8\u5173\u7684\u66f4\u6539\u5728<\/span><a href=\"https:\/\/github.com\/xamarin\/xamarin-android\/blob\/main\/Documentation\/guides\/OneDotNetEmbeddedResources.md\"><span data-contrast=\"none\">OneDotNetEmbeddedResources.md<\/span><\/a><span data-contrast=\"none\">\u4e2d\u6709\u6587\u6863\u8bb0\u5f55\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<h3><b><span data-contrast=\"auto\">\u603b\u7ed3<\/span><\/b><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">\u56e0\u6b64\uff0c\u65b0\u7cfb\u7edf\u4f1a\u5bfc\u81f4\u8f6f\u4ef6\u5305\u5927\u5c0f\u7565\u5fae\u7f29\u5c0f<\/span><span data-contrast=\"auto\">\uff0c<\/span><span data-contrast=\"auto\">\u5e76\u4e14\u542f\u52a8\u65f6\u95f4\u66f4\u5feb\u3002\u60a8\u5728\u5e94\u7528\u7a0b\u5e8f\u4e2d\u4f7f\u7528\u7684\u8d44\u6e90\u8d8a\u591a\uff0c\u5f71\u54cd\u5c31\u8d8a\u5927<\/span><span data-contrast=\"auto\">\u3002<\/span><span data-ccp-props=\"{&quot;134245417&quot;:false,&quot;335551550&quot;:6,&quot;335551620&quot;:6}\">\u00a0<\/span><\/p>\n<p>\u5982\u679c\u5927\u5bb6\u6709\u4efb\u4f55\u7684\u6280\u672f\u95ee\u9898\uff0c\u6b22\u8fce\u5230\u6211\u4eec\u7684\u5b98\u65b9\u7684<a href=\"https:\/\/learn.microsoft.com\/zh-cn\/answers\/tags\/97\/dotnet\">.NET\u4e2d\u6587\u8bba\u575b<\/a> \u63d0\u95ee\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u7bc7\u7ffb\u8bd1\u4e8eDean Ellis\u7684\u00a0Improvements &amp; Changes in Android resource generation in .NET 8 &#8211; .NET Blog (microsoft.com)\u00a0 \u968f\u7740 .NET 8 \u7684\u53d1\u5e03\uff0c\u6211\u4eec\u5f15\u5165\u4e86\u4e00\u4e2a\u65b0\u7cfb\u7edf\uff0c\u7528\u4e8e\u751f\u6210\u8bbf\u95ee Android \u8d44\u6e90\u7684 C# \u4ee3\u7801\u3002 \u5728 Xamarin.Android\u3001.NET 6 \u548c .NET 7 \u4e2d\u751f\u6210 Resource.designer.cs \u6587\u4ef6\u7684\u7cfb\u7edf\u5df2\u7ecf\u88ab\u5f03\u7528\u3002 \u65b0\u7cfb\u7edf\u751f\u6210\u4e00\u4e2a\u540d\u4e3a _Microsoft.Android.Resource.Designer \u7a0b\u5e8f\u96c6\u3002\u5176\u4e2d\u5305\u542b\u6bcf\u4e2a\u7a0b\u5e8f\u96c6\u7684\u6240\u6709\u6700\u7ec8\u8d44\u6e90\u7c7b\u3002\u00a0 \u4ec0\u4e48\u662f Android \u8d44\u6e90\uff1f\u00a0 \u6240\u6709 Android \u5e94\u7528\u7a0b\u5e8f\u90fd\u5305\u542b\u4e00\u4e9b\u7528\u6237\u754c\u9762\u8d44\u6e90\u3002\u5b83\u4eec\u901a\u5e38\u5177\u6709 XML \u6587\u4ef6\u5f62\u5f0f\uff0c\u5305\u542b\u7528\u6237\u754c\u9762\u5e03\u5c40\u3001png \u6216 svg \u6587\u4ef6\u5f62\u5f0f\u7684\u56fe\u50cf\u548c\u56fe\u6807\u4ee5\u53ca\u5305\u542b\u6837\u5f0f\u548c\u4e3b\u9898\u7b49\u5185\u5bb9\u7684\u503c\u3002\u8bf7\u53c2\u9605 Google \u6587\u6863\u4ee5\u6df1\u5165\u4e86\u89e3 Android \u8d44\u6e90\u3002\u00a0 \u00a0Android\u6784\u5efa\u8fc7\u7a0b\u7684\u4e00\u90e8\u5206\u662f\u4f7f\u7528android sdk\u5de5\u5177aapt2\u5c06\u8fd9\u4e9b\u8d44\u6e90\u7f16\u8bd1\u6210\u4e8c\u8fdb\u5236\u5f62\u5f0f\u3002\u4e3a\u4e86\u8bbf\u95ee\u8fd9\u4e9b\u8d44\u6e90\uff0candroid \u516c\u5f00\u4e86\u4e00\u4e2a API\uff0c\u5b83\u5141\u8bb8\u60a8\u4f20\u9012\u4e00\u4e2a\u6574\u6570 id [&hellip;]<\/p>\n","protected":false},"author":97248,"featured_media":567,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[16,5,25],"class_list":["post-565","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet-ch","tag-net-8","tag-net-maui","tag-android"],"acf":[],"blog_post_summary":"<p>\u672c\u7bc7\u7ffb\u8bd1\u4e8eDean Ellis\u7684\u00a0Improvements &amp; Changes in Android resource generation in .NET 8 &#8211; .NET Blog (microsoft.com)\u00a0 \u968f\u7740 .NET 8 \u7684\u53d1\u5e03\uff0c\u6211\u4eec\u5f15\u5165\u4e86\u4e00\u4e2a\u65b0\u7cfb\u7edf\uff0c\u7528\u4e8e\u751f\u6210\u8bbf\u95ee Android \u8d44\u6e90\u7684 C# \u4ee3\u7801\u3002 \u5728 Xamarin.Android\u3001.NET 6 \u548c .NET 7 \u4e2d\u751f\u6210 Resource.designer.cs \u6587\u4ef6\u7684\u7cfb\u7edf\u5df2\u7ecf\u88ab\u5f03\u7528\u3002 \u65b0\u7cfb\u7edf\u751f\u6210\u4e00\u4e2a\u540d\u4e3a _Microsoft.Android.Resource.Designer \u7a0b\u5e8f\u96c6\u3002\u5176\u4e2d\u5305\u542b\u6bcf\u4e2a\u7a0b\u5e8f\u96c6\u7684\u6240\u6709\u6700\u7ec8\u8d44\u6e90\u7c7b\u3002\u00a0 \u4ec0\u4e48\u662f Android \u8d44\u6e90\uff1f\u00a0 \u6240\u6709 Android \u5e94\u7528\u7a0b\u5e8f\u90fd\u5305\u542b\u4e00\u4e9b\u7528\u6237\u754c\u9762\u8d44\u6e90\u3002\u5b83\u4eec\u901a\u5e38\u5177\u6709 XML \u6587\u4ef6\u5f62\u5f0f\uff0c\u5305\u542b\u7528\u6237\u754c\u9762\u5e03\u5c40\u3001png \u6216 svg \u6587\u4ef6\u5f62\u5f0f\u7684\u56fe\u50cf\u548c\u56fe\u6807\u4ee5\u53ca\u5305\u542b\u6837\u5f0f\u548c\u4e3b\u9898\u7b49\u5185\u5bb9\u7684\u503c\u3002\u8bf7\u53c2\u9605 Google \u6587\u6863\u4ee5\u6df1\u5165\u4e86\u89e3 Android \u8d44\u6e90\u3002\u00a0 \u00a0Android\u6784\u5efa\u8fc7\u7a0b\u7684\u4e00\u90e8\u5206\u662f\u4f7f\u7528android sdk\u5de5\u5177aapt2\u5c06\u8fd9\u4e9b\u8d44\u6e90\u7f16\u8bd1\u6210\u4e8c\u8fdb\u5236\u5f62\u5f0f\u3002\u4e3a\u4e86\u8bbf\u95ee\u8fd9\u4e9b\u8d44\u6e90\uff0candroid \u516c\u5f00\u4e86\u4e00\u4e2a API\uff0c\u5b83\u5141\u8bb8\u60a8\u4f20\u9012\u4e00\u4e2a\u6574\u6570 id [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/posts\/565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/users\/97248"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/comments?post=565"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/posts\/565\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/media\/567"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/media?parent=565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/categories?post=565"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet-ch\/wp-json\/wp\/v2\/tags?post=565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}