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 <nunosan...@imaginando.pt> 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 <mike.k...@kdab.com> wrote:
>> 
>>> 
>>> On 22 May 2017, at 09:45, Nuno Santos <nunosan...@imaginando.pt> 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 <mike.k...@kdab.com> 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 <nunosan...@imaginando.pt> 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 <corobe...@gmail.com> 
>>>>>> 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
>>>>>> <corobe...@gmail.com> 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 
>>>>>>> <nunosan...@imaginando.pt> 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 <corobe...@gmail.com> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> On Sat, May 20, 2017 at 7:54 PM, Nuno Santos <nunosan...@imaginando.pt>
>>>>>>>> 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
>>>>> Interest@qt-project.org
>>>>> http://lists.qt-project.org/mailman/listinfo/interest
>>>> 
>>>> --
>>>> Mike Krus | mike.k...@kdab.com | 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 | mike.k...@kdab.com | 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
> Interest@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest

-- 
Jake Petroules - jake.petrou...@qt.io
The Qt Company - Silicon Valley
Qbs build tool evangelist - qbs.io

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to