<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi,<div class=""><br class=""></div><div class="">I finally had some time to research on this.</div><div class=""><br class=""></div><div class="">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.</div><div class=""><br class=""></div><div class="">App Extensions seem to be an app but without main. I have discovered that Xcode passes the -e _NSExtensionMain to an App Extension build. </div><div class=""><br class=""></div><div class="">Questions: </div><div class=""><br class=""></div><div class="">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:</div><div class=""><div class=""><br class=""></div><div class="">Undefined symbols for architecture armv7:</div><div class="">  "_main", referenced from:</div><div class="">      user_main_trampoline() in libqios_debug.a(qioseventdispatcher.o)</div></div><div class=""><br class=""></div><div class="">Can I make a Qt iOS that doesn’t have a main function? </div><div class=""><br class=""></div><div class="">2) What commands can I use to compare the type of binary files?</div><div class=""><br class=""></div><div class="">Is <b class="">otool -l  </b>the most indicated?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">My ultimate goal is to keep using Qml to draw the App Extension user interface inside the host application. </div><div class=""><br class=""></div><div class="">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. </div><div class=""><br class=""></div><div class="">For that I need to know exactly what an App Extension is: a executable? a dynamic library? a static library? </div><div class=""><br class=""></div><div class="">My knowledge of operating system underlying basics are very limited so I was trying to find some insights around here. </div><div class=""><br class=""></div><div class="">Thanks,</div><div class=""><br class=""></div><div class="">Best regards,</div><div class=""><br class=""></div><div class="">Nuno</div><div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""><div class="">On 22 May 2017, at 10:08, Mike Krus <<a href="mailto:mike.krus@kdab.com" class="">mike.krus@kdab.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class=""><br class="Apple-interchange-newline">On 22 May 2017, at 09:45, Nuno Santos <<a href="mailto:nunosantos@imaginando.pt" class="">nunosantos@imaginando.pt</a>> wrote:<br class=""><br class="">Milke,<br class=""><br class="">Thanks for your reply.<br class=""><br class="">I was not expecting an out of the box process. The problem is that I’m still lost.<br class=""><br class="">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: <a href="https://github.com/EricGeorge/AUInstrument" class="">https://github.com/EricGeorge/AUInstrument</a><br class=""><br class="">From the working example I need to have a the app, which I currently develop using Qt.<br class=""><br class="">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.<br class=""></blockquote><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">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.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">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.<br class=""><br class=""><br class="">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.<span class="Apple-converted-space"> </span><br class=""><br class="">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:<br class=""><br class="">- 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<br class=""></blockquote><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">no, extensions are apps, with an appex extension (first hurdle, the .app extension for the targets generated by qmake is hard coded).</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">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.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">- I think I will need to use Xcode anyway because of the code signing process<br class="">- I don’t know how to configure a target on Xcode that depends on Qt stuff without having qmake to generate all the stuff.<br class=""></blockquote><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">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.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Mike</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">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.<br class=""><br class="">Any ideas?<br class=""><br class="">Regards,<br class=""><br class="">Nuno<br class=""><br class=""><blockquote type="cite" class="">On 22 May 2017, at 09:21, Mike Krus <<a href="mailto:mike.krus@kdab.com" class="">mike.krus@kdab.com</a>> wrote:<br class=""><br class="">As far as I know, qmake is not capable of generating Xcode projects with the right<br class="">structure (need 2 to start with, different project types, etc).<br class=""><br class="">Mike<br class=""><br class=""><blockquote type="cite" class="">On 21 May 2017, at 11:13, Nuno Santos <<a href="mailto:nunosantos@imaginando.pt" class="">nunosantos@imaginando.pt</a>> wrote:<br class=""><br class="">Robert,<br class=""><br class="">There is clearly a communication problem here. Maybe I’m not using the correct word.<br class=""><br class="">I want to know how to make an App Extension from QtCreator. In summary:<br class=""><br class="">- In order to create an app extension with Qt Creator what should be the qmake flags?<br class=""><br class="">I want to bypass Xcode. Is this possible?<br class=""><br class="">Regards,<br class=""><br class="">Nuno<br class=""><br class=""><blockquote type="cite" class="">On 21 May 2017, at 10:12, Robert Iakobashvili <<a href="mailto:coroberti@gmail.com" class="">coroberti@gmail.com</a>> wrote:<br class=""><br class="">Yes, you can add frameworks to an extension like to<br class="">any other project in XCode.<br class=""><br class="">So it can look like:<br class=""><br class="">Swift GUI <-> Obj-C-Bridging Code <-> C++ business logic using your<br class="">frameworks/components.<br class=""><br class="">But do not forget the memory limit - 30 MB.<br class=""><br class="">Take care.<br class=""><br class="">Kind regards,<br class="">Robert<br class=""><br class=""><br class="">On Sun, May 21, 2017 at 12:02 PM, Robert Iakobashvili<br class=""><<a href="mailto:coroberti@gmail.com" class="">coroberti@gmail.com</a>> wrote:<br class=""><blockquote type="cite" class="">Dear Nuno,<br class="">Whatever I did was completely decoupled from Qt.<br class=""><br class="">Only XCode project - it was an app with its bundle and within an app<br class="">it was a sub-app bundle.<br class=""><br class="">But there are many types of extensions.<br class=""><br class="">So, starting from an example of your extension and extending<br class="">it could be the right path.<br class=""><br class="">If you find you still have memory up to 30 MB, you can link<br class="">QtCore if it helps you.<br class=""><br class="">Your business logic could be in C++ and Swift interface can talk back<br class="">and forth with C++ via an objective-C Bridge - even with debugging<br class="">going smoothly between the pieces.<br class=""><br class="">Sorry for being not too much helpful with a Qt-path.<br class="">Kind regards,<br class="">Robert<br class=""><br class=""><br class="">On Sun, May 21, 2017 at 11:51 AM, Nuno Santos <<a href="mailto:nunosantos@imaginando.pt" class="">nunosantos@imaginando.pt</a>> wrote:<br class=""><blockquote type="cite" class="">Robert,<br class=""><br class="">Right now I’m more interested in how to put things together.<br class=""><br class="">Were you able to do it?<br class=""><br class="">Where are you coding the extension? With Qt Creator or Xcode?<br class=""><br class="">How are you setting the project?<br class=""><br class="">Can the app extension be deployed as a plugin? Like a .component? A dynamic<br class="">library packed in a bundle?<br class=""><br class="">Because I have already done a AudioUnit in the past and I can make it with<br class="">Qt using the following flags:<br class=""><br class="">CONFIG += lib_bundle shared<br class=""><br class="">The thing is that QtCreator doesn’t handle the packaging so I have to<br class="">manually do everything.<br class=""><br class="">But as for App Extensions I don’t know exactly what they are. I have a Xcode<br class="">example but with Xcode is always hard to decipher how things were made.<br class=""><br class="">Regards,<br class=""><br class="">Nuno<br class=""><br class="">On 21 May 2017, at 05:20, Robert Iakobashvili <<a href="mailto:coroberti@gmail.com" class="">coroberti@gmail.com</a>> wrote:<br class=""><br class="">On Sat, May 20, 2017 at 7:54 PM, Nuno Santos <<a href="mailto:nunosantos@imaginando.pt" class="">nunosantos@imaginando.pt</a>><br class="">wrote:<br class=""><br class="">HI,<br class=""><br class="">I’m trying to develop an app extension for my Qt iOS app but I don’t know<br class="">what kind of target it is.<br class=""><br class="">I always try to use Qt Creator to handle my Qt based projects. In case of<br class="">iOS projects I try to use only Xcode to deployment and debug.<br class=""><br class="">Is an app extension a framework or a executable?<br class=""><br class="">As anyone tried this before?<br class=""><br class="">I want to know how to configure the app extension on Qt Creator .pro<br class=""><br class="">Regards,<br class=""><br class="">Nuno<br class=""><br class=""><br class="">Hi Nuno,<br class="">When doing it recently, it appears that there's a unpublished memory<br class="">limit of up to 30 MB imposed by Apple that an extension is allowed.<br class=""><br class="">Initially, I was planning to use Swift interface with QtCore classes in my<br class="">core logic connected by an Objective-C Bridge.<br class=""><br class="">However, due to the memory limitations, I've migrated from Qt to<br class="">some C-written hash maps, etc containers with less pointers and less<br class="">consumption of memory.<br class=""><br class="">Take care.<br class=""><br class="">Kind regards,<br class="">Robert<br class=""><br class=""><br class=""></blockquote></blockquote></blockquote><br class="">_______________________________________________<br class="">Interest mailing list<br class=""><a href="mailto:Interest@qt-project.org" class="">Interest@qt-project.org</a><br class="">http://lists.qt-project.org/mailman/listinfo/interest<br class=""></blockquote><br class="">--<br class="">Mike Krus | <a href="mailto:mike.krus@kdab.com" class="">mike.krus@kdab.com</a> | Senior Software Engineer<br class="">KDAB (UK) Ltd., a KDAB Group company<br class="">Tel: UK Office +44 1625 809908   Mobile +44 7833 491941<br class="">KDAB - The Qt Experts<br class=""><br class=""></blockquote><br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">--</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Mike Krus |<span class="Apple-converted-space"> </span></span><a href="mailto:mike.krus@kdab.com" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">mike.krus@kdab.com</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""><span class="Apple-converted-space"> </span>| Senior Software Engineer</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">KDAB (UK) Ltd., a KDAB Group company</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Tel: UK Office +44 1625 809908   Mobile +44 7833 491941</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">KDAB - The Qt Experts</span></div></blockquote></div><br class=""></div></body></html>