VS2019创建Xamarin项目时App1无法使用Android库的问题咨询
问题解答
是的,App1作为Xamarin.Forms的跨平台核心项目,本身确实不能直接引用Android专属库。原因很简单:这个项目的代码是要在iOS、Android、UWP等多个平台上运行的,Android库依赖Android系统独有的API,其他平台根本无法识别这些代码,直接引用必然报错。
下面是几种可行的解决方法:
依赖服务(Dependency Service,官方推荐)
这是Xamarin.Forms跨平台调用原生功能的标准方式,步骤如下:- 在App1项目里定义一个接口,比如:
public interface IAndroidService { void DoAndroidSpecificWork(); } - 在App1.Android项目中实现这个接口,并且添加依赖标记:
using Xamarin.Forms; [assembly: Dependency(typeof(AndroidServiceImplementation))] namespace App1.Droid { public class AndroidServiceImplementation : IAndroidService { public void DoAndroidSpecificWork() { // 这里写调用Android库的代码 } } } - 在App1的业务代码中,通过依赖服务获取实例并调用:
var androidService = DependencyService.Get<IAndroidService>(); androidService?.DoAndroidSpecificWork();
- 在App1项目里定义一个接口,比如:
条件编译(仅适合简单临时场景)
如果你只是想快速测试,不想搞复杂的接口,可以在App1项目中用条件编译指令包裹Android相关代码,同时给App1项目添加对Android库的引用(注意:这种方式会污染共享项目的跨平台特性,不推荐长期使用):#if __ANDROID__ // 这里写调用Android库的代码,只有在Android平台编译时才会生效 #endif封装适配层
如果你的Android库有对应的.NET标准兼容版本,或者你可以自己写一个适配层:- 创建一个.NET标准类库,定义通用接口。
- 在App1.Android项目中实现这个接口,内部调用Android库。
- App1项目只引用这个.NET标准类库,通过接口调用功能,避免直接依赖Android库。
内容的提问来源于stack exchange,提问作者user19432624
相关产品推荐
相关产品推荐

