Include headers in UNO for iOS


i need help with UNO file and build iOS version. On build phase i have these messages:
(fuse version 0.29.0)

Building iOS app
/opt/fuse/xy/build/iOS/Debug/src/ error: 'QRCodeReader.h' file not found with <angled> include; use "quotes" instead
/opt/fuse/xy/build/iOS/Debug/src/ error: 'QRCodeReaderViewController.h' file not found with <angled> include; use "quotes" instead
/opt/fuse/xy/build/iOS/Debug/src/ error: 'QReaderTask.h' file not found with <angled> include; use "quotes" instead

The following build commands failed:
	CompileC build/ src/ normal armv7 objective-c++
(1 failure)

Build completed in 10.43 seconds

Uno file:

using Uno;
using Uno.Collections;
using Fuse.Scripting;
using Fuse.Reactive;
using Fuse;
using Uno.Compiler.ExportTargetInterop;
using Uno.Threading;

public class QReader : NativeModule {
	public QReader () {
		// Add Load function to load image as a texture
		AddMember(new NativePromise<string, string>("scan", (FutureFactory<string>)Scan,null));

	static Future<string> Scan(object[] args)
		//var path = Uno.IO.Path.Combine(Uno.IO.Directory.GetUserDirectory(Uno.IO.UserDirectory.Data), "temp.jpg");
			return QReaderImpl.Scan();

[ForeignInclude(Language.ObjC, "QReaderTask.h", "QRCodeReaderViewController.h", "QRCodeReader.h")]
public class QReaderImpl
	static int RC_BARCODE_CAPTURE = 9001;

	static bool InProgress {
		get; set;

	static Promise<string> FutureResult {
		get; set;

	static extern(Android) Java.Object _intentListener;

	public static Future<string> Scan() {
		if (InProgress) {
			return null;
		InProgress = true;
		if defined(Android) {
			 if (_intentListener == null)
				_intentListener = Init();
		FutureResult = new Promise<string>();
		return FutureResult;

	static extern(Android) Java.Object Init()
	    com.fuse.Activity.ResultListener l = new com.fuse.Activity.ResultListener() {
	        @Override public boolean onResult(int requestCode, int resultCode, android.content.Intent data) {
	            return @{OnRecieved(int,int,Java.Object):Call(requestCode, resultCode, data)};
	    return l;

	static extern(Android) bool OnRecieved(int requestCode, int resultCode, Java.Object data)

						if (requestCode == @{RC_BARCODE_CAPTURE}&&resultCode == CommonStatusCodes.SUCCESS && data != null) {

										Barcode barcode = ((Intent)data).getParcelableExtra(BarcodeCaptureActivity.BarcodeObject);
										if(barcode.displayValue != ""){
						else {

	    return (requestCode == @{RC_BARCODE_CAPTURE});

	static extern(!Mobile) void ScannerImpl () {
		throw new Fuse.Scripting.Error("Unsupported platform");

	[Require("AndroidManifest.ApplicationElement", "<activity android:name=\"com.fuse.qreader.BarcodeCaptureActivity\" android:theme=\"@style/Theme.AppCompat\"></activity>")]
	[Require("AndroidManifest.RootElement", "<uses-feature android:name=\"\"/>")]
	[Require("AndroidManifest.RootElement", "<uses-feature android:name=\"\"/>")]
	[Require("AndroidManifest.RootElement", "<uses-permission android:name=\"android.permission.CAMERA\"/>")]
	static extern(Android) void ScannerImpl ()
		Activity a = com.fuse.Activity.getRootActivity();
		// Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
		Intent intent = new Intent(a, BarcodeCaptureActivity.class);
		a.startActivityForResult(intent, @{RC_BARCODE_CAPTURE});


	static extern(iOS) void ScannerImpl ()
			QReaderTask *task = [[QReaderTask alloc] init];

			static QRCodeReaderViewController *vc = nil;
			static dispatch_once_t onceToken;

			UIViewController *uivc = [UIApplication sharedApplication].keyWindow.rootViewController;
			[task setUivc:uivc];

			dispatch_once(&onceToken, ^{
					QRCodeReader *reader = [QRCodeReader readerWithMetadataObjectTypes:@[AVMetadataObjectTypeQRCode,
					vc                   = [QRCodeReaderViewController readerWithCancelButtonTitle:@"Zrušit" codeReader:reader];
					vc.modalPresentationStyle = UIModalPresentationFormSheet;

			vc.delegate = task;


	public static void Cancelled () {
		InProgress = false;
		FutureResult.Reject(new Exception("User cancelled the qr scanner"));

	public static void Picked (string result) {
		InProgress = false;


Because documentation for UNO is very wrong, it is hard for me investigate, what is incorrect


From a chat on Slack we have established that this may be a new issue on fuse 0.28.0 build works correctly

part of donald’s unoproj

"Packages": [
 "Includes": [
   "NativeSrc/", (edited)

Hi, do you have any news about this issue ?
Or, do you have some temporary workaround for this issue ?
Because today I do not have way how build iOS version with 0.29.0 version and your team will release already soon version 0.30.0

Hey Donald,

Have you verified that your include path is correct? I think the ForeignIncludes are relative to the project, so if your project contains "NativeSrc/QReaderTask.h:ObjCHeader:iOS" the include should be [ForeignInclude(Language.ObjC, "NativeSrc/QReaderTask.h")].

Hope that helps!