<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Android &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/android/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Tue, 15 Aug 2023 20:11:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Creating an Android Library with Kotlin for use with Xojo</title>
		<link>https://blog.xojo.com/2023/08/15/creating-an-android-library-with-kotlin-for-use-with-xojo/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 15 Aug 2023 20:11:14 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Declares]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Kotlin]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11913</guid>

					<description><![CDATA[In this first beta release of Android, there is some simple support for creating Android libraries and calling their methods from Xojo code. The Android libraries have to be written in Kotlin and compiled as AAR library files. Xojo code can call into the library using Declares.]]></description>
										<content:encoded><![CDATA[
<p>In this first beta release of Android, there is some simple support for creating Android libraries and calling their methods from Xojo code. The Android libraries have to be written in Kotlin and compiled as AAR library files. Xojo code can call into the library using Declares.</p>



<p>To create an Android library you will need to use Android Studio, which you should already have installed as its compiler toolchain and SDK are required by Xojo.</p>



<p>Create a New Android project (File-&gt;New-&gt;New Project), choosing “No Activity” from the Phone and Tablet section.</p>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-1024x800.png" alt="" class="wp-image-11914" style="width:623px;height:487px" width="623" height="487" srcset="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-1024x800.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-300x234.png 300w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-768x600.png 768w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-1536x1201.png 1536w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic.png 2024w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p>You should be sure to choose Kotlin as the language and the Minimum SDK should be 26 to match what Xojo uses. For this example, I’ve named the project “LibraryTest”.</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-1-1024x800.png" alt="" class="wp-image-11916" style="width:634px;height:495px" width="634" height="495" srcset="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-1-1024x800.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-1-300x234.png 300w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-1-768x600.png 768w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-1-1536x1201.png 1536w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-1.png 2024w" sizes="(max-width: 634px) 100vw, 634px" /></figure>



<p>In this project, add a module (File-&gt;New-&gt;New Module), choosing the “Android Library” template. Here you can name your library, choose the language, etc. Again, stick with Kotlin.</p>



<p>I’m naming the library “utility” so that it can contain a random collection of things.</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-3-1024x776.png" alt="" class="wp-image-11917" style="width:656px;height:497px" width="656" height="497" srcset="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-3-1024x776.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-3-300x227.png 300w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-3-768x582.png 768w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-3-1536x1163.png 1536w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-3.png 1682w" sizes="(max-width: 656px) 100vw, 656px" /></figure>



<p>In the Android Studio navigator, expand the utility library and then the java folder. Yes, it is weird that Kotlin code is in a Java folder, but a lot about Android Studio is weird to me.</p>



<p>Right-click on “com.example.utility” and select New-&gt;Kotlin Class/File. In the selector, choose “Class” and type the name of the class as “regex” and press return. In this class will be a method to do some simple regex pattern matching.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-4.png" alt="" class="wp-image-11918" style="width:276px;height:211px" width="276" height="211" srcset="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-4.png 678w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-4-300x229.png 300w" sizes="auto, (max-width: 276px) 100vw, 276px" /></figure>



<p>This creates an empty class:</p>



<pre id="xojo" class="wp-block-code"><code><code>package<strong> </strong>com.example.utility
class regex {

}</code></code></pre>



<p>Currently Xojo can only talk to methods in the companion class. These methods are similar to Shared methods in Xojo and work without creating a specific class instance.</p>



<p>In the class, add the companion object so that it looks like this:</p>



<pre id="Xojo" class="wp-block-code"><code><code>package com.example.utility

class regex {

    companion object {

    }

}</code></code></pre>



<p>Inside the companion object, add a method that will do simple regex pattern matching. Your code now looks like this:</p>



<pre id="Xojo" class="wp-block-code"><code><code>package com.example.utility

class regex {

    companion object {

        fun regexmatch(regex: String, text: String): Boolean {

            // Use the regex pattern
            val pattern = Regex(regex)

            // Returns true if it matches, false if it does not.
            return pattern.matches(text)
        }

    }

}</code></code></pre>



<p>The last step is to change the Kotlin version to match the version Xojo uses. In the Android Studio navigator, open Gradle Scripts and double-click “build.gradle (Project: LibraryTest)” to open it.</p>



<p>Change the last line with the kotlin.android version from whatever is there to “1.6.20”:</p>



<pre id="xojo" class="wp-block-code"><code><code>// Top-level build file where you can add configuration options common to all sub-projects/modules.

plugins {
    id 'com.android.application' version '8.0.2' apply false
    id 'com.android.library' version '8.0.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.6.20' apply false
}</code></code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Note</strong>: You may be prompted to do a Gradle sync after making this change. Go ahead and do the sync if prompted.</p>
</blockquote>



<p>The last thing to do in Android Studio is to build the library. From the Build menu, choose “Select Build Variant”. In the Build Variants panel that appears, click on the Active Build Variant value for the utility row and change it from debug to release.</p>



<p>Select Build-&gt;Rebuild Project to build the library file that Xojo will use.</p>



<p>In your file system, go to your project’s location and fine the aar file, which is located here: LibraryTest/utility/build/outputs/aar/utility-release.aar Make a note of this as we will be using it with Xojo in a moment.</p>



<p>Speaking of Xojo, create a new Xojo Android project and name it LibraryTest. Add a button and a table like so:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-5-530x1024.png" alt="" class="wp-image-11919" style="width:295px;height:569px" width="295" height="569" srcset="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-5-530x1024.png 530w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-5-155x300.png 155w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-5-768x1484.png 768w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-5-795x1536.png 795w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-5.png 858w" sizes="auto, (max-width: 295px) 100vw, 295px" /></figure>



<p>In the button’s pressed event, <a href="https://blog.xojo.com/2023/08/09/android-declares/">write the Declare statements</a> to call the regexmatch method in the library, passing it a regex pattern and a string to test. Here is the code, which tests three strings and outputs the result to the table:</p>



<pre id="Xojo" class="wp-block-code"><code><code>Declare Function regexmatch Lib "com.example.utility.regex" (pattern As CString, value As CString) As Boolean

// Look for g, followed by any number of "ee" pairs and ending with ks
Var pattern As String = "g(&#91;ee]+)ks?"
Var result As Boolean
Var values() As String = Array("geeks", "geeeeeeeeeeks", "geeksforgeeks")

For Each v As String In values
  result = regexmatch(pattern, v)
  Table1.AddRow(v, result.ToString)
Next

// From: https://www.geeksforgeeks.org/kotlin-regular-expression/</code></code></pre>



<p>The important thing to note in this code is the use of CString in place of String, a requirement when working with a Declare even if it doesn’t directly apply to Android.</p>



<p>Also note that you need to provide the full path to the class. You have to use “com.example.utility.regex”, not just “regex”.</p>



<p>The next step is to add the Library to the Xojo project. Select Android in the Build Settings and add a Copy Files Build Step (Insert-&gt;Build Step-&gt;Copy Files).</p>



<p>Expand Android and click on CopyFiles1. Rename it to LibCopy and drag it so that it is before the Build entry. Change the Destination to “Framework Folder”.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-7.png" alt="" class="wp-image-11920" style="width:271px;height:157px" width="271" height="157" srcset="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-7.png 442w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-7-300x174.png 300w" sizes="auto, (max-width: 271px) 100vw, 271px" /></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-8.png" alt="" class="wp-image-11921" style="width:319px;height:211px" width="319" height="211" srcset="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-8.png 586w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-8-300x199.png 300w" sizes="auto, (max-width: 319px) 100vw, 319px" /></figure>



<p>Add the library that we built with Android Studio to this LibCopy step. Click “+” in the command bar and locate utility-release.aar.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Note</strong>: If you still have Android Studio open at this point, you should close it, otherwise it will lock debugger access and prevent the Xojo app from starting.</p>
</blockquote>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Pro Tip</strong>: You can keep Android Studio open and run from Xojo by choosing this preference setting: Build, Execution, Deployment -&gt; Debugger -&gt; Use existing manually managed server. You’ll want to set it back to “Automatically start and manage the server” if you use Android Studio for anything else. Constantly flipping that setting is common when working with Android libraries.</p>
</blockquote>



<p>Run the project. If you did everything correctly, it should launch on your device or emulator. Click the button to see the output which should look like this:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-6-930x1024.png" alt="" class="wp-image-11923" style="width:430px;height:473px" width="430" height="473" srcset="https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-6-930x1024.png 930w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-6-272x300.png 272w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-6-768x846.png 768w, https://blog.xojo.com/wp-content/uploads/2023/08/Pasted-Graphic-6.png 964w" sizes="auto, (max-width: 430px) 100vw, 430px" /></figure>



<p>With libraries you can add your own extensions to Xojo’s Android support. You are limited to simple types at the moment, but that still opens up a lot of capabilities. This capability will continue to be expanded through the Android beta.</p>



<p>Feel free to share any Kotlin libraries you create in the Android topic of the forum.</p>



<p><a href="https://files.xojo.com/BlogExamples/UtilityLibrary.zip">Download this Example RegEx Library</a></p>



<p>Here is <a href="https://files.xojo.com/BlogExamples/LibTest.zip">another simple Library</a> you can download and examine.</p>



<p><em>Paul learned to program in BASIC at age 13 and has programmed in more languages than he remembers, with Xojo being an obvious favorite. When not working on Xojo, you can find him talking about retrocomputing at <a href="https://goto10.substack.com" target="_blank" rel="noreferrer noopener">Goto 10</a> and </em>on Mastodon @lefebvre@hachyderm.io.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Multiplatform Madness &#8211; JSONReader</title>
		<link>https://blog.xojo.com/2023/05/18/multiplatform-madness-jsonreader/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Thu, 18 May 2023 18:00:35 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[XDC]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11563</guid>

					<description><![CDATA[In my session at XDC 2023, I talked about ways to design your apps so you reuse code across platforms. The first project is JSONReader, so let’s dive in.]]></description>
										<content:encoded><![CDATA[
<p>In my session at XDC 2023, I talked about ways to design your apps so you reuse code across platforms.</p>



<p>In this series of blog posts, I will cover the sixteen sample projects I created for that session (JSONReader, Mastodon, DisplayDB, DrawCards, with separate versions for desktop, web, iOS and Android) in more detail.</p>



<p>You can watch the presentation on YouTube:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Multiplatform Madness - Paul Lefebvre" width="500" height="281" src="https://www.youtube.com/embed/V4KVeQ6Xp80?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>The accompanying hands-on session might also be interesting, where I show the projects running on Android:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Android Hands On Training, XDC 2023" width="500" height="281" src="https://www.youtube.com/embed/UOHBEpMeFsg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>You can also <a href="https://files.xojo.com/XDC/2023/MadnessExamples.zip">download all the sample projects</a>.&nbsp;</p>



<p>The first project is JSONReader, so let’s dive in.</p>



<h2 class="wp-block-heading">JSONReader</h2>



<p>This sample demonstrates a couple classes that can read some specifically formatted JSON. I generated this “mock” JSON data using <a href="https://www.mockaroo.com/">Mockaroo</a>.</p>



<p>The two classes are <strong>Staff</strong> and <strong>StaffDetail</strong>. The Staff class contains the JSON data as a constant for simplicity, but it could load it from anywhere, such as a file or from the web. These classes use standard Xojo framework code and are fully compatible with desktop, web, iOS and Android projects.</p>



<p>On Staff are three methods which are used to fetch information from the JSON: Everyone(), GetNames() and GetSlogans().</p>



<p>Each of these methods are similar in that they loop through the items in the JSON like so:</p>



<pre class="wp-block-code"><code>FOR pos As Integer = 0 To JSONData.Count - 1</code></pre>



<p>The simplest method is GetNames() which just fetches the first and last name from the JSON and combines them into a single string. It then returns all of these names as a string array.</p>



<p>GetSlogans() is similar, but it instead fetches the Slogan field from the JSON, returning them all as a string array.</p>



<p>The Everyone() method makes use of the StaffDetail class which is just a storage class with properties for each field in the JSON. It also loops through the JSON, but grabs each value and puts it into a StaffDetail instance. All of these are collected into an array and returned.</p>



<p>Although this design is simple, it demonstrates how to separate processing code from the UI. Because everything related to JSON is hidden in these classes and returned as arrays, the UI code (which will be different between platforms) only has to deal with arrays and not with how they were created. You can copy and use the classes as needed in whatever project types you are creating.</p>



<p>For the desktop app, the Window has three buttons which display the results of the above methods in a ListBox.</p>



<p>For example, the NamesButton has this code in its Pressed event:</p>



<pre class="wp-block-code"><code>DataList.RemoveAllRows
Var allStaff As New Staff
Var names() As String = allStaff.GetNames

For Each name As String In names
&nbsp; DataList.AddRow(name)
Next</code></pre>



<p>The SloganButton is similar. The AllButton code only differs by having an array of StaffDetail:</p>



<pre class="wp-block-code"><code>DataList.RemoveAllRows
Var allStaff As New Staff
Var everyone() As StaffDetail = allStaff.Everyone

For Each detail As StaffDetail In everyone
&nbsp; DataList.AddRow(detail.FirstName + " works on " + detail.Slogan + ".")
Next</code></pre>



<p>When you look at the projects, notice that the code for the WebPage, iOS Screen and Android Screen buttons is exactly the same as the code for the desktop Window buttons!</p>



<p>That won’t always be the case, of course, but it is a good first start and demonstrates how similar the UI API is across platforms.</p>



<p>In my next post, I will look at the Mastodon sample projects which make use of URLConnection.</p>



<p><em>Paul learned to program in BASIC at age 13 and has programmed in more languages than he remembers, with Xojo being an obvious favorite. When not working on Xojo, you can find him talking about retrocomputing at <a href="https://goto10.substack.com" target="_blank" rel="noreferrer noopener">Goto 10</a> and </em>on Mastodon @lefebvre@hachyderm.io.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>#1 on the Xojo Roadmap: Android</title>
		<link>https://blog.xojo.com/2021/01/21/1-on-the-xojo-roadmap-android/</link>
		
		<dc:creator><![CDATA[Travis Hill]]></dc:creator>
		<pubDate>Thu, 21 Jan 2021 20:37:16 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Roadmap]]></category>
		<category><![CDATA[Xojo API 2.0]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=8017</guid>

					<description><![CDATA[We're hard at work on Xojo's upcoming Android support — it is our top priority. As we've discussed previously, you can see in the current versions of Xojo that the latest iOS controls now start with "Mobile" in their name. Although Android and iOS will start off as different project types, implementing the "Mobile" prefix is an important step to complete so you will see similar controls when Android support is available.]]></description>
										<content:encoded><![CDATA[
<p>We&#8217;re hard at work on Xojo&#8217;s upcoming Android support — it is our <a rel="noreferrer noopener" href="https://documentation.xojo.com/resources/roadmap.html" target="_blank">top priority</a>. As we&#8217;ve <a href="https://blog.xojo.com/2020/12/04/xojotalk-037-2020-release-2-extravaganza/" data-type="post" data-id="7814">discussed previously</a>, you can see in the current versions of Xojo that the latest iOS controls now start with &#8220;<a href="https://documentation.xojo.com/Category:New2020r2">Mobile</a>&#8221; in their name. Although Android and iOS will start off as different project types, implementing the &#8220;Mobile&#8221; prefix is an important step to complete so you will see similar controls when Android support is available.</p>



<p>We continue to make progress on all aspects of Android support which includes:</p>



<ul class="wp-block-list"><li>Code generation work to make sure your Xojo code performs as you expect with the Android virtual machine</li><li>Controls with names, properties, and events that match iOS as closely as possible</li><li>The debugging experience</li><li>Removing external dependencies where possible, so you hit the ground running</li></ul>



<p>Right now we have many of the UI controls working, much of the Xojo language and more than 30 example projects to help with testing. As you may already know, we are creating native Android apps using native Android controls and targeting Android 5.0 (Lollipop, API 21) and higher.</p>



<p>To give you a feel for this, here is a look at the Android version our Eddie&#8217;s Electronics sample project.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="810" src="https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.20.59@2x-1024x810.png" alt="" class="wp-image-8021" srcset="https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.20.59@2x-1024x810.png 1024w, https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.20.59@2x-300x237.png 300w, https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.20.59@2x-768x608.png 768w, https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.20.59@2x-1536x1215.png 1536w, https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.20.59@2x-2048x1620.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>This should all look pretty familiar, especially if you&#8217;ve worked with iOS projects. And speaking of familiar, this is what some of the code looks like:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="810" src="https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.22.58@2x-1024x810.png" alt="" class="wp-image-8022" srcset="https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.22.58@2x-1024x810.png 1024w, https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.22.58@2x-300x237.png 300w, https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.22.58@2x-768x608.png 768w, https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.22.58@2x-1536x1215.png 1536w, https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.22.58@2x-2048x1620.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>We even have the ability to run this project in both the Android Emulator and on a physical Android device. Here is Eddie&#8217;s Electronics running on the Android Emulator (Pixel 4 emulation):</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="377" height="800" src="https://blog.xojo.com/wp-content/uploads/2021/01/CleanShot-2021-01-21-at-13.29.47.gif" alt="" class="wp-image-8023"/></figure></div>



<p>As you can see, there is still more to do, but many things have been completed. We look forward to beginning the testing phase once we feel like testers can have a good experience with the items noted above. We cannot commit to timelines, but we are thrilled with the incredible interest we&#8217;ve seen! Rest assured that we are as excited as you to have Android support in Xojo and are working hard to deliver it.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Android Update &#8211; October 2019</title>
		<link>https://blog.xojo.com/2019/10/25/android-update-october-2019/</link>
		
		<dc:creator><![CDATA[Dana Brown]]></dc:creator>
		<pubDate>Fri, 25 Oct 2019 12:59:47 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=6166</guid>

					<description><![CDATA[Though the MBS Xojo Conference is still in progress, I wanted to post an update about the demo Geoff just presented on our Android progress,&#8230;]]></description>
										<content:encoded><![CDATA[
<p>Though the <a href="https://www.monkeybreadsoftware.de/xojo/events/cologne-2019-event.shtml">MBS Xojo Conference</a> is still in progress, I wanted to post an update about the demo Geoff just presented on our Android progress, since we have been very busy the last 5 months. Many controls/classes are now working including Button, TextField, TextArea, Slider, ProgressBar, Switch, HTMLViewer, DateChooser, FolderItem, Dictionary, MessageBox and more. Geoff showed code executing in the Android emulator and ran projects straight from the IDE to his Android device. Graphics are also working now, as you can see in the demo video below.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Xojo Programming - Android Demo" width="500" height="375" src="https://www.youtube.com/embed/zmU9dlmTyfs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Though we have made a lot of progress since our last demo in April, we still have some items left to complete, including adding Debugger support and completing the IDE integration. </p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="614" src="https://blog.xojo.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-25-at-2.57.20-PM-1024x614.png" alt="" class="wp-image-6174" srcset="https://blog.xojo.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-25-at-2.57.20-PM-1024x614.png 1024w, https://blog.xojo.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-25-at-2.57.20-PM-300x180.png 300w, https://blog.xojo.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-25-at-2.57.20-PM-768x460.png 768w, https://blog.xojo.com/wp-content/uploads/2019/10/Screen-Shot-2019-10-25-at-2.57.20-PM.png 1932w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>The HTMLViewer Example</figcaption></figure>



<p>After we ship our initial release of Android, we have a few things planned. We will be updating the iOS Framework to API 2.0 and adding auto-layout to Android. In addition, we plan to have a single mobile project for both Android and iOS, so just as you select your target OS on the desktop today, you&#8217;ll be able to do the same on mobile &#8211; Android or iOS.</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2019/10/EHuQO7oWwAM4sEv-768x1024.jpg" alt="" class="wp-image-6170" width="437" height="582" srcset="https://blog.xojo.com/wp-content/uploads/2019/10/EHuQO7oWwAM4sEv-768x1024.jpg 768w, https://blog.xojo.com/wp-content/uploads/2019/10/EHuQO7oWwAM4sEv-225x300.jpg 225w, https://blog.xojo.com/wp-content/uploads/2019/10/EHuQO7oWwAM4sEv.jpg 900w" sizes="auto, (max-width: 437px) 100vw, 437px" /><figcaption>Geoff runs an Android app on his device.</figcaption></figure></div>



<p>The conference attendees were very excited to see the latest update, the mobile future on Xojo is bright! Stay tuned for more news and announcements. </p>



<p>**Xojo Android is not currently in beta and we have not yet announced a ship date.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Best Cross-Platform Secret Weapon You&#8217;ve Never Heard Of</title>
		<link>https://blog.xojo.com/2017/11/08/the-best-cross-platform-secret-weapon-youve-never-heard-of/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 08 Nov 2017 07:16:32 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2738</guid>

					<description><![CDATA[The only way to be sure you are reaching all your potential customers is to target multiple platforms. But cross-platform development is crazy-hard, right? With Xojo, multi-platform apps are simple to create.]]></description>
										<content:encoded><![CDATA[<p>In today’s world, the only way to be sure you are reaching all your potential customers is to target multiple platforms. But cross-platform development is crazy-hard, right? Perhaps, if you are using tools like Java, Qt, Delphi or Xamarin it certainly can be. But with Xojo, cross-platform apps are simple to create.</p>
<p>In fact, Xojo lets you easily cross-compile desktop apps for Windows, macOS, Linux and Raspberry Pi. Plus, you can use the same Xojo language to create web and iOS apps too (Android coming soon!).</p>
<p><span id="more-2738"></span></p>
<h3>How does it work?</h3>
<p>Xojo always builds your apps as native executables for your platform. There are no virtual machines and no interpreted code. And Xojo uses mostly native controls so that your apps have the look and feel that your users expect on each of those platforms.</p>
<p>You simply check the box next to the target platforms you want and click the Build button. Xojo does the rest.</p>
<p align="center"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3485" src="https://blog.xojo.com/wp-content/uploads/2017/08/Screen-Shot-2017-10-23-at-12.12.07-PM.png" alt="" width="125" height="120" /></p>
<p>Xojo has <a href="http://blog.xojo.com/2017/06/21/daring-to-defy-software-extinction-a-limited-history/">been around since 1998</a> offering the ability to create Mac apps, over the years adding the ability to create Windows, Linux, iOS, web and Raspberry Pi apps &#8211; and we&#8217;re currently working towards Android support!</p>
<h3>Develop on Your Favorite OS</h3>
<p>The Xojo IDE itself is written in Xojo. This means it is cross-platform itself, so you can use Windows, macOS or Linux as your development platform. Because Xojo makes things easy, you are able to build <em>for</em> any platform <em>from</em> any platform (with the exception of iOS which requires a Mac for development).</p>
<p align="center"><img decoding="async" src="https://www.xojo.com/resources/images/crossplatform/Figure03-XojoOSX.png" /></p>
<p align="center"><img decoding="async" src="https://www.xojo.com/resources/images/crossplatform/Figure04-XojoWindows.png" /></p>
<p align="center"><img decoding="async" src="https://www.xojo.com/resources/images/crossplatform/Figure05-XojoLinux.png" /></p>
<h3>Installing Xojo is Painless</h3>
<p>Unlike other tools that have a complex installation process with lots of dependencies,<a href="https://youtu.be/0MCvShHeDyk?list=PLPoq910Q9jXh2VNc4GRQdNqL3V0-GakE3"> installing Xojo</a> is simple and quick with nothing else to worry about. You&#8217;ll be able to download and install Xojo and probably have your first simple app made before other tools even finish installing.</p>
<h3>Easy to Start, Fast to Develop</h3>
<p>Use drag and drop to design your user interface and write your code within Xojo using its powerful code editor with auto-complete.</p>
<p>You also don’t have to learn the specific OS programming APIs. Xojo abstracts you from complex OS details allowing you to easily create apps for multiple platforms without extra work.</p>
<p align="center"><img decoding="async" src="https://www.xojo.com/resources/images/crossplatform/Figure06-CodeEditor.png" /></p>
<h3>Learn and Develop for Free</h3>
<p>Even better, it costs you nothing to get started with Xojo. You can download Xojo for free and start using it to develop apps. You can make your first app in minutes, check out these 2 minutes videos showing you how for <a href="https://www.youtube.com/watch?v=2qIy3hPDsMM&amp;list=PLPoq910Q9jXh2VNc4GRQdNqL3V0-GakE3&amp;index=2">Mac</a>, <a href="https://www.youtube.com/watch?v=eYPUc0WP2T0&amp;list=PLPoq910Q9jXh2VNc4GRQdNqL3V0-GakE3&amp;index=3">Windows</a> and <a href="https://www.youtube.com/watch?v=OEvEcl3QHr4&amp;list=PLPoq910Q9jXh2VNc4GRQdNqL3V0-GakE3&amp;index=4">Linux</a> apps! <a href="http://www.xojo.com/learn">Learn to code with Xojo</a> &#8211; develop, run and test your apps all before buying a license. Purchase when you are ready to compile your app so you can share it with the world.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Short-Term Xojo Roadmap</title>
		<link>https://blog.xojo.com/2017/09/19/the-short-term-xojo-roadmap/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Tue, 19 Sep 2017 15:47:51 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Interops]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Roadmap]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3384</guid>

					<description><![CDATA[An update to the short-term Xojo roadmap, including 64-bit support and IDE, interpos and more.]]></description>
										<content:encoded><![CDATA[<p>At each XDC (<a href="http://www.xojo.com/xdc">Xojo Developer Conference)</a> I lay out, however roughly, what Xojo&#8217;s short-term development roadmap looks like for the next 12 months or so. Despite how well-conceived that roadmap may be, sometimes unexpected events occur that change or delay things.</p>
<p><span id="more-3384"></span></p>
<p>64-bit support, for example, has been a major focus and continues to be. At one time, 64-bit was a nice-to-have. Then it became important and now it&#8217;s critical. There are Linux distributions that no longer provide 32-bit support. iOS now requires apps to be compiled to 64-bit in order to be in the App Store. You might have noticed that the 2017r2 cycle was longer than usual. This was due to the fact that we were doing some major refactoring of how strings are handled under 64-bit. Some of the string functions you depend on were not always behaving themselves and were much slower than they were in 32-bit applications. That refactoring took twice as long as we&#8217;d originally planned. That&#8217;s just the way things go sometimes. Even companies such as Microsoft and Apple have announced features that were later delayed. We&#8217;ve all been there.</p>
<p>We are also working to provide a 64-bit version of the Xojo IDE. This is important for those you of with large projects because the current 32-bit IDE can only address so much memory. Once your project gets big enough, the IDE can run out of memory even though your computer has plenty to spare. We need this ourselves because the Xojo IDE is written in Xojo and as you can probably imagine, is a <em>very</em> big project. 64-bit applications can address all of the memory your computer (or <a href="https://blog.xojo.com/2017/03/29/64-bit-why-is-it-so-important/">any future computer</a> you own) will ever have. A 64-bit version of the IDE will permanently resolve this issue.</p>
<p>Sometimes the platform vendors make changes that require us to rearrange things a bit in the short term. For example, our first 64-bit platform was going to be Linux until Apple announced the 64-bit requirement for iOS apps to be in the iOS App Store far earlier than expected. Recently, Apple made it clear that under iOS 11 the Xcode 9 version of the iOS Simulator would not support 32-bit apps or debugging. We had originally planned to support 64-bit iOS Simulator debugging in 2018. Instead we are working hard and fast on that right now.</p>
<p>As a result of all this, some of our plans have been pushed out a bit. We had originally aimed to have Android, interops and plugins made with Xojo available for beta testing by the end of this calendar year. Now that&#8217;s not going to happen. We are still working quite hard on all these things (and more) but the 64-bit work has just waylaid us a bit. It is our intention, barring any additional unforeseen circumstances, to ship these features in the first half of 2018.</p>
<p>Fortunately, not all things have been delayed. We are working on a big update to the Windows framework that will dramatically reduce the flicker you sometimes see. This will not just improve the user experience of your apps but the Windows version of the Xojo IDE as well. Those of you that deploy to Windows or use Xojo itself on Windows will be quite pleased. I&#8217;m confident we will have these improvements available by year end.</p>
<p>If you want to help us with testing 64-bit Xojo or the updated Windows framework this year, <a href="https://forum.xojo.com/38207-welcoming-more-pre-release-testers">please join our Pre-Release Testing Program</a>.</p>
<p>For those of you that have been participating in pre-release testing, thank you so much. You are providing a valuable service to us and the Xojo community at large.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mobile Development and Testing: iOS vs. Android</title>
		<link>https://blog.xojo.com/2016/09/20/mobile-development-and-testing-ios-vs-android/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Tue, 20 Sep 2016 20:15:50 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Samsung]]></category>
		<category><![CDATA[Smartphone]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=1868</guid>

					<description><![CDATA[After being available for just a week now, iOS 10 has already been installed on  34% of iOS devices. It may end up outpacing the adoption&#8230;]]></description>
										<content:encoded><![CDATA[<p>After being available for just a week now, iOS 10 has already been installed on  <a href="http://www.macrumors.com/2016/09/19/ios-10-adoption-growing-steadily/">34%</a> of iOS devices. It may end up outpacing the adoption of iOS 9 in the weeks following its release. The latest version of Android, on the other hand, isn&#8217;t even close. In fact, Android adoption of a new major release is quite slow. For example the latest version of Android, Nougat, was released on August 22nd of this year and is running on 0.1% of phones: one-tenth of one percent. The previous major version, Marshmallow, was released almost a year ago and is now at <a href="http://gadgets.ndtv.com/mobiles/news/marshmallow-on-18-7-percent-of-android-devices-nougat-not-yet-on-chart-google-1458446" target="_blank">18.7%</a>, just slightly ahead of iOS 10&#8217;s first day adoption. Just a week after shipping, iOS 10 is now installed on almost twice the percentage of iOS devices compared to the year-old Marshmallow on Android devices.</p>
<p>This can have a significant impact on developers. The development and testing surface a developer must deal with is potentially as large as the number of OS versions they will support multiplied by the number of devices. On the iOS side, developers can often choose to only support the latest version of iOS because within a few months, most iOS users are running the latest version. There are really only 5 to a maximum of 8 iPhones and perhaps 4 iPads. That means 12 devices times a single OS version.</p>
<p><img loading="lazy" decoding="async" class="alignleft size-full wp-image-1872" src="https://blog.xojo.com/wp-content/uploads/2016/09/lots-of-phones2.jpg" alt="Many android phones" width="1000" height="666" /><br />
If a developer is going to support 80% of Android users, they have to go back to Android version 4 (Ice Cream Sandwich released in 2011) which means they have at least 4 but as many as 6 versions of Android to support multiplied by more than 50 devices that have been released since 2011. I&#8217;ve heard that it&#8217;s not unusual for Android developers to only test on the two latest Samsung phones. While that makes it easier on them, it virtually guarantees that the quality of software on Android is going to be reduced. How much would be difficult to quantify of course. Having said that, Google does not add new features to Android at anything like the rate at which Apple adds features to iOS. This is probably why developers can get away with a more limited development/testing surface on Android. Unfortunately, this leaves that judgement call up to the developer.</p>
<p>This could be made easier on developers if the Android market solidifies around a few devices. It could be argued that such solidification is already happening around Samsung. Despite Android having 80% of the smartphone market share, only one Android phone maker, Samsung, <a href="http://www.sitepronews.com/2016/08/24/apple-samsung-only-smartphone-makers-earning-a-profit/" target="_blank">makes a profit</a>. Every other Android phone maker loses money. Apple, on the other hand, is the only iOS device maker. Depending on the quarter, Apple makes between <a href="http://www.sitepronews.com/2016/08/24/apple-samsung-only-smartphone-makers-earning-a-profit/" target="_blank">75</a> and <a href="http://www.businessinsider.com/apple-dominates-profits-by-smartphone-maker-2015-11" target="_blank">90%</a> of the profit in the smartphone industry with Samsung making the rest. That too is telling. It suggests that the Android market almost certainly will continue to solidify, almost certainly around Samsung.</p>
<p>As a maker of development tools, we at <a href="http://www.xojo.com" target="_blank">Xojo, Inc.</a>, support many platforms: macOS, Windows, Linux, the web, Raspberry Pi and iOS. We absolutely plan to support Android as well. We have not kept that a secret. We know there are many Xojo users that are anxious for us to make that available. We&#8217;ve been carefully studying the Android platform, from the market down to the APIs, to make sure that we can offer the best solution for developing cross-platform mobile applications. While it&#8217;s no fun to have to wait, sometimes waiting and entering a market at just the right moment, makes it easier to provide a quality development tool that will make it easier for developers to develop and test quality software. We are your partner in this and want to be the best partner we can be.</p>
<p>Update: September 28th, 2016: Just 15 days after release, <a href="http://www.macrumors.com/2016/09/28/ios-10-adoption-overtakes-ios-9/">iOS 10 today has overtaken iOS 9</a> to become the most popular version of iOS.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mobile or Web-Mobile: Developing for iOS, Android or Both?</title>
		<link>https://blog.xojo.com/2014/04/24/mobile-or-web-mobile-developing-for-ios-android-or-both/</link>
					<comments>https://blog.xojo.com/2014/04/24/mobile-or-web-mobile-developing-for-ios-android-or-both/#comments</comments>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Thu, 24 Apr 2014 00:00:00 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Mobile]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2014/04/24/mobile-or-web-mobile-developing-for-ios-android-or-both/</guid>

					<description><![CDATA[Mobile or Web-Mobile: Developing for iOS, Android or Both?]]></description>
										<content:encoded><![CDATA[<p>If you are planning to create an app that needs to run on mobile devices your first decision is which mobile platforms to support. This will depend largely on the type of app you are creating and who you are creating it for. So what&#8217;s your best solution?</p>
<p><span id="more-117"></span></p>
<p>If your app is a commercial app that will be available to the general public via an app store or through ad-based revenue, iOS is the platform of choice. It is <a title="iOS versus Android Spending" href="http://www.neowin.net/news/ios-users-spend-more-money-online-than-android-users-study-reveals" target="_self">well-documented</a> that iOS users spend more money on apps in app stores as well <a title="iOS Edges Out Android" href="http://appleinsider.com/articles/14/01/21/apples-ios-edges-out-android-in-mobile-ad-traffic-dominates-in-revenue" target="_blank">view more ads</a>. But you can still make money selling apps to Android users, right? Maybe. The cost of developing apps for Android is 2x to 3x higher than iOS for a multitude of reasons not the least of which are the number of devices and OS versions upon which you must test. So from a commercial software perspective, it could easily be argued that there is more profit in developing for iOS than for Android. There are of course exceptions to this rule. For example, if your app&#8217;s success depends on social networking (like WhatsApp, Instagram, Snapchat), then you really need to support all the popular platforms. However, that&#8217;s a tiny fraction of applications. If profit is your motive, you might want to consider ignoring Android entirely, at least for now.</p>
<p>But while commercial apps are the most visible, they are not the only kind of apps created for mobile devices. More and more apps are being created for internal use inside companies which can make the platform decision far more challenging. In this day of BYOD (Bring Your Own Device), the mobile landscape where you work is likely to be far different from the profit-centered commercial landscape. Your company may need to support multiple Android devices as well as various iOS releases to help your employees get their jobs done while on the move.</p>
<p><span style="line-height: 1.62;">This is where web-mobile apps become a great solution. Web-mobile apps can run on just about any reasonably new mobile device and are easy to deploy to the user since they are accessed via the browser. Most workplace apps connect to some kind of server (usually a database) anyway so requiring connectivity is usually not a problem. However, developing web and web-mobile apps with traditional tools (HTML, JavaScript, CSS, PHP and AJAX) can be extremely time-consuming even for those that have the word &#8220;developer&#8221; or &#8220;engineer&#8221; in their job title. <a title="Xojo" href="http://www.xojo.com" target="_blank">Xojo&#8217;s</a> web framework abstracts you from all these details so you can drag and drop to create your interface and focus your code on what makes your application unique. This makes developing apps at least 5x faster than with the traditional tools, plus you can get up to speed a lot faster. If you don&#8217;t have lots of free time to learn 5 different technologies, Xojo is a tool you need to seriously consider.</span></p>
<p><span style="line-height: 1.62;">A common downside to web and web-mobile apps is the difficulty of deploying the app. I&#8217;m not talking about the difficult of deploying to the end users- that&#8217;s actually really easy since they can just go to a URL in their mobile browser. But web apps run on a server and that usually comes with a whole new set of challenges. You need to learn how to set-up and configure a web server. And you need to consider security, which can be more challenging and time-consuming than developing the app itself. We have all seen the headlines about companies like Sony, Target and Adobe being hacked. And those are just the ones that make the headlines, lots of small companies get hacked everyday. So server security is extremely important though often ignored because of the complexity involved.<br />
</span></p>
<p><span style="line-height: 1.62;"><a title="Xojo Cloud" href="http://www.xojo.com/cloud/index.php" target="_blank">Xojo Cloud</a> solves this problem for you. First, because Xojo makes the development tool <em>and</em> the deployment platform we have tightly integrated the two to provide zero configuration and one-click deployment. Secondly, because all Xojo Cloud servers are identical, they provide industrial-strength security that would otherwise be prohibitively expensive for individual businesses.</span></p>
<p><span style="line-height: 1.62;">If you are creating commercial mobile software, you are probably better off focusing your effort on iOS rather than Android. However, if you are creating apps for internal use at your company, web-mobile apps are likely the way to go. Xojo (which supports the desktop as well) and Xojo Cloud provide a great solution. If you need to develop native iOS apps, start learning Xojo now because support for iOS is coming later this year. (<a href="http://www.xojo.com/blog/en/2015/02/deploying-your-ios-apps.php">Xojo iOS is here!</a>)<br />
</span></p>
<p>Are you planning on building commercial apps or apps for internal use at your company? Add a coment and let me know.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.xojo.com/2014/04/24/mobile-or-web-mobile-developing-for-ios-android-or-both/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
