{"id":74178,"date":"2026-08-04T03:01:00","date_gmt":"2026-08-03T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=74178"},"modified":"2026-08-03T16:09:45","modified_gmt":"2026-08-03T06:09:45","slug":"emulating-android-on-macos-landing-page-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/emulating-android-on-macos-landing-page-tutorial\/","title":{"rendered":"Emulating Android on macOS Landing Page Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Android\/emulate_android_lp.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Emulating Android on macOS Landing Page Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Android\/emulate_android_lp.gif\" title=\"Emulating Android on macOS Landing Page Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">Emulating Android on macOS Landing Page Tutorial<\/p><\/div>\n<p>During yesterday&#8217;s <a title='Emulating Android on macOS Revisit Tutorial' href='#eaosrt'>Emulating Android on macOS Revisit Tutorial<\/a>&#8216;s Android emulations we noticed our <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/index.php\" rel=\"noopener\">Landing Page<\/a> &#8220;Programming&#8221; word overflowed on the Android mobile device screen <font size=1>(we got going via an Android Studio Device Manager Pixel Sim emulation)<\/font>.  Maybe we&#8217;d allow that through on occasions, but it grates with us when it happens on the Landing Page so the Javascript &#8220;at document.body onload event&#8221; intervention &#8230;<\/p>\n<p><code><br \/>\n    if (navigator.userAgent.match(\/Android\/i)) {<br \/>\n      document.getElementById('toph1').innerHTML=document.getElementById('toph1').innerHTML.replace(' Programming', ' &lt;h2&gt;Programming&lt;\/h2&gt;');<br \/>\n    }<br \/>\n<\/code><\/p>\n<p> &#8230; was deployed with less aaaarrrrgggghhh about it!<\/p>\n<p><b><i>Did You Know<\/i><\/b><\/p>\n<p>Quite often, confronted with a similar initial scenario where the HTML goes something like &#8230;<\/p>\n<p><code><br \/>\n&lt;h1 id=\"toph1\" class=\"w3-margin w3-jumbo\"&gt;RJM Programming&lt;\/h1&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; we might have gone, instead &#8230;<\/p>\n<p><code><br \/>\n    if (navigator.userAgent.match(\/Android\/i)) {<br \/>\n      document.getElementById('toph1').innerHTML=document.getElementById('toph1').innerHTML.replace(' Programming', ' &lt;span&gt;Programming&lt;\/span&gt;');<br \/>\n    }<br \/>\n<\/code><\/p>\n<p> &#8230; where the <a target=\"_blank\" title='HTML span element information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTML\/Reference\/Elements\/span' rel=\"noopener\"><i>span<\/i><\/a> element we see as the natural &#8220;inline&#8221; infilling HTML element type of choice.  Here, though, we opted for <a target=\"_blank\" title='HTML span element information' href='https:\/\/www.w3schools.com\/tags\/tag_hn.asp' rel=\"noopener\"><i>h2<\/i><\/a> in preference, it being such an obvious header element scenario.  Also, Javascript DOM could have been used to adjust font size via Javascript like &#8230;<\/p>\n<p><code><br \/>\n[element].style.fontSize='14px';<br \/>\n<\/code><\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/new-emulating-android-on-macos-revisit-tutorial\/' rel=\"noopener\">New Emulating Android on macOS Revisit Tutorial<\/a>.<\/p-->\n<hr>\n<p id='eaosrt'>Previous relevant <a target=\"_blank\" title='Emulating Android on macOS Revisit Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/emulating-android-on-macos-revisit-tutorial\/' rel=\"noopener\">Emulating Android on macOS Revisit Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Android\/emulate_android.gif\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Emulating Android on macOS Revisit Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Android\/emulate_android.gif\" title=\"Emulating Android on macOS Revisit Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">Emulating Android on macOS Revisit Tutorial<\/p><\/div>\n<p>Yes, we did once own an Android mobile device as <a title='Voicemail Disabling on Android Primer Tutorial' href='#vdapt'>Voicemail Disabling on Android Primer Tutorial<\/a> can attest to below.   But we haven&#8217;t had one, physically like this, functional, for some time now.<\/p>\n<p>We primarily work on macOS with this MacBook Air and with an iOS iPhone and\/or iPad.  We know from mobile work in the past, that does not mean you do not have available to you options to &#8230;<\/p>\n<blockquote><p>\nEmulate an Android mobile device\n<\/p><\/blockquote>\n<p> &#8230; via two macOS <a target=\"_blank\" title='Integrated Development Environment information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Integrated_development_environment' rel=\"noopener\">IDE<\/a> ideas we can think of, those being &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" title='Xcode IDE information from Apple' href='https:\/\/developer.apple.com\/technologies\/tools\/' rel=\"noopener\">Xcode<\/a><\/li>\n<li><a target=\"_blank\" title='Android Studio download' href='http:\/\/developer.android.com\/sdk\/' rel=\"noopener\">Android Studio<\/a><\/li>\n<\/ul>\n<p> &#8230; and, we&#8217;re sure, there&#8217;d be others out there.  We ended up, regarding today&#8217;s resurrection of such emulations, a successful Android Studio (Java basis) -&gt; Device Manager -&gt; Pixel Sim emulation, curious to catch up on what needed tweaking &#8220;aesthetics wise&#8221;.<\/p>\n<p>And so, warts and all, we show you via <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Android\/emulate_android.gif\" rel=\"noopener\">today&#8217;s animated GIF<\/a> presentation a catch up, involving an upgrade from macOS Sequoia 15 to macOS Tahoe 26.6 to allow Xcode 26.? be installed (and the Xcode 26.6 we installed may need a relook here, regarding it&#8217;s <span title='Just not opening, with no screen error message.'>&#8220;curbing of enthusiasm&#8221;<\/span> stance so far).<\/p>\n<p>This <a target=\"_blank\" title='simulate android phone on macos without xcode simulators' href='https:\/\/www.google.com\/search?q=simulate+android+phone+on+macos+without+xcode+simulators&#038;sca_esv=6464727e43d2f071&#038;rlz=1C5OZZY_en&#038;sxsrf=APpeQnuRzhOz2HFQargCt5UeZo7UvJaeiA%3A1785632042132&#038;ei=KpVuaq_cB9GXseMPhMiOuQI&#038;biw=1600&#038;bih=778&#038;ved=0ahUKEwivmcjc3YCWAxXRS2wGHQSkIycQ4dUDCBA&#038;uact=5&#038;oq=simulate+android+phone+on+macos+without+xcode+simulators&#038;gs_lp=Egxnd3Mtd2l6LXNlcnAiOHNpbXVsYXRlIGFuZHJvaWQgcGhvbmUgb24gbWFjb3Mgd2l0aG91dCB4Y29kZSBzaW11bGF0b3JzMgUQIRifBUjsIlDgB1jnG3ABeAGQAQCYAe0BoAGkD6oBBTAuNy40uAEDyAEA-AEBmAIMoALlD8ICChAAGEcY1gQYsAPCAggQABiABBiiBMICBRAAGO8FwgIEECEYFZgDAIgGAZAGCJIHBTEuNy40oAfKJbIHBTAuNy40uAfeD8IHBTAuOC40yAcfgAgB&#038;sclient=gws-wiz-serp' rel=\"noopener\">simulate android phone on macos without xcode simulators<\/a> great link, thanks, was the basis for our hope, and though it didn&#8217;t all go smoothly, persevering with it&#8217;s excellent basis was worth it &#8230;<\/p>\n<blockquote cite='https:\/\/www.google.com\/search?q=simulate+android+phone+on+macos+without+xcode+simulators&#038;sca_esv=6464727e43d2f071&#038;rlz=1C5OZZY_en&#038;sxsrf=APpeQnuRzhOz2HFQargCt5UeZo7UvJaeiA%3A1785632042132&#038;ei=KpVuaq_cB9GXseMPhMiOuQI&#038;biw=1600&#038;bih=778&#038;ved=0ahUKEwivmcjc3YCWAxXRS2wGHQSkIycQ4dUDCBA&#038;uact=5&#038;oq=simulate+android+phone+on+macos+without+xcode+simulators&#038;gs_lp=Egxnd3Mtd2l6LXNlcnAiOHNpbXVsYXRlIGFuZHJvaWQgcGhvbmUgb24gbWFjb3Mgd2l0aG91dCB4Y29kZSBzaW11bGF0b3JzMgUQIRifBUjsIlDgB1jnG3ABeAGQAQCYAe0BoAGkD6oBBTAuNy40uAEDyAEA-AEBmAIMoALlD8ICChAAGEcY1gQYsAPCAggQABiABBiiBMICBRAAGO8FwgIEECEYFZgDAIgGAZAGCJIHBTEuNy40oAfKJbIHBTAuNy40uAfeD8IHBTAuOC40yAcfgAgB&#038;sclient=gws-wiz-serp'><p>\nAI Overview<br \/>\n<br \/>\nYou can run an official Android emulator on macOS without Android Studio by installing the standalone command-line tools and Java via Homebrew.Install PrerequisitesOpen your terminal and install a Java JDK and the minimal command-line tools using <\/p>\n<p>Homebrew:<br \/>\n<br \/>bash<br \/>\n<br \/>brew install &#8211;cask temurin<br \/>\nbrew install &#8211;cask android-commandlinetools<br \/>\nbrew install &#8211;cask android-platform-tools<\/p>\n<p>Use code with caution.<\/p>\n<p>Setup and Run the EmulatorDownload Components: Use sdkmanager to download the emulator, platform tools, and a system image (e.g., ARM64 for Apple Silicon):<\/p>\n<p>bash<br \/>\n<br \/>mkdir -p ~\/Library\/Android\/sdk<br \/>\nyes | sdkmanager &#8211;sdk_root=$HOME\/Library\/Android\/sdk &#8211;licenses<br \/>\nsdkmanager &#8211;sdk_root=$HOME\/Library\/Android\/sdk &#8220;emulator&#8221; &#8220;platform-tools&#8221; &#8220;system-images;android-35;google_apis;arm64-v8a&#8221;<\/p>\n<p>Use code with caution.<\/p>\n<p>Create &#038; Launch AVD:<br \/>\n<br \/>Create the virtual device and start it via the terminal:<br \/>\n<br \/>bash<br \/>\n<br \/>export ANDROID_HOME=$HOME\/Library\/Android\/sdk<br \/>\n$ANDROID_HOME\/cmdline-tools\/latest\/bin\/avdmanager create avd -n Pixel_Sim -k &#8220;system-images;android-35;google_apis;arm64-v8a&#8221;<br \/>\n$ANDROID_HOME\/emulator\/emulator -avd Pixel_Sim<br \/>\nUse code with caution.\n<\/p><\/blockquote>\n<p> &#8230; as many battles with installs are, especially with the &#8220;not nearly so scary&#8221; online advice you can get out there these days.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/emulating-android-on-macos-revisit-tutorial\/' rel=\"noopener\">Emulating Android on macOS Revisit Tutorial<\/a>.<\/p-->\n<hr>\n<p id='vdapt'>Previous relevant <a target=\"_blank\" title='Voicemail Disabling on Android Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/voicemail-disabling-on-android-primer-tutorial\/' rel=\"noopener\">Voicemail Disabling on Android Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Android\/voicemail_disable.pdf\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Voicemail Disabling on Android Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Android\/voicemail_disable.jpg\" title=\"Voicemail Disabling on Android Primer Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">Voicemail Disabling on Android Primer Tutorial<\/p><\/div>\n<p>Was shocked the other day hearing of the prediction that eventually Voicemail will fadeaway as a communication tool.  Nevertheless, it can irk, and know a student who feels like this with Voicemail on their Android mobile phone.<\/p>\n<p>So we looked into disabling it, and found the third suggestion of three on <a target=\"_blank\" title='How to Disable Voicemail on Android' href='https:\/\/www.wikihow.com\/Disable-Voicemail-on-Android' rel=\"noopener\">How to Disable Voicemail on Android<\/a>&#8216;s &#8220;Method 3: Using your Android&#8217;s Settings&#8221; just the ticket.<\/p>\n<p>For the curious, other methods here involved third-party software, but we&#8217;ve always preferred bare bones suggestions when they sound just as good (<a target=\"_blank\" title=\"An early blog post\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=243' rel=\"noopener\">&#8220;the best things in life are free&#8221;<\/a>), if not better &#8230; so &#8230; we did the suggested steps of this procedure successfully on the student&#8217;s  Android mobile phone.  Along the way we photographed the steps involved (on my iPhone) to make today&#8217;s stream of consciousness <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Android\/voicemail_disable.pdf\" title=\"Click picture\" rel=\"noopener\">PDF presentation<\/a> for your viewing, appraisal, filtering, mulling, obfuscating, &#8220;what Hamlet did&#8221;, reading and perhaps even applying?!  In a single sentence we could advise &#8220;tap the Phone app&#8221; and &#8220;look for Settings option off the three dots menu&#8221; and proceed deep into the menu system looking for &#8220;Call Forwarding settings&#8221; and once there, &#8220;disabling&#8221; (a lot, and everywhere).<\/p>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>For all those horrified at the prospect (of disabling Voicemail) &#8230; you still end up with notifications of missed calls in the sense that the look of the Phone app icon on the desktop of your Android phone, even doing away with Voicemail.  It will show up the top right of its icon as a ringed number (of, now, only, missed calls).<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d45125' onclick='var dv=document.getElementById(\"d45125\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/android\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d45125' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d74162' onclick='var dv=document.getElementById(\"d74162\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/device\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d74162' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d74178' onclick='var dv=document.getElementById(\"d74178\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/landing-page\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d74178' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>During yesterday&#8217;s Emulating Android on macOS Revisit Tutorial&#8216;s Android emulations we noticed our Landing Page &#8220;Programming&#8221; word overflowed on the Android mobile device screen (we got going via an Android Studio Device Manager Pixel Sim emulation). Maybe we&#8217;d allow that &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/emulating-android-on-macos-landing-page-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,12,14,18,37],"tags":[2419,76,80,322,327,354,1549,5618,1803,3453,5620,576,585,2487,611,644,652,680,795,1969,870,920,2994,2263,1319,5619,1473],"class_list":["post-74178","post","type-post","status-publish","format-standard","hentry","category-android","category-elearning","category-event-driven-programming","category-hardware","category-tutorials","tag-aesthetics","tag-android","tag-android-studio","tag-device","tag-did-you-know","tag-dom","tag-element","tag-emulate","tag-emulation","tag-font-size","tag-h2","tag-html","tag-ide","tag-inline","tag-install","tag-java","tag-javascript","tag-landing-page","tag-mobile","tag-mobile-device","tag-onload","tag-phone","tag-simulate","tag-span","tag-tutorial","tag-virtual","tag-xcode"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/74178"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=74178"}],"version-history":[{"count":4,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/74178\/revisions"}],"predecessor-version":[{"id":74183,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/74178\/revisions\/74183"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=74178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=74178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=74178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}