> On Jun 20, 2017, at 8:41 AM, Nuno Santos <[email protected]> wrote:
> 
> Jake,
> 
> Thanks for your insights. 
> 
> Do you think it is possible to open a qml view inside a App Extension?

It should be, but not without modifications to the iOS platform plugin.

> 
> My options:
> 
> 1) Try to do it via Qt side. Based on what you have just told me seems to be 
> impossible.
> 
> 2) Grab a Xcode project that already works an link with the necessary Qt 
> frameworks so I can instantiate a Qml View and embed it inside the App 
> Extension.

Again, needs modifications to the iOS platform plugin anyways, so neither 
approach will work right now.

> 
> Thanks once again for your reply.
> 
> Regards,
> 
> Nuno
> 
>> On 20 Jun 2017, at 16:17, Jake Petroules <[email protected]> wrote:
>> 
>> Application extensions are simply normal Mach-O executables with 
>> _NSExtensionMain as their entry point instead of main. They are executed and 
>> quit by the system when needed, and the timing of these events cannot be 
>> controlled manually.
>> 
>> qmake does not support building app extensions (although the Qt libraries 
>> themselves are now built with -fapplication-extension, making them extension 
>> compatible) and most likely never will.
>> 
>> Qbs has some basic support for building app extensions already. The rest of 
>> the work needed is, as you say, in the platform plugin, which currently 
>> expects a normal main() entry point. I'm not sure yet how we'll solve that, 
>> as the iOS platform plugin is very tightly coupled to application 
>> initialization.
>> 
>> Typically in an application extension you give the Info.plist the name of a 
>> storyboard or view controller class to instantiate, and that's your primary 
>> "entry point". You cannot instantiate the UIApplication or set a 
>> UIApplicationDelegate yourself.
>> 
>>> On Jun 20, 2017, at 4:57 AM, Nuno Santos <[email protected]> wrote:
>>> 
>>> Hi,
>>> 
>>> I finally had some time to research on this.
>>> 
>>> I was able to create a test app with Qt Creator and manually place another 
>>> app (extension) inside the generated .app bundle PlugIns folder. The app 
>>> extension is an audio unit plugin for AUV3 hosts such as Modstep. I have 
>>> then used Modstep to see if it could see my App Extension. He does find the 
>>> App Extension but when trying to load it, it hangs. Now I’m in the 
>>> darkness. The device log didn’t show much and the host app totally hanged.
>>> 
>>> App Extensions seem to be an app but without main. I have discovered that 
>>> Xcode passes the -e _NSExtensionMain to an App Extension build. 
>>> 
>>> Questions: 
>>> 
>>> 1) When I set my Qt app to be an app, I’m forced to declare a main 
>>> function, otherwise it gives the following error:
>>> 
>>> Undefined symbols for architecture armv7:
>>> "_main", referenced from:
>>>     user_main_trampoline() in libqios_debug.a(qioseventdispatcher.o)
>>> 
>>> Can I make a Qt iOS that doesn’t have a main function? 
>>> 
>>> 2) What commands can I use to compare the type of binary files?
>>> 
>>> Is otool -l  the most indicated?
>>> 
>>> 
>>> My ultimate goal is to keep using Qml to draw the App Extension user 
>>> interface inside the host application. 
>>> 
>>> If that isn’t possible because of memory limits I still want to try pack 
>>> and compile the whole thing in QtCreator, discovering the necessary flags 
>>> and projecto configuration for that to happen. 
>>> 
>>> For that I need to know exactly what an App Extension is: a executable? a 
>>> dynamic library? a static library? 
>>> 
>>> My knowledge of operating system underlying basics are very limited so I 
>>> was trying to find some insights around here. 
>>> 
>>> Thanks,
>>> 
>>> Best regards,
>>> 
>>> Nuno
>>> 
>>>> On 22 May 2017, at 10:08, Mike Krus <[email protected]> wrote:
>>>> 
>>>>> 
>>>>> On 22 May 2017, at 09:45, Nuno Santos <[email protected]> wrote:
>>>>> 
>>>>> Milke,
>>>>> 
>>>>> Thanks for your reply.
>>>>> 
>>>>> I was not expecting an out of the box process. The problem is that I’m 
>>>>> still lost.
>>>>> 
>>>>> Let me show you the big picture. I have a synthesiser app. One of the 
>>>>> functionalities of App Extensions are Audio Units. I want to provide the 
>>>>> ability of other apps running multiple instances of my synthesiser app. 
>>>>> This is called AudioUnit (which in the context of iOS is a V3 AudioUnit) 
>>>>> I have found a cocoa example here: 
>>>>> https://github.com/EricGeorge/AUInstrument
>>>>> 
>>>>> From the working example I need to have a the app, which I currently 
>>>>> develop using Qt.
>>>>> 
>>>>> With the app development I always need Xcode in the end to enable app 
>>>>> features such as inter-app audio, push notifications, etc since it is not 
>>>>> possible to enable that on QtCreator. So, what I do is I run qmake and I 
>>>>> have the generated Xcode project.
>>>> I think those settings are stored in an entitlement file, if you have set 
>>>> it up once in Xcode, you should be able to copy the entitlement file to 
>>>> your source folder and have qmake deploy it for you.
>>>> 
>>>>> I also need to have a App Extension target which in the case of the 
>>>>> example, links with a framework and makes part of the app membership, 
>>>>> being placed inside the app target, under PlugIns dir.
>>>>> 
>>>>> 
>>>>> I have already done an AudioUnit with Qt. in order to make an AudioUnit, 
>>>>> the target is a plugin which generates a dynamic lib (dylib). The trick 
>>>>> with Qt is that basically you need to handle the packaging yourself. 
>>>>> There is the need of making a TARGET.component and make all the dirs 
>>>>> inside, etc. 
>>>>> 
>>>>> I don’t believe an app extension will be any way different from this. 
>>>>> Right now I just don’t know how to put everything together. Questions I 
>>>>> have:
>>>>> 
>>>>> - What kind of target is an App Extension? dylib? Static lib? Exectuable? 
>>>>> I think it might be a dylib just like a Mac OSX AudioUnit
>>>> no, extensions are apps, with an appex extension (first hurdle, the .app 
>>>> extension for the targets generated by qmake is hard coded).
>>>> The host app and your extension then communicate via one of the Apple 
>>>> designed IPX protocols (depending on the type of extension). That’s what 
>>>> the example you link to shows.
>>>> 
>>>>> - I think I will need to use Xcode anyway because of the code signing 
>>>>> process
>>>>> - I don’t know how to configure a target on Xcode that depends on Qt 
>>>>> stuff without having qmake to generate all the stuff.
>>>> I’ve never done it before but I guess the best path would be start from 
>>>> the sample project you found and then lots forensic examination of the 
>>>> project and associate files (plist and all) and see how to manually setup 
>>>> your own project. Lots of the editing the Xcode project file in a text 
>>>> editor to make it do what you want.
>>>> 
>>>> 
>>>> Mike
>>>> 
>>>>> for now I’m just trying to handle project configuration issues. There 
>>>>> will be an even more interesting challenge, which is to show a Qt app 
>>>>> window, on the instance of the Audio Unit.
>>>>> 
>>>>> Any ideas?
>>>>> 
>>>>> Regards,
>>>>> 
>>>>> Nuno
>>>>> 
>>>>>> On 22 May 2017, at 09:21, Mike Krus <[email protected]> wrote:
>>>>>> 
>>>>>> As far as I know, qmake is not capable of generating Xcode projects with 
>>>>>> the right
>>>>>> structure (need 2 to start with, different project types, etc).
>>>>>> 
>>>>>> Mike
>>>>>> 
>>>>>>> On 21 May 2017, at 11:13, Nuno Santos <[email protected]> wrote:
>>>>>>> 
>>>>>>> Robert,
>>>>>>> 
>>>>>>> There is clearly a communication problem here. Maybe I’m not using the 
>>>>>>> correct word.
>>>>>>> 
>>>>>>> I want to know how to make an App Extension from QtCreator. In summary:
>>>>>>> 
>>>>>>> - In order to create an app extension with Qt Creator what should be 
>>>>>>> the qmake flags?
>>>>>>> 
>>>>>>> I want to bypass Xcode. Is this possible?
>>>>>>> 
>>>>>>> Regards,
>>>>>>> 
>>>>>>> Nuno
>>>>>>> 
>>>>>>>> On 21 May 2017, at 10:12, Robert Iakobashvili <[email protected]> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Yes, you can add frameworks to an extension like to
>>>>>>>> any other project in XCode.
>>>>>>>> 
>>>>>>>> So it can look like:
>>>>>>>> 
>>>>>>>> Swift GUI <-> Obj-C-Bridging Code <-> C++ business logic using your
>>>>>>>> frameworks/components.
>>>>>>>> 
>>>>>>>> But do not forget the memory limit - 30 MB.
>>>>>>>> 
>>>>>>>> Take care.
>>>>>>>> 
>>>>>>>> Kind regards,
>>>>>>>> Robert
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Sun, May 21, 2017 at 12:02 PM, Robert Iakobashvili
>>>>>>>> <[email protected]> wrote:
>>>>>>>>> Dear Nuno,
>>>>>>>>> Whatever I did was completely decoupled from Qt.
>>>>>>>>> 
>>>>>>>>> Only XCode project - it was an app with its bundle and within an app
>>>>>>>>> it was a sub-app bundle.
>>>>>>>>> 
>>>>>>>>> But there are many types of extensions.
>>>>>>>>> 
>>>>>>>>> So, starting from an example of your extension and extending
>>>>>>>>> it could be the right path.
>>>>>>>>> 
>>>>>>>>> If you find you still have memory up to 30 MB, you can link
>>>>>>>>> QtCore if it helps you.
>>>>>>>>> 
>>>>>>>>> Your business logic could be in C++ and Swift interface can talk back
>>>>>>>>> and forth with C++ via an objective-C Bridge - even with debugging
>>>>>>>>> going smoothly between the pieces.
>>>>>>>>> 
>>>>>>>>> Sorry for being not too much helpful with a Qt-path.
>>>>>>>>> Kind regards,
>>>>>>>>> Robert
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Sun, May 21, 2017 at 11:51 AM, Nuno Santos 
>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>> Robert,
>>>>>>>>>> 
>>>>>>>>>> Right now I’m more interested in how to put things together.
>>>>>>>>>> 
>>>>>>>>>> Were you able to do it?
>>>>>>>>>> 
>>>>>>>>>> Where are you coding the extension? With Qt Creator or Xcode?
>>>>>>>>>> 
>>>>>>>>>> How are you setting the project?
>>>>>>>>>> 
>>>>>>>>>> Can the app extension be deployed as a plugin? Like a .component? A 
>>>>>>>>>> dynamic
>>>>>>>>>> library packed in a bundle?
>>>>>>>>>> 
>>>>>>>>>> Because I have already done a AudioUnit in the past and I can make 
>>>>>>>>>> it with
>>>>>>>>>> Qt using the following flags:
>>>>>>>>>> 
>>>>>>>>>> CONFIG += lib_bundle shared
>>>>>>>>>> 
>>>>>>>>>> The thing is that QtCreator doesn’t handle the packaging so I have to
>>>>>>>>>> manually do everything.
>>>>>>>>>> 
>>>>>>>>>> But as for App Extensions I don’t know exactly what they are. I have 
>>>>>>>>>> a Xcode
>>>>>>>>>> example but with Xcode is always hard to decipher how things were 
>>>>>>>>>> made.
>>>>>>>>>> 
>>>>>>>>>> Regards,
>>>>>>>>>> 
>>>>>>>>>> Nuno
>>>>>>>>>> 
>>>>>>>>>> On 21 May 2017, at 05:20, Robert Iakobashvili <[email protected]> 
>>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>> On Sat, May 20, 2017 at 7:54 PM, Nuno Santos 
>>>>>>>>>> <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>> HI,
>>>>>>>>>> 
>>>>>>>>>> I’m trying to develop an app extension for my Qt iOS app but I don’t 
>>>>>>>>>> know
>>>>>>>>>> what kind of target it is.
>>>>>>>>>> 
>>>>>>>>>> I always try to use Qt Creator to handle my Qt based projects. In 
>>>>>>>>>> case of
>>>>>>>>>> iOS projects I try to use only Xcode to deployment and debug.
>>>>>>>>>> 
>>>>>>>>>> Is an app extension a framework or a executable?
>>>>>>>>>> 
>>>>>>>>>> As anyone tried this before?
>>>>>>>>>> 
>>>>>>>>>> I want to know how to configure the app extension on Qt Creator .pro
>>>>>>>>>> 
>>>>>>>>>> Regards,
>>>>>>>>>> 
>>>>>>>>>> Nuno
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Hi Nuno,
>>>>>>>>>> When doing it recently, it appears that there's a unpublished memory
>>>>>>>>>> limit of up to 30 MB imposed by Apple that an extension is allowed.
>>>>>>>>>> 
>>>>>>>>>> Initially, I was planning to use Swift interface with QtCore classes 
>>>>>>>>>> in my
>>>>>>>>>> core logic connected by an Objective-C Bridge.
>>>>>>>>>> 
>>>>>>>>>> However, due to the memory limitations, I've migrated from Qt to
>>>>>>>>>> some C-written hash maps, etc containers with less pointers and less
>>>>>>>>>> consumption of memory.
>>>>>>>>>> 
>>>>>>>>>> Take care.
>>>>>>>>>> 
>>>>>>>>>> Kind regards,
>>>>>>>>>> Robert
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Interest mailing list
>>>>>>> [email protected]
>>>>>>> http://lists.qt-project.org/mailman/listinfo/interest
>>>>>> 
>>>>>> --
>>>>>> Mike Krus | [email protected] | Senior Software Engineer
>>>>>> KDAB (UK) Ltd., a KDAB Group company
>>>>>> Tel: UK Office +44 1625 809908   Mobile +44 7833 491941
>>>>>> KDAB - The Qt Experts
>>>>>> 
>>>>> 
>>>> 
>>>> --
>>>> Mike Krus | [email protected] | Senior Software Engineer
>>>> KDAB (UK) Ltd., a KDAB Group company
>>>> Tel: UK Office +44 1625 809908   Mobile +44 7833 491941
>>>> KDAB - The Qt Experts
>>> 
>>> _______________________________________________
>>> Interest mailing list
>>> [email protected]
>>> http://lists.qt-project.org/mailman/listinfo/interest
>> 
>> -- 
>> Jake Petroules - [email protected]
>> The Qt Company - Silicon Valley
>> Qbs build tool evangelist - qbs.io
>> 
> 

-- 
Jake Petroules - [email protected]
The Qt Company - Silicon Valley
Qbs build tool evangelist - qbs.io

_______________________________________________
Interest mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to