{"id":2710,"date":"2025-02-11T04:57:30","date_gmt":"2025-02-11T04:57:30","guid":{"rendered":"https:\/\/writingagame.com\/?p=2710"},"modified":"2026-04-09T17:23:01","modified_gmt":"2026-04-09T17:23:01","slug":"chapter-14-publishing-in-android-play-store","status":"publish","type":"post","link":"https:\/\/writingagame.com\/index.php\/2025\/02\/11\/chapter-14-publishing-in-android-play-store\/","title":{"rendered":"Chapter 14. Publishing to Android Play Store"},"content":{"rendered":"\n<p><strong>Tags:<\/strong> <em>Android Play Store, Google Play Console, D-U-N-S Number, Android Studio, AAB, App Signing, Release Build, Game Publishing, Cross-Platform, C++<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>An important step that is missing from all instructions: Before everything else: let&#8217;s make sure, that app is <em>releasable<\/em>. At first I didn&#8217;t do it myself, which I later regret more than once.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 0. Release build.<\/h2>\n\n\n\n<p>If you have working <em>release build<\/em> already, then just skip this step. Otherwise I assume, that everything you&#8217;ve done in Android Studio before, was in default <em>debug<\/em> mode. Time to switch to <em>release<\/em>. Probably (just like me), you even didn&#8217;t know it exists, it&#8217;s so well hidden from prying eyes. Let&#8217;s start:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open your project in Android Studio. <\/li>\n\n\n\n<li>Plug in your Android device.<\/li>\n\n\n\n<li>Set <em>build variant<\/em> to <strong>release<\/strong>: Top menu-&gt; <em>Build -&gt; Select Build Variant<\/em>, extend <em>Active Build Variant<\/em> drop-down and select <strong>release<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>It will complain that it &#8220;can&#8217;t be signed&#8221;. Solution:<\/p>\n\n\n\n<p><strong>Signing <em>release <\/em>APK with <em>debug <\/em>signing config:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Top menu -&gt; <em>Project structure -&gt; Modules -&gt; Default config<\/em><\/li>\n\n\n\n<li>Scroll down to&nbsp;<strong>Signing Config<\/strong>&nbsp;then click dropdown<\/li>\n\n\n\n<li>select&nbsp;<strong>$signingConfigs.debug<\/strong>&nbsp;from the drop-down<\/li>\n\n\n\n<li><em>Apply, Ok<\/em>.<\/li>\n\n\n\n<li>Try to run. <\/li>\n<\/ul>\n\n\n\n<p>If works as expected &#8211; you are the lucky one and can move on to the next step.<\/p>\n\n\n\n<p>However, judging by complaints on the Web, it&#8217;s often not the case. Particularly in <strong>my<\/strong> situation it compiled, installed, started, but crashed right on start. Investigation revealed that it&#8217;s nothing to do with <em>release config<\/em> (like &#8220;code optimization&#8221; or else), but a &#8220;normal&#8221; run-time error\/crash. To my surprise, <em>release <\/em>build acts not exactly as <em>debug<\/em>. It is more sensitive to code purity. If that&#8217;s your case too, then well&#8230; patiently debug it until it works. Perhaps, will take some time&#8230; When ready &#8211; welcome back!<\/p>\n\n\n\n<p>Specifically in my case, the error occurred as a distant consequence of such an innocent at first glance construction as:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">MyClass* pMC=NULL;<br>if(something){<br>\t<strong>MyClass mc;<\/strong><br>\tpMC = &amp;mc;<br>}<br>doSomething(pMC);<\/pre>\n\n\n\n<p>Compilers didn&#8217;t see anything criminal, me &#8211; even less so. Worked fine in Windows and in Android&#8217;s debug, but not always in Android&#8217;s <em>release<\/em>. An additional complication was that in the actual code these few lines were quite far apart, and the error itself occurred in a different place. Took some time and extra code to pinpoint the problem. The cure was:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">MyClass* pMC=NULL;<br><strong>MyClass mc;<\/strong><br>if(something){<br>\tpMC = &amp;mc;<br>}<br>doSomething(pMC);<\/pre>\n\n\n\n<p>Now seems obvious, but only when you&#8217;ve already found and staring at it\u2026 This is a classic sample of so called <strong>&#8220;Use After Free&#8221;<\/strong> or <strong>&#8220;Dangling Pointer&#8221;<\/strong> error.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Now &#8211; to publishing:<\/h2>\n\n\n\n<p>Thankfully, <a href=\"https:\/\/developer.android.com\/studio\/publish\" target=\"_blank\" rel=\"noreferrer noopener\">Android&#8217;s manual<\/a> was less confusing than Microsoft&#8217;s to certain extent, although the procedure itself is tougher and longer. Arm yourself with patience. Details:<\/p>\n\n\n\n<p>The most problematic part for me become the <strong>developer account<\/strong>.<\/p>\n\n\n\n<p>There are 2 account options: <em>Individual <\/em>and <em>Business<\/em>. Both take WEEKS to go through.<\/p>\n\n\n\n<p>Of course, as an ordinary normal man, I started with an <em>individual<\/em> one, and this was my fatal mistake. Main challenge: it will require you to recruit 12 people to actively test your first app for 14 days. Google will monitor the process, so these must be VERY trusted people, otherwise Google may suspect cheating and this can end up by suspending your account. Can&#8217;t imagine a programmer having that many such close friends&#8230; I wish I knew about this requirement beforehand. Sure, there are already corresponding proposals on the Web, but\u2026 they seemed kind of suspicious to me, so I choose to give up and try the <em>Business <\/em>option. (would need it in the future anyway).<\/p>\n\n\n\n<p>Started off optimistically: I choose a business name and domain, created a new email address. Then registered the name with the county (quick, easy, and inexpensive &#8211; 1 day + $40 + $40 for newspaper publication). It was an easy part. Now &#8211; back to the account.<\/p>\n\n\n\n<p>Another challenge: my primary Gmail account is already taken by <em>Individual <\/em>Play Console account, which I <em>failed to remove<\/em> and which can <strong>NOT <\/strong>be upgraded to <em>Business,<\/em> so had to start from scratch, from registering a new <em>Google <\/em>account (this one doesn&#8217;t have to be a <em>Business<\/em> or <em>Gmail<\/em>). Theoretically, you CAN have multiple developer accounts under one Gmail address, but Google doesn&#8217;t recommend that. So now I have to constantly switch between two Google accounts (a bit annoying, to be honest).<\/p>\n\n\n\n<p><strong>WARNING:<\/strong> In case of opening a <em>business <\/em>Google account, Google will try to add you to Google maps and its other business programs.<\/p>\n\n\n\n<p>Then, during <em><strong>developer <\/strong>business account<\/em> creation, Google unexpectedly (to me) requested a <em>D-U-N-S number<\/em>. Never heard of that before, but had to dive in. So, <em>my<\/em> instruction will start not from building a <em>Signed APK<\/em> for upload, and even not from opening a <em>developer account<\/em>, but from&#8230;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1. D\u2011U\u2011N\u2011S Number<\/h2>\n\n\n\n<p><em>Data Universal Numbering System number<\/em><\/p>\n\n\n\n<p>Assuming that you already have a registered business name:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Navigate to <a href=\"https:\/\/www.dnb.com\/en-us\/\" target=\"_blank\" rel=\"noreferrer noopener\">Dun &amp; Bradstreet official web site, DNB.com<\/a>.<\/li>\n\n\n\n<li>Proceed to <strong>D\u2011U\u2011N\u2011S Number<\/strong> tab (on top). <em>Small Business<\/em>.<\/li>\n\n\n\n<li>Fill out (I picked free option), attach required docs, submit and relax for next 30 days (hopefully less)&#8230;<\/li>\n\n\n\n<li>Next day logged in to check status &#8211; &#8220;Pending acceptance&#8221; &#8211; opened, accepted. <\/li>\n\n\n\n<li>Keep waiting&#8230;<\/li>\n<\/ul>\n\n\n\n<p>1 week later: email from DNB.com (like a letter from Hogwarts): <strong>Granted<\/strong>!! Feel like I&#8217;ve been knighted&#8230; Knights of the DUNS number&#8230; (sarcasm)<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/writingagame.com\/img\/b04\/c14\/02.jpg\"><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>&#8230;They expected to stop us \ud83d\ude41 They were WRONG \ud83d\ude42<\/p>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2. Developer account<\/h2>\n\n\n\n<p>This step may take another few days\/attempts as DNB needs time to reflect the new DUNS number on their servers.<\/p>\n\n\n\n<p>They failed to stop us, but managed to detain\u2026 But we are damn patient. And persistent&#8230;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Navigate to <a href=\"https:\/\/play.google.com\/console\/signup\" target=\"_blank\" rel=\"noreferrer noopener\">Google Play Console<\/a>.<\/li>\n\n\n\n<li>Choose an account type: <strong>An organization <\/strong>-&gt;<em> A company or business -&gt; Get started. Continue<\/em>.<\/li>\n\n\n\n<li>Developer name: guess, as your business name. <em>Next<\/em>.<\/li>\n\n\n\n<li>Obviously, <em>Create or select payment profile<\/em>.<\/li>\n\n\n\n<li>Here Google asks for <em>D-U-N-S number<\/em>. This didn&#8217;t take us by surprise, we were ready. Though it didn&#8217;t work on the first try, but on the 4-th day\/attempt &#8211; did.<\/li>\n\n\n\n<li>Then it asks for company&#8217;s website. Luckily, I already had this one.<\/li>\n\n\n\n<li>Took another few attempts and hours to fill out the rest, and finally  &#8211; <em>Create account and pay<\/em>. $25&#8230;<\/li>\n\n\n\n<li>Now <strong>Developer account created<\/strong>. Everything, mainly because of DUNS, took about 2 weeks.<\/li>\n\n\n\n<li>Then &#8211; back to <em>Play Console<\/em>.<\/li>\n\n\n\n<li>And here you are awaited by: <em>Verify your identity, Verify your organization, Verify your organization&#8217;s website<\/em> and by long awaited <strong><em>Create your first app<\/em><\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>I initiated all 3 verification procedures and moved to:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3. Create app<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Back to <a href=\"https:\/\/play.google.com\/console\/signup\" target=\"_blank\" rel=\"noreferrer noopener\">Google Play Console<\/a> -&gt; <em>Create app<\/em> -&gt; fill out -&gt; <em>Create app<\/em>.<\/li>\n\n\n\n<li>Skip &#8220;internal testing&#8221; at this point and proceed to &#8220;<em>Set up your app<\/em>&#8220;. Go through all sections and fill them out.<\/li>\n\n\n\n<li>Then proceed to &#8220;<strong>Create and publish a release<\/strong>&#8221; <em>-&gt; View tasks<em> -&gt; Select countries and regions<\/em> -&gt; Add countries \/  regions<\/em>, select, <em>Save<\/em>.<\/li>\n<\/ul>\n\n\n\n<p>Now account is ready for app <em>upload<\/em>. But the app itself &#8211; not yet. We still need to finalize\/prepare\/package it.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4. Add app icon<\/h2>\n\n\n\n<p>It will ask for 512&#215;512 PNG. I had one made earlier for Windows:<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/writingagame.com\/img\/b04\/c14\/icon01-512.png\"><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>So:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open your project in Android Studio.<\/li>\n\n\n\n<li>In the&nbsp;Project&nbsp;window, select the&nbsp;<strong>Android <\/strong>view.<\/li>\n\n\n\n<li>Right-click the&nbsp;<strong>res&nbsp;<\/strong>folder and select&nbsp;<em>New&nbsp;-&gt;&nbsp;Image Asset<\/em>.<\/li>\n\n\n\n<li>Select <em>Launcher Icons (Adaptive and Legacy).<\/em> I left <em>Name <\/em>as is.<\/li>\n\n\n\n<li>Asset type: <strong>image<\/strong>. Path: navigate to your 512&#215;512 PNG.<\/li>\n\n\n\n<li>Resize to fit shapes better (on the right).<\/li>\n\n\n\n<li><em>Next. Finish.<\/em><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"publishing-prepare\">Step 5. Prepare app for release<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Disable or remove logging.<\/li>\n\n\n\n<li>Set <em>build variant<\/em> to <strong>release<\/strong>. Top menu-&gt; <em>Build -&gt; Select Build Variant<\/em>, extend <em>Active Build Variant<\/em> drop-down and select <strong>release<\/strong>.<\/li>\n\n\n\n<li>Make sure that your release variant has <code>isDebuggable=false<\/code>&nbsp;(in case of <em>build.gradle.kts<\/em> Kotlin script). In my case it wasn&#8217;t set at all, default &#8211; <em>false<\/em>.<\/li>\n\n\n\n<li>Set your app&#8217;s version info. It&#8217;s in <em>build.gradle.kts<\/em> <em>-&gt; android -&gt; defaultConfig -&gt; versionCode<\/em> and<em> versionName<\/em>. Unlike Windows, here the version (<em>versionCode<\/em>) is a sequential integer, while <em>versionName <\/em>is just a string displayed to the user.<\/li>\n\n\n\n<li>Make sure that<em> android:label<\/em> in <em>AndroidManifest <\/em> complies with declared app name.<\/li>\n\n\n\n<li>Make sure that <em>app ID<\/em> complies with declared app name. In the Project explorer (left pane) right-click on&nbsp;<strong>app&nbsp;<\/strong><em>-&gt; Open Module Settings -&gt; Modules -&gt; Default Config<\/em>. Check&nbsp;<em>Application ID<\/em>. If necessary &#8211; change.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6. Signing the app.<\/h2>\n\n\n\n<p><strong>Generate an upload key and keystore:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In <em>File Explorer<\/em> create a folder for your keys. To keep it closer to my project, I created mine in <em>C:\/CPP\/a996rr<\/em> and named it <em>TraiNscale-android-keystore<\/em>.<\/li>\n\n\n\n<li>Then go to <em>Android Studio&#8217;s<\/em> top menu -&gt; <em>Build -&gt; Generate Signed Bundle\/APK<\/em>.<\/li>\n\n\n\n<li>Select <em>Android App Bundle<\/em>, <em>Next<\/em>.<\/li>\n\n\n\n<li>Below the field for Key store path, click <strong>Create new<\/strong> (first time only).<\/li>\n\n\n\n<li>On the <em>New Key Store<\/em> window, navigate to your recently created folder. <em>File name<\/em>: as your project (?). <em>Ok<\/em>.<\/li>\n\n\n\n<li><em>Alias<\/em>: to me default <em>key0 <\/em>sounded good enough.<\/li>\n\n\n\n<li>Create and confirm a password (in 2 places).<\/li>\n\n\n\n<li>Fill out Certificate info section.<\/li>\n\n\n\n<li><em>Ok<\/em>.<\/li>\n\n\n\n<li><em>Remember passwords<\/em> &#8211; check. <em>Next<\/em>.<\/li>\n\n\n\n<li><em>Build variants<\/em> &#8211; pick <strong>release<\/strong>.<\/li>\n\n\n\n<li><em>Create<\/em>.<\/li>\n<\/ul>\n\n\n\n<p>Resulting signed bundle <strong>.AAB<\/strong> file &#8211; in <em>&#8230;\/app\/release<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>NEVER<\/strong> check your <code>.jks<\/code> or <code>.keystore<\/code> file into a public repository (such as GitHub).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Technically, now we can go straight to production, but maybe test AAB first?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7. Uploading the app for Internal testing.<\/h2>\n\n\n\n<p>*This type of testing doesn&#8217;t require Google&#8217;s review\/approval and will be available for testing immediately.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Back to <a href=\"https:\/\/play.google.com\/console\/signup\" target=\"_blank\" rel=\"noreferrer noopener\">Google Play Console<\/a>, expand your app<em> -&gt; Test and release -&gt; Testing -&gt; <strong>Internal testing<\/strong><\/em>.<\/li>\n\n\n\n<li>Next step &#8211; <em>Select testers<\/em>. Scroll down -&gt; <em>Create email list<\/em>. I called mine <em>&#8220;me&#8221;<\/em>, added my email, <em>Enter, Save changes<\/em> <em>-&gt; Create list -&gt; Save.<\/em><\/li>\n\n\n\n<li>Next &#8211; <em>Create a new release -&gt; App bundles -&gt; Upload<\/em>. Upload your AAB, fill out release details, <em>Next<\/em>.<\/li>\n\n\n\n<li>Warning regarding <em>deobfuscation file<\/em> &#8211; just ignore, it&#8217;s mostly for Java projects. <em>Save and publish<\/em>.<\/li>\n\n\n\n<li>Switch to <em>Testers <\/em>tab. Scroll down &#8211; <strong>Copy link<\/strong>.<\/li>\n\n\n\n<li>Forward (email) the link to your Android device.<\/li>\n\n\n\n<li>Open it on your Android, <em>Accept invitation<\/em>, scroll down to <em>Download it on Google Play<\/em> link, <em>Install, Open<\/em>.<\/li>\n<\/ul>\n\n\n\n<p>If works &#8211; congratulations! You&#8217;re almost done, move on to the next step.<\/p>\n\n\n\n<p>If not &#8211; then sorry, return to step 0 above \ud83d\ude41<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Ideally, here should be<\/p>\n\n\n\n<p><strong>Step 8. Closed testing and pre-launch report<\/strong>. <\/p>\n\n\n\n<p>However, I couldn&#8217;t get that to work (I mean <em>pre-launch report<\/em>). It seems like that part of the <em>Console<\/em> was in the process of being updated or something and wasn&#8217;t fully functional at the time. So I&#8217;ll skip this step here.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Just in case:<\/strong> my 1st upload attempt ended up with an error: wrong upload key. This is because the key in my <em>keystore <\/em>was generated for previous <em>individual <\/em>account. Had to <strong>request upload key reset<\/strong>.<\/p>\n\n\n\n<p><em>Your app page -&gt; Test and release -&gt; Setup -&gt; App signing -&gt; Request upload key reset<\/em>. Took another 3 days.<\/p>\n\n\n\n<p>Google&#8217;s instruction for that was clear enough, except a <em>keytool<\/em> command. They forgot to mention WHERE and HOW to run it. If you have these questions too, then <em>keytool.exe<\/em> is located in <em>C:\\Program Files\\Android\\Android Studio\\jbr\\bin<\/em>, so:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open CMD command prompt.<\/li>\n\n\n\n<li>cd C:\\Program Files\\Android\\Android Studio\\jbr\\bin<\/li>\n\n\n\n<li>From here you <strong>can <\/strong>run <em>keytool<\/em> commands. Just need to specify full paths for <em>jks <\/em>and <em>pem <\/em>files.<\/li>\n\n\n\n<li>Parameter <em>-alias<\/em> implies the alias used when creating the KeyStore, default was &#8211; <em>key0<\/em>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Our adventure is almost over. There is only  one last step left:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 9. Promote release to Production.<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open your app page.<\/li>\n\n\n\n<li><em>Test and release -&gt; Testing -&gt; <strong>Internal testing<\/strong><\/em>.<\/li>\n\n\n\n<li>See your release? Expand <em>Promote release<\/em> -&gt; <strong>Production<\/strong>.<\/li>\n\n\n\n<li><em>Next<\/em>. Save. <em>Go to overview. Send changes for review.<\/em><\/li>\n<\/ul>\n\n\n\n<p>Google&#8217;s note: &#8220;<em>These changes will be sent to Google for review. Reviews are typically completed within 7 days, but may take longer. Managed publishing is off, so these changes will be published automatically as soon as they&#8217;re approved.<\/em>&#8220;<\/p>\n\n\n\n<p>Well\u2026 another delay\u2026 Hopefully the last one?<\/p>\n\n\n\n<p><strong>1 week later<\/strong>: we are in <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.writingagame.trainscalerelax\" target=\"_blank\" rel=\"noreferrer noopener\">Google Play Store<\/a> now!!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>I can&#8217;t believe it&#8217;s over. The whole process took over a month and was actually more winding than described here. At times I felt like Google just didn&#8217;t want me in their store.<\/p>\n\n\n\n<p>My boundless admiration and respect for the people who went through this before me. You are my heroes!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p class=\"mb-2\">Tags: Android Play Store, Google Play Console, D-U-N-S Number, Android Studio, AAB, App Signing, Release Build, Game Publishing, Cross-Platform, C++ An important step that is missing from all instructions: Before everything else: let&#8217;s make sure, that app is releasable. At first I didn&#8217;t do it myself, which I later regret more than once. Step 0. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2816,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2710","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cross-platform-3d"],"_links":{"self":[{"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/posts\/2710","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/comments?post=2710"}],"version-history":[{"count":401,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/posts\/2710\/revisions"}],"predecessor-version":[{"id":4301,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/posts\/2710\/revisions\/4301"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/media\/2816"}],"wp:attachment":[{"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/media?parent=2710"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/categories?post=2710"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/writingagame.com\/index.php\/wp-json\/wp\/v2\/tags?post=2710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}