{"id":96,"date":"2014-02-04T17:39:32","date_gmt":"2014-02-04T17:39:32","guid":{"rendered":"http:\/\/visualgdb.com\/w\/?p=96"},"modified":"2015-08-07T15:54:30","modified_gmt":"2015-08-07T22:54:30","slug":"android-qt","status":"publish","type":"post","link":"https:\/\/visualgdb.com\/tutorials\/android\/qt\/","title":{"rendered":"Developing Qt Projects for Android with VisualGDB"},"content":{"rendered":"<p>This tutorial shows how to debug and build Qt 5.1 projects for Android.<\/p>\n<p>Before we begin, ensure that VisualGDB is installed.<\/p>\n<p>In this tutorial we will create a Qt widget project for Android in Qt Creator and then build and debug the APK file from Visual Studio using VisualGDB. We use Qt Creator to create the project as the initial project creation sets up Qt support libraries.<\/p>\n<ol>\n<li>Start Visual Studio and go to Android-&gt;Setup SDK\/NDK locations. Set the paths to existing Android tools there or install them.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/01-androidsettings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/01-androidsettings.png\" alt=\"01-androidsettings\" width=\"640\" height=\"262\" \/><\/a><\/li>\n<li>Download and install <a href=\"http:\/\/www.qt.io\/download\/\">Qt Creator<\/a> for Android meant for a Windows host.<\/li>\n<li>Start Qt Creator. Go to Tools-&gt;Options-&gt;Android. Set the Android tool paths there to be the same as in VisualGDB. Press on OK.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/02-qtsettings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/02-qtsettings.png\" alt=\"02-qtsettings\" width=\"700\" height=\"405\" \/><\/a><\/li>\n<li>Go to File-&gt;New File or Project. Choose Qt GUI Application.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/03-newqt.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/03-newqt.png\" alt=\"03-newqt\" width=\"704\" height=\"398\" \/><\/a><\/li>\n<li>Choose a name and location for the project. Press on &#8216;Next&#8217;. <a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/04-newqtname.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/04-newqtname.png\" alt=\"04-newqtname\" width=\"514\" height=\"358\" \/><\/a><\/li>\n<li>Uncheck the Desktop kit and select an Android kit instead. Here we choose arm, choose &#8220;Android for x86&#8221; as well or instead if you intend to support Android for Intel CPUs as well. Note that arm here actually means armeabi-v7a as Qt 5 is not supported for regular armeabi. That means for running and debugging the app, you will also need a armeabi-v7a device. <a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/05-androidkit.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/05-androidkit.png\" alt=\"05-androidkit\" width=\"636\" height=\"539\" \/><\/a><\/li>\n<li>The default settings are fine for the rest of the project settings. Choose &#8216;Next&#8217; and then &#8216;Finish&#8217; on the next page. <a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/06-newform.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/06-newform.png\" alt=\"06-newform\" width=\"636\" height=\"539\" \/><\/a><\/li>\n<li>We have now made a Qt5 project for Android. Currently the form is empty, let&#8217;s add a button to have something to see and test when the app is run. Open the ui file.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/08-projectmade.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/08-projectmade.png\" alt=\"08-projectmade\" width=\"674\" height=\"476\" \/><\/a><\/li>\n<li>Drag and drop a simple push button from the toolbox. We also change its text to &#8220;Test&#8221;. <a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/09-button.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/09-button.png\" alt=\"09-button\" width=\"700\" height=\"393\" \/><\/a><\/li>\n<li>Next we add a clicked handler to it. Right-click on the placed button choose &#8216;Go to slot&#8217;. Select &#8216;clicked&#8217; from the slots. Now a clicked handler has been made and we are ready to build the project.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/10-slot.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/10-slot.png\" alt=\"10-slot\" width=\"700\" height=\"393\" \/><\/a><a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/11-clicked.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/11-clicked.png\" alt=\"11-clicked\" width=\"530\" height=\"221\" \/><\/a><\/li>\n<li>Both build and run the project. This is important as currently the build step of copying the Qt libraries is only done by Qt Creator and not an external tool. Once the project has been run by QtCreator, it can be built by other tools as well. In case running the project crashes or does not succeed, it still may have been enough to copy the libraries. In that case, check inside the &#8220;android\/bin&#8221; subfolder in the project folder, it must contain the Qtandroid-debug.apk file before we can proceed. <a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/13-build.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/13-build.png\" alt=\"13-build\" width=\"700\" height=\"393\" \/><\/a><\/li>\n<li>Open the &#8216;Projects&#8217; tab, we will use these settings to create a project with VisualGDB.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/14-buildsettings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/14-buildsettings.png\" alt=\"14-buildsettings\" width=\"700\" height=\"464\" \/><\/a><\/li>\n<li>Start Visual Studio. Go to File-&gt;New-&gt;Project. Choose the &#8216;Custom Project Wizard&#8217;, choose a name and location and press on &#8216;OK&#8217;.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/15-newcustom.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-13\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/15-newcustom.png\" alt=\"15-newcustom\" width=\"700\" height=\"394\" \/><\/a><\/li>\n<li>Custom projects allow specifying arbitrary commands for building and debugging. We start by specifying the actions before building. We will use the main make command as the main build command and arrange all other commands before or after.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/16-custom.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-14\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/16-custom.png\" alt=\"16-custom\" width=\"662\" height=\"618\" \/><\/a><\/li>\n<li>The first command is the qmake command. We base it on the qmake command from QtCreator. <a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/19-qmakecmd.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/19-qmakecmd.png\" alt=\"19-qmakecmd\" width=\"700\" height=\"464\" \/><\/a>Add a new command to the sequence.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/17-newsequence.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-16\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/17-newsequence.png\" alt=\"17-newsequence\" width=\"500\" height=\"300\" \/><\/a>Create a new custom command line. Copy the details of the command from Qt Creator.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/18-newcustom.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/18-newcustom.png\" alt=\"18-newcustom\" width=\"627\" height=\"284\" \/><\/a>We also need to add additional environment variables to the command. Click to edit additional environment. Then click on &#8216;Add&#8217;.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/21-newenv.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-18\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/21-newenv.png\" alt=\"21-newenv\" width=\"500\" height=\"300\" \/><\/a>Look in the variables list from Qt Creator for variables to add. Most do not need to be added as they are system variables.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/20-addenv.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-19\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/20-addenv.png\" alt=\"20-addenv\" width=\"700\" height=\"464\" \/><\/a>We only add the following variables.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/22-env.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/22-env.png\" alt=\"22-env\" width=\"500\" height=\"300\" \/><\/a>The ready command looks as follows.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/23-newqmakecmd.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-21\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/23-newqmakecmd.png\" alt=\"23-newqmakecmd\" width=\"627\" height=\"284\" \/><\/a><\/li>\n<li>Next add the build command. Fill in the command details based on the make command from QtCreator.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/24-makestep.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-22\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/24-makestep.png\" alt=\"24-makestep\" width=\"700\" height=\"464\" \/><\/a>The ready command looks as follows.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/25-buildcmd.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-23\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/25-buildcmd.png\" alt=\"25-buildcmd\" width=\"610\" height=\"263\" \/><\/a><\/li>\n<li>Now we add a post build command based on the deployment install command from Qt Creator. This command will copy the built library from the Qt project&#8217;s build directory to the android subdirectory. <a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/26a-originstallcmd.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/26a-originstallcmd.png\" alt=\"26a-originstallcmd\" width=\"700\" height=\"464\" \/><\/a><a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/26-installcmd.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-25\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/26-installcmd.png\" alt=\"26-installcmd\" width=\"627\" height=\"284\" \/><\/a><\/li>\n<li>Finally we add the last command to post build actions. This will build the Android app.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/27-antcmd.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-26\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/27-antcmd.png\" alt=\"27-antcmd\" width=\"627\" height=\"284\" \/><\/a><\/li>\n<li>We also add a clean command based on the clean command from Qt Creator.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/29-origmakeclean.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/29-origmakeclean.png\" alt=\"29-origmakeclean\" width=\"700\" height=\"464\" \/><\/a><a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/28-makeclean.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-28\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/28-makeclean.png\" alt=\"28-makeclean\" width=\"610\" height=\"263\" \/><\/a><\/li>\n<li>All of the build and clean commands now look as follows. Click on &#8216;Finish&#8217; to complete the wizard.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/30-wizfinish.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-29\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/30-wizfinish.png\" alt=\"30-wizfinish\" width=\"700\" height=\"555\" \/><\/a><\/li>\n<li>Now we have successfully created a project in VisualGDB building the Qt Creator created Android project. Rebuild the project to test the build commands.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/42-rebuild.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-30\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/42-rebuild.png\" alt=\"42-rebuild\" width=\"700\" height=\"463\" \/><\/a><\/li>\n<li>We will use the Custom APK debug feature to debug the project. Go to Android-&gt;Debug custom APK file.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/31-apkdebug.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-31\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/31-apkdebug.png\" alt=\"31-apkdebug\" width=\"550\" height=\"410\" \/><\/a>Choose the Qtandroid-debug.apk file and choose a name for the debug preset. Press on &#8216;Debug&#8217;.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/33-apkdebug.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-32\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/33-apkdebug.png\" alt=\"33-apkdebug\" width=\"550\" height=\"410\" \/><\/a><\/li>\n<li>Now the app will be automatically deployed and started on the connected Android device.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/34-deploying.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-33\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/34-deploying.png\" alt=\"34-deploying\" width=\"484\" height=\"358\" \/><\/a>Finally the debug session is started.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/35-debugging.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-34\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/35-debugging.png\" alt=\"35-debugging\" width=\"700\" height=\"463\" \/><\/a>Pause execution and use the &#8216;Show a list of all source files&#8217; function.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/37-listsources.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-35\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/37-listsources.png\" alt=\"37-listsources\" width=\"700\" height=\"463\" \/><\/a>Open the mainwindow.cpp file.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/39-sources.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-36\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/39-sources.png\" alt=\"39-sources\" width=\"700\" height=\"369\" \/><\/a>Set a breakpoint in the clicked function and continue execution.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/40-breakpoint.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-37\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/40-breakpoint.png\" alt=\"40-breakpoint\" width=\"700\" height=\"463\" \/><\/a><\/li>\n<li>Go to the app running on the device and click on the button. <a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/36-app.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-38\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/36-app.png\" alt=\"36-app\" width=\"415\" height=\"650\" \/><\/a>Go back to Visual Studio. The breakpoint we set earlier has been hit now.<a href=\"http:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/41-breakpointhit.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-39\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/tutorials\/android\/qt\/41-breakpointhit.png\" alt=\"41-breakpointhit\" width=\"700\" height=\"463\" \/><\/a><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to debug and build Qt 5.1 projects for Android. Before we begin, ensure that VisualGDB is<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[31,46],"_links":{"self":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/96"}],"collection":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/comments?post=96"}],"version-history":[{"count":4,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/96\/revisions"}],"predecessor-version":[{"id":499,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/96\/revisions\/499"}],"wp:attachment":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/media?parent=96"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/categories?post=96"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/tags?post=96"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}