각 클라이언트마다 다른 스타일의 앱을 사용할 수 있도록 프로젝트를 설정 했으므로 디자인을 스트리밍하려고합니다. 현재는 PCL이 있고 각 클라이언트에 Android 및 iOS 프로젝트가 있으므로 설정됩니다. 즉, 앱 사이드 코드에서 무엇인가를 변경하면 각 프로젝트에서 수동으로 변경해야합니다.Xamarin 공유 Android 및 iOS 앱이 여러 개인 기본 Android 및 iOS 프로젝트
저는 개인용 컬러 스타일링, 이미지 및 번들 식별자를 가진 다른 프로젝트 각각이 상속 할 수있는 플랫폼 특정 인터페이스 코드가있는 기본 Android 및 iOS 프로젝트가 있으므로 PCL과 기본 Android 및 iOS 프로젝트를 갖기 위해 변경하려고 시도해 왔습니다.
- PCL Poject (공유 코드, 양식 등)
- Android.Shared (안드로이드 애플리케이션/플랫폼 특정 코드를 공유 자원/지역화에)
- Android.Client1Theme (사용자 정의 자원 (로고, 색상, 등) 클라이언트 1의 경우)
Android.Client2Theme (사용자 정의 자원 클라이언트 2에 대한 (로고, 색상 등)) 안드로이드 애플 리케이션을위한
iOS.Shared (공유 리소스/지역화에/플랫폼 특정 코드)
- iOS.Client1Theme (클라이언트 2에 대한 사용자 정의 자원 (로고, 색상 등)) (클라이언트 1에 대한 사용자 정의 자원 (로고, 색상 등))
- iOS.Client2Theme는
나는이 입수했습니다 새로운 안드로이드 프로젝트를 만들고 공유 된 안드로이드 프로젝트와 PCL에 대한 참조를 추가함으로써 단순히 안드로이드를 위해 일하십시오.
동일한 방식으로 iOS에서 작동하는 데 문제가 있습니다. 그것은 가까운, iOS 애플 리케이션은 올바른 스타일로 새로운 애플 리케이션으로 컴파일하지만 인터페이스 메소드에 액세스하려고 할 때마다 DependencyService가 충돌합니다. 다음은
exception thrown on iOS interface access
DependencyService.Get<ISystemFunctions>().ToggleTorch();
[assembly: Dependency(typeof(SystemFunctions_iOS))]
namespace SharedApp.iOS.iOS_Interfaces
{
public class SystemFunctions_iOS : ISystemFunctions
{
public SystemFunctions_iOS()
{ }
public void ToggleTorch()
{
var device = AVCaptureDevice.GetDefaultDevice(AVMediaTypes.Video);
if (device == null)
return;
device.LockForConfiguration(out NSError error);
if (error != null)
{
device.UnlockForConfiguration();
return;
}
else
{
device.TorchMode = device.TorchMode == AVCaptureTorchMode.On ? AVCaptureTorchMode.Off : AVCaptureTorchMode.On;
device.UnlockForConfiguration();
}
}
}
}
내가 도와 줄 수있는 다른 것이 있다면 알려주십시오.
'DependencyService.Get()'메소드가 Android 프로젝트에서 작동 했습니까? –
그래, iOS에서 잘 작동합니다. 내가 아래에 게시 오전 내 문제에 대한 해결책을 찾았 – LPQ
* 안드로이드에 잘 작동합니다. – LPQ