<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Application-Library-Engineering-Group - Medium]]></title>
        <description><![CDATA[As open source comumunity, we share more information on latest trends in HMOS, Android and other technologies. - Medium]]></description>
        <link>https://medium.com/application-library-engineering-group?source=rss----36c8c98270b8---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Application-Library-Engineering-Group - Medium</title>
            <link>https://medium.com/application-library-engineering-group?source=rss----36c8c98270b8---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 03:34:36 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/application-library-engineering-group" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[HarmonyOS for Android Developers — Part 2]]></title>
            <link>https://medium.com/application-library-engineering-group/harmonyos-for-android-developers-part-2-93070ca6fe8?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/93070ca6fe8</guid>
            <category><![CDATA[harmony-os]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[android]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Tue, 24 Aug 2021 07:13:56 GMT</pubDate>
            <atom:updated>2021-08-24T03:13:53.613Z</atom:updated>
            <content:encoded><![CDATA[<h3>HarmonyOS for Android Developers — Part 2</h3><p>My previous article about HarmonyOS and the importance of it can be checked here, I would suggest you go through this article before starting with this.</p><p><a href="https://applibgroup.medium.com/harmonyos-for-android-developers-part-1-5d80072d0252">HarmonyOS for Android Developers — Part 1</a></p><h3>What does HarmonyOS have to offer for Android Developers?</h3><p>· Devices use it only if it is necessary, like a modular operating system.</p><p>· The modularized decoupled HarmonyOS can be embedded in various devices according to the requirement.</p><p>· Adaptable to a wide variety of devices.</p><p>· A distributed app can be developed via the distributed capability kit in the same way a standalone app is created.</p><p>· Integrated development environment for multi-device development.</p><p>· Multiple languages will be supported by the compiler for unified development.</p><p>Ideally, all the devices connected to a user should be able to benefit from the connectivity capabilities of the hardware, regardless of where the software is installed.</p><p>HarmonyOS helps us to accomplish this goal by creating a fair ecosystem that is capable of full connectivity in any scenario and allows us to achieve a smart ecosystem.</p><h3><strong>Below list down some of the comparison between HarmonyOS and Android</strong></h3><p><strong>What is the equivalent of a AndroidMainifest.xml file?</strong></p><p>In Android, an AndroidMainifest.xml file contains information of your package, including components of the application such as activities, services, broadcast receivers, content providers etc. It also includes information related to project such as App name, App Icon, App theme, Permission, app version, sdk version, etc.</p><pre><strong>&lt;manifest</strong></pre><pre>xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;<br>package=&quot;com.org.example&quot;<br>android:versionCode=&quot;1&quot;<br>android:versionName=&quot;1.0&quot; <strong>&gt;</strong></pre><pre><strong>&lt;uses-sdk<br></strong>android:minSdkVersion=&quot;8&quot;<br>android:targetSdkVersion=&quot;15&quot; <strong>/&gt;</strong></pre><pre><strong>&lt;application<br></strong>android:icon=&quot;@drawable/ic_launcher&quot;<br>android:label=&quot;@string/app_name&quot;<br>android:theme=&quot;@style/AppTheme&quot; <strong>&gt;</strong></pre><pre><strong>&lt;activity<br></strong>android:name=&quot;.MainActivity&quot;<br>android:label=&quot;@string/title_activity_main&quot; <strong>&gt;</strong></pre><pre><strong>&lt;intent-filter&gt;<br>&lt;action</strong> android:name=&quot;android.intent.action.MAIN&quot; <strong>/&gt;<br>&lt;category</strong> android:name=&quot;android.intent.category.LAUNCHER&quot; <strong>/&gt;&lt;/intent-filter&gt;</strong></pre><pre><strong>&lt;/activity&gt;<br>&lt;/application&gt;<br>&lt;/manifest&gt;</strong></pre><p>For same in HarmonyOS we have <strong>config.json</strong> file which contains information of your app, api version, module, device configuration, etc. also include information related to project such as App name, App Icon, Permission, etc. for more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/basic-config-file-elements-0000000000034463">check here</a>.</p><pre>{<br>   <strong>&quot;app&quot;</strong>: {<br>     <strong>&quot;bundleName&quot;</strong>: <strong>&quot;com.org.example&quot;</strong>,<br>     <strong>&quot;vendor&quot;</strong>: <strong>&quot;vendorName&quot;</strong>,<br>     <strong>&quot;version&quot;</strong>: {<br>       <strong>&quot;code&quot;</strong>: 1000000,<br>       <strong>&quot;name&quot;</strong>: <strong>&quot;1.0.0&quot;<br>     </strong>},<br>     <strong>&quot;apiVersion&quot;</strong>: {<br>       <strong>&quot;compatible&quot;</strong>: 5,<br>       <strong>&quot;target&quot;</strong>: 5,<br>       <strong>&quot;releaseType&quot;</strong>: <strong>&quot;Release&quot;<br>     </strong>}<br>   },<br>   <strong>&quot;deviceConfig&quot;</strong>: {},<br>   <strong>&quot;module&quot;</strong>: {<br>     <strong>&quot;package&quot;</strong>: <strong>&quot;com.org.example&quot;</strong>,<br>     <strong>&quot;name&quot;</strong>: <strong>&quot;.MyApplication&quot;</strong>,<br>     <strong>&quot;reqPermissions&quot;</strong>: [<br>       {<br>         <strong>&quot;name&quot;</strong>: <strong>&quot;ohos.permission.VIBRATE&quot;</strong>,<br>         <strong>&quot;reason&quot;</strong>: <strong>&quot;vibration&quot;</strong>,<br>         <strong>&quot;usedScene&quot;</strong>: {<br>           <strong>&quot;ability&quot;</strong>: [<br>             <strong>&quot;.MainAbility&quot;<br>           </strong>],<br>           <strong>&quot;when&quot;</strong>: <strong>&quot;inuse&quot;<br>         </strong>}<br>       }<br>     ],<br>     <strong>&quot;deviceType&quot;</strong>: [<br>       <strong>&quot;phone&quot;<br>     </strong>],<br>     <strong>&quot;abilities&quot;</strong>: [<br>       {<br>         <strong>&quot;skills&quot;</strong>: [<br>           {<br>             <strong>&quot;entities&quot;</strong>: [<br>               <strong>&quot;entity.system.home&quot;<br>             </strong>],<br>             <strong>&quot;actions&quot;</strong>: [<br>               <strong>&quot;action.system.home&quot;<br>             </strong>]<br>           }<br>         ],<br>         <strong>&quot;orientation&quot;</strong>: <strong>&quot;unspecified&quot;</strong>,<br>         <strong>&quot;name&quot;</strong>: <strong>&quot;com.org.example.MainAbility&quot;</strong>,<br>         <strong>&quot;icon&quot;</strong>: <strong>&quot;$media:icon&quot;</strong>,<br>         <strong>&quot;description&quot;</strong>: <strong>&quot;$string:mainability_description&quot;</strong>,<br>         <strong>&quot;label&quot;</strong>: <strong>&quot;$string:app_name&quot;</strong>,<br>         <strong>&quot;type&quot;</strong>: <strong>&quot;page&quot;</strong>,<br>         <strong>&quot;launchType&quot;</strong>: <strong>&quot;standard&quot;<br>       </strong>}<br>     ]<br>   }<br> }</pre><p>As you have seen, both the files are containing all the details needed by the OS system about the application. But you have seen one major difference between this two files that is AndroidManifest.xml is in xml format and config.json is in json format. So below is some comparison between important elements</p><p><strong>1.</strong> <strong>Versions details</strong></p><p>In AndroidManifest.xml file, you have to put version details in &lt;manifest&gt; tag and sdk version put in &lt;uses-sdk&gt; tag.</p><pre>&lt;manifest <br> android:versionCode=&quot;1&quot;<br> android:versionName=&quot;1.0&quot; &gt;<br> <br> &lt;uses-sdk<br>     android:minSdkVersion=&quot;16&quot;<br>     android:targetSdkVersion=&quot;30&quot; /&gt;<br> &lt;/manifest&gt;</pre><p>In config.json file, you have to put version details in app object.</p><pre>&quot;app&quot;: {<br>   &quot;version&quot;: {<br>     &quot;code&quot;: 101,<br>     &quot;name&quot;: &quot;1.0.0&quot;<br>   },<br>   &quot;apiVersion&quot;: {<br>     &quot;compatible&quot;: 5,<br>     &quot;target&quot;: 5,<br>     &quot;releaseType&quot;: &quot;Release&quot;<br>   }<br> }</pre><p><strong>2.</strong> <strong>Package</strong></p><p>In AndroidManifest.xml file, you have to put package name in root tag that is &lt;manifest&gt; tag.</p><pre>&lt;manifest<br> package=&quot;com.org.example&quot;&gt;<br>     ...<br> &lt;/manifest&gt;</pre><p>In config.json file, you have to put package name in module object.</p><pre>&quot;module&quot;: {<br>     &quot;package&quot;: &quot;com.orzangleli.radarview</pre><pre>}</pre><p><strong>3.</strong> <strong>Application details</strong></p><p>In AndroidManifest.xml file, you have to put application details under &lt; application&gt; tag.</p><pre>&lt;application<br>     android:name=&quot;.MainApplication&quot;<br>     android:allowBackup=&quot;true&quot;<br>     android:icon=&quot;@drawable/logo&quot;<br>     android:label=&quot;@string/app_name&quot;<br>     android:supportsRtl=&quot;true&quot;<br>     android:theme=&quot;@style/AppTheme&quot;&gt;<br> …</pre><pre>…<br> &lt;/application&gt;</pre><p>In config.json file, you have to put application details in multiple object deviceConfig and module.</p><pre>&quot;deviceConfig&quot;: {<br>   &quot;default&quot;: {<br>     &quot;supportBackup&quot;: false,<br>     &quot;network&quot;: {<br>       &quot;cleartextTraffic&quot;: true,<br>       &quot;securityConfig&quot;: {<br>         &quot;domainSettings&quot;: {<br>           &quot;cleartextPermitted&quot;: true,<br>           &quot;domains&quot;: [<br>             {<br>               &quot;subdomains&quot;: true,<br>               &quot;name&quot;: &quot;example.ohos.com&quot;<br>             }<br>           ]<br>         }<br>       }<br>     }<br>   }<br> },<br> &quot;module&quot;: {<br>   &quot;package&quot;: &quot;com.orzangleli.radarview&quot;,<br>   &quot;name&quot;: &quot;.MyApplication&quot;,<br>   &quot;deviceType&quot;: [<br>     &quot;phone&quot;<br>   ],<br>   &quot;colorMode&quot;: &quot;light&quot;<br> }</pre><p>4. <strong>Activities and Services</strong></p><p>In AndroidManifest.xml file, you have to register Activities and Services under &lt;application&gt; tag with &lt;activity&gt; and &lt;service&gt; tag respective.</p><pre>&lt;application<br>     android:icon=&quot;@drawable/app_icon&quot;<br>     android:label=&quot;@string/app_name&quot; &gt;<br>     &lt;activity<br>         android:label=&quot;@string/activity_title&quot;<br>         android:name=&quot;.MainActivity&quot; &gt;<br>         &lt;intent-filter &gt;<br>             &lt;action          android:name=&quot;android.intent.action.MAIN&quot; /&gt;<br> <br>             &lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;<br>         &lt;/intent-filter&gt;<br>     &lt;/activity&gt;</pre><pre>&lt;service <br>         android:name=&quot;.MyService&quot;<br>         android:exported=&quot;true&quot;<br>         /&gt;<br> &lt;/application&gt;</pre><p>In HarmonyOS, the equivalent of Activity and Service is Ability. So in config.json file you have to register all the abilities under module object as <strong>abilities </strong>json array. And you can set type(i.e. Page, Service) of ability using <strong>type</strong> attribute.</p><pre>&quot;module&quot;: {<br>   …<br>   &quot;abilities&quot;: [<br>     {<br>       &quot;name&quot;: &quot;.MainAbility&quot;,<br>       &quot;description&quot;: &quot;himusic main ability&quot;,<br>       &quot;icon&quot;: &quot;$media:ic_launcher&quot;,<br>       &quot;label&quot;: &quot;HiMusic&quot;,<br>       &quot;launchType&quot;: &quot;standard&quot;,<br>       &quot;orientation&quot;: &quot;unspecified&quot;,<br>       &quot;permissions&quot;: [<br>       ],<br>       &quot;visible&quot;: true,<br>       &quot;skills&quot;: [<br>         {<br>           &quot;actions&quot;: [<br>             &quot;action.system.home&quot;<br>           ],<br>           &quot;entities&quot;: [<br>             &quot;entity.system.home&quot;<br>           ]<br>         }<br>       ],<br>       &quot;type&quot;: &quot;page&quot;<br>     },<br>     {<br>       &quot;name&quot;: &quot;.MyService&quot;,<br>       &quot;description&quot;: &quot;himusic play ability&quot;,<br>       &quot;icon&quot;: &quot;$media:ic_launcher&quot;,<br>       &quot;label&quot;: &quot;My Service&quot;,<br>       &quot;launchType&quot;: &quot;standard&quot;,<br>       &quot;orientation&quot;: &quot;unspecified&quot;,<br>       &quot;visible&quot;: false,<br>       &quot;skills&quot;: [<br>         {<br>           &quot;actions&quot;: [<br>             &quot;action.play.music&quot;,<br>             &quot;action.stop.music&quot;<br>           ],<br>           &quot;entities&quot;: [<br>             &quot;entity.audio&quot;<br>           ]<br>         }<br>       ],<br>       &quot;type&quot;: &quot;service&quot;<br>     }<br>   ] <br> }</pre><p>5. <strong>Permission</strong></p><p>In AndroidManifest.xml file, you have add permission under &lt; manifest &gt; tag using &lt; uses-permission&gt; tag.</p><pre>&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;</pre><pre>package=&quot;com.org.example&quot;&gt;<br> <br>     &lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;/&gt;<br>     &lt;uses-permission android:name=&quot;android.permission.WRITE_EXTERNAL_STORAGE&quot;/&gt;<br>     &lt;uses-permission android:name=&quot;android.permission.READ_EXTERNAL_STORAGE&quot;/&gt;<br> <br> …<br> <br> &lt;/manifest&gt;</pre><p>In config.json file, you have to add permission under module object as <strong>reqPermissions </strong>json array.</p><pre>&quot;module&quot;: {<br>   &quot;package&quot;: &quot;com.org.example&quot;,<br>   &quot;name&quot;: &quot;.MyApplication&quot;,<br>   &quot;reqPermissions&quot;: [<br>     {<br>       &quot;name&quot;: &quot;ohos.permission.READ_MEDIA&quot;,<br>       &quot;reason&quot;: &quot;reading files&quot;,<br>       &quot;usedScene&quot;: {<br>         &quot;ability&quot;: [<br>           &quot;.MainAbility&quot;<br>         ],<br>         &quot;when&quot;: &quot;always&quot;<br>       }<br>     },<br>     {<br>       &quot;name&quot;: &quot;ohos.permission.WRITE_MEDIA&quot;,<br>       &quot;reason&quot;: &quot;writing files&quot;,<br>       &quot;usedScene&quot;: {<br>         &quot;ability&quot;: [<br>           &quot;.MainAbility&quot;<br>         ],<br>         &quot;when&quot;: &quot;always&quot;<br>       }<br>     },<br>     {<br>       &quot;name&quot;: &quot;ohos.permission.INTERNET&quot;<br>     }<br>   ] <br> }</pre><p><strong>What is equivalent of Activities and it’s lifecycle?</strong></p><p>In Android, an Activity represents a single focused screen with a user interface the user can do. In HarmonyOS you can used <strong>PageAbility</strong> for provide user interface. A Page ability may contain one ability slice or multiple ability slices that provide highly relevant capabilities.</p><pre><strong>public class </strong>MainAbility <strong>extends </strong>Ability {<br><br>    @Override<br><br>    <strong>public void </strong>onStart(Intent intent) {<br><br>        <strong>super</strong>.onStart(intent);<br><br>        <strong>super</strong>.setMainRoute(MainAbilitySlice.<strong>class</strong>.getName());<br><br>    }<br><br>}</pre><p>In Android, you can override methods from the Activity to capture lifecycle methods for the activity itself. In HarmonyOS, You can override methods from the Ability to capture lifecycle methods for the page ability. for more details about Page Ability and it’s lifecycle please <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ability-page-concept-0000000000033573">check here</a>.</p><p>Below image shows transitions between different lifecycle states of a Page ability and the callbacks to be invoked during the transitions.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/488/1*iHjq-Fvjh0PfjcSvQhH73w.png" /><figcaption>Transitions between different states in a Page ability’s lifecycle</figcaption></figure><p><strong>What is equivalent of Fragment and it’s lifecycle?</strong></p><p>In Android, A Fragment is a piece of an activity which represents a behavior or a portion of user interface. Fragments are a way to modularize your code, compose sophisticated user interfaces for larger screens, and help scale your application UI. In HarmonyOS you have <strong>Fraction</strong>. A Fraction can be placed in a container (an Ability) as a part of its UI and cannot be used independently. for more details about Fraction and it’s lifecycle please <a href="https://developer.harmonyos.com/en/docs/documentation/doc-references/fraction-0000001059908801"><strong>check here</strong></a>.</p><p>In below example you can see extended Fraction class with all its lifecycle method overrided.</p><pre><strong>public class </strong>MyFraction <strong>extends </strong>Fraction {<br><br>    @Override<br>    <strong>protected </strong>Component onComponentAttached(LayoutScatter scatter, ComponentContainer container, Intent intent) {<br>        <strong>return super</strong>.onComponentAttached(scatter, container, intent);<br>    }<br><br>    @Override<br>    <strong>protected void </strong>onStart(Intent intent) {<br>        <strong>super</strong>.onStart(intent);<br>    }<br><br>    @Override<br>    <strong>protected void </strong>onActive() {<br>        <strong>super</strong>.onActive();<br>    }<br><br>    @Override<br>    <strong>protected void </strong>onInactive() {<br>        <strong>super</strong>.onInactive();<br>    }<br><br>    @Override<br>    <strong>protected void </strong>onForeground(Intent intent) {<br>        <strong>super</strong>.onForeground(intent);<br>    }<br><br>    @Override<br>    <strong>protected void </strong>onBackground() {<br>        <strong>super</strong>.onBackground();<br>    }<br><br>    @Override<br>    <strong>protected void </strong>onStop() {<br>        <strong>super</strong>.onStop();<br>    }<br><br>    @Override<br>    <strong>protected void </strong>onComponentDetach() {<br>        <strong>super</strong>.onComponentDetach();<br>    }<br>}</pre><p><strong>What is equivalent of Services and it’s lifecycle?</strong></p><p>In Android, A service is a component that runs in the background to perform long-running operations such as playing music, handle network transactions, interacting content providers etc. It doesn’t have any UI (user interface). In HarmonyOS you have <strong>Service Ability</strong>. A Service ability is used to run tasks in the background, such as playing music or downloading files. It does not provide a UI for user interaction. for more details about Service Ability and it’s lifecycle please <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ability-service-concept-0000000000044457"><strong>check here</strong></a>.</p><p>You can create service ability as follow.</p><pre><strong>public class </strong>ServiceAbility <strong>extends </strong>Ability {<br><br>    @Override<br>    <strong>public void </strong>onStart(Intent intent) {<br>        <strong>super</strong>.onStart(intent);<br>    }<br><br>    @Override<br>    <strong>public void </strong>onCommand(Intent intent, <strong>boolean </strong>restart, <strong>int </strong>startId) {<br>        <strong>super</strong>.onCommand(intent, restart, startId);<br>    }<br><br>    @Override<br>    <strong>public </strong>IRemoteObject onConnect(Intent intent) {<br>        <strong>return super</strong>.onConnect(intent);<br>    }<br><br>    @Override<br>    <strong>public void </strong>onDisconnect(Intent intent) {<br>        <strong>super</strong>.onDisconnect(intent);<br>    }<br><br>    @Override<br>    <strong>public void </strong>onStop() {<br>        <strong>super</strong>.onStop();<br>    }<br><br>}</pre><p>Below image show Transitions between different states in a Service ability’s lifecycle.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/508/1*hRa1NEg8j60rWpDnJgCSHg.png" /><figcaption>Transitions between different states in a Service ability’s lifecycle</figcaption></figure><p><strong>What is the equivalent of a LinearLayout?</strong></p><p>In Android, a LinearLayout is used to lay your widgets out linearly — either horizontally or vertically. In HarmonyOS you have <strong>DirectionalLayout</strong>. Directional layout is used to arrange a group of components horizontally or vertically. For more details please <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-layout-directionallayout-0000001050769565"><strong>check here</strong></a>.</p><p>In Android</p><pre>&lt;LinearLayout<br>    android:layout_width=&quot;match_parent&quot;<br>    android:layout_height=&quot;wrap_content&quot;<br>    android:orientation=&quot;vertical&quot;&gt;</pre><p>In HarmonyOS</p><pre>&lt;<strong>DirectionalLayout<br>    ohos:height=&quot;match_content&quot;<br>    ohos:width=&quot;match_parent&quot;<br>    ohos:orientation=&quot;vertical&quot;</strong>&gt;</pre><p><strong>What is the equivalent of a RelativeLayout?</strong></p><p>In Android, A RelativeLayout lays your widgets out relative to each other. In HarmonyOS you have <strong>DependentLayout</strong>. DependentLayout provides more layout modes. You can specify the position of each component relative to other components at the same level or the position relative to the parent component. For more details please <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-layout-dependentlayout-0000001050729536"><strong>check here</strong></a>.</p><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;</pre><pre>&lt;DependentLayout<br>xmlns:ohos=&quot;http://schemas.huawei.com/res/ohos&quot;<br>ohos:width=&quot;match_content&quot;<br>ohos:height=&quot;match_content&quot;<br>ohos:background_element=&quot;$graphic:color_light_gray_element&quot;&gt;</pre><pre>&lt;Text<br>ohos:id=&quot;$+id:text1&quot;<br>ohos:width=&quot;match_content&quot;<br>ohos:height=&quot;match_content&quot;<br>ohos:left_margin=&quot;15vp&quot;<br>ohos:top_margin=&quot;15vp&quot;<br>ohos:bottom_margin=&quot;15vp&quot;<br>ohos:text=&quot;text1&quot;<br>ohos:text_size=&quot;20fp&quot;<br>ohos:background_element=&quot;$graphic:color_cyan_element&quot;/&gt;</pre><pre>&lt;Text<br>ohos:id=&quot;$+id:text2&quot;<br>ohos:width=&quot;match_content&quot;<br>ohos:height=&quot;match_content&quot;<br>ohos:left_margin=&quot;15vp&quot;<br>ohos:top_margin=&quot;15vp&quot;<br>ohos:right_margin=&quot;15vp&quot;<br>ohos:bottom_margin=&quot;15vp&quot;<br>ohos:text=&quot;end_of text1&quot;<br>ohos:text_size=&quot;20fp&quot;<br>ohos:background_element=&quot;$graphic:color_cyan_element&quot;<br>ohos:end_of=&quot;$id:text1&quot;/&gt;</pre><pre>&lt;/DependentLayout&gt;</pre><p><strong>What is the equivalent of a View in HarmonyOS?</strong></p><p>In Android, the View is the foundation of everything that shows up on the screen. View is the base class for widgets, which are used to create interactive UI components (buttons, text fields, etc.). In HarmonyOS you have <strong>Component</strong> class. Component occupies a rectangular area on the screen and is responsible for drawing and event processing in this area. For more details about Component please <a href="https://developer.harmonyos.com/en/docs/documentation/doc-references/component-0000001054678683"><strong>check here</strong></a>.</p><p>Below image showing View hierarchy (Android).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/556/1*6Hx9yXlDiAetYcavPT4gAg.png" /><figcaption>View hierarchy (Android)</figcaption></figure><p>Below image showing Component hierarchy (HMOS).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/497/1*GTw9ru1NkV_FszaVYhe63g.png" /><figcaption>Component and ComponentContainer hierarchy (HarmonyOS)</figcaption></figure><p><strong>What is the alternative of a basic UI components (i.e., TextView, EditText, ect) in HarmonyOS?</strong></p><p>In Android, there are some pre-define widgets available for creating user interface such as TextView, EditText, Button, etc. In HarmonyOS also there are some pre-define component available in HMOS sdk.</p><p>Below is the list of alternative for android widgets.</p><p><strong>1.</strong> <strong>TextView -&gt; Text</strong></p><p>In Android, TextView is a UI Component that displays the text to the user on their Display Screen. In HarmonyOS you can use <strong>Text</strong>. For more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-component-text-0000001050729534"><strong>check here</strong></a>.</p><pre>&lt;<strong>Text<br>     ohos:id=&quot;$+id:text_welcome&quot;<br>     ohos:height=&quot;match_content&quot;<br>     ohos:width=&quot;match_content&quot;<br>     ohos:layout_alignment=&quot;horizontal_center&quot;<br>     ohos:text=&quot;welcome&quot;<br>     ohos:text_size=&quot;26fp&quot;<br>     </strong>/&gt;</pre><p><strong>2.</strong> <strong>EditText -&gt; TextField</strong></p><p>In Android, EditText is a user interface control that allows the users to enter some text. In HarmonyOS you can use <strong>TextField</strong>. For more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-component-textfield-0000001061125582"><strong>check here</strong></a>.</p><pre>&lt;<strong>TextField<br>    ohos:id=&quot;$+id:input_email&quot;<br>    ohos:height=&quot;match_content&quot;<br>    ohos:width=&quot;match_parent&quot;<br>    ohos:hint=&quot;Enter Email&quot;<br>    ohos:top_margin=&quot;8vp&quot;<br>    ohos:text_size=&quot;16fp&quot;<br>    ohos:padding=&quot;16vp&quot;<br>    ohos:background_element=&quot;$graphic:background_text_field&quot;<br>    ohos:text_input_type=&quot;pattern_text&quot;<br>    </strong>/&gt;</pre><p><strong>3.</strong> <strong>Button -&gt; Button</strong></p><p>In Android, Button is a UI that is used to perform some action as soon as the user clicks on it. In HarmonyOS also have <strong>Button</strong>. For more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-component-button-0000001051009585"><strong>check here</strong></a>.</p><pre>&lt;<strong>Button<br>    ohos:id=&quot;$+id:btn_login&quot;<br>    ohos:height=&quot;match_content&quot;<br>    ohos:width=&quot;match_content&quot;<br>    ohos:text=&quot;Login&quot;<br>    ohos:layout_alignment=&quot;horizontal_center&quot;<br>    ohos:text_size=&quot;18fp&quot;  <br>    ohos:start_padding=&quot;20vp&quot;<br>    ohos:end_padding=&quot;20vp&quot;<br>    ohos:top_padding=&quot;16vp&quot;<br>    ohos:bottom_padding=&quot;16vp&quot;<br>    </strong>/&gt;</pre><p><strong>4.</strong> <strong>ImageView -&gt; Image</strong></p><p>In Android, ImageView is a view where you can show image. In HarmonyOS you have <strong>Image</strong>. For more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-component-image-0000001058976860"><strong>check here</strong></a>.</p><pre>&lt;<strong>Image<br>    ohos:id=&quot;$+id:icon&quot;<br>    ohos:height=&quot;200vp&quot;<br>    ohos:width=&quot;200vp&quot;<br>    ohos:image_src=&quot;$media:profile_person&quot;<br>    ohos:scale_mode=&quot;clip_center&quot;<br>    </strong>/&gt;</pre><p>5<strong>.</strong> <strong>Seekbar -&gt; Slider</strong></p><p>In Android, Seekbar is an extended Progress bar. A Seekbar comes with a pointer that is draggable throughout the bar either in left or right. This pointer helps to set the progress as well. This helps the user to choose a particular range of values. In HarmonyOS you have <strong>Slider</strong>. For more details <a href="https://developer.harmonyos.com/en/docs/design/des-guides/slider-0000001053339774"><strong>check here</strong></a>.</p><pre>&lt;<strong>Slider<br>    ohos:id=&quot;$+id:slider&quot;<br>    ohos:width=&quot;match_content&quot;<br>    ohos:height=&quot;40vp&quot;<br>    ohos:max=&quot;4&quot;<br>    ohos:progress=&quot;4&quot; </strong>/&gt;</pre><p><strong>6.</strong> <strong>CheckBox -&gt; CheckBox</strong></p><p>A CheckBox is the UI control that has two states that are either checked or unchecked. If we have a group of CheckBox, we can select as many as we want, unlike RadioGroup. In HarmonyOS also have <strong>CheckBox</strong>. For more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-component-checkbox-0000001060487804"><strong>check here</strong></a>.</p><pre>&lt;<strong>Checkbox<br>    ohos:height=&quot;match_content&quot;<br>    ohos:width=&quot;match_content&quot;<br>    ohos:text=&quot;Agree&quot;<br>    </strong>/&gt;</pre><p>7. <strong>Switch -&gt; Switch</strong></p><p>In Android, a switch is a two-state UI element that holds either ON or OFF state. ON generally means Yes and OFF means No. By default, a switch is in the OFF state. A user can change its state many times. In HarmonyOS also have <strong>Switch</strong>. For more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-component-switch-0000001060806006"><strong>check here</strong></a>.</p><pre>&lt;<strong>Switch<br>    ohos:height=&quot;match_content&quot;<br>    ohos:width=&quot;match_content&quot;<br>    ohos:text=&quot;Agree&quot;<br>    ohos:enabled=&quot;false&quot;<br>    </strong>/&gt;</pre><p>8. <strong>Progressbar -&gt; Progressbar, RoundProgressbar</strong></p><p>In Android, we have a progress bar that shows the progress of some action that is happening like pasting a file to some location. A progress bar can be in two modes: a) Determinate Mode, b) Indeterminate Mode.</p><p>In HarmonyOS, you have <strong>Progressbar</strong> and <strong>RoundProgressbar</strong>. For more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-component-progressbar-0000001060379891"><strong>check here</strong></a>.</p><pre>&lt;<strong>ProgressBar<br>    ohos:id=&quot;$+id:progressbar&quot;<br>    ohos:progress_width=&quot;10vp&quot;<br>    ohos:height=&quot;60vp&quot;<br>    ohos:width=&quot;600vp&quot;<br>    ohos:max=&quot;100&quot;<br>    ohos:min=&quot;0&quot;<br>    ohos:progress=&quot;60&quot;</strong>/&gt;</pre><pre>&lt;<strong>RoundProgressBar<br>     ohos:id=&quot;$+id:round_progress_bar&quot;<br>     ohos:height=&quot;200vp&quot;<br>     ohos:width=&quot;200vp&quot;<br>     ohos:progress_width=&quot;10vp&quot;<br>     ohos:progress=&quot;20&quot;<br>     ohos:progress_color=&quot;#47CC47&quot;</strong>/&gt;</pre><p><strong>9.</strong> <strong>Toast -&gt; ToastDialog</strong></p><p>In Andorid, Toast can be used to display information for the short period of time. A toast contains message to be displayed quickly and disappears after some time. In HarmonyOS you have <strong>ToastDialog</strong>. For more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-component-toastdialog-0000001060125963"><strong>check here</strong></a>.</p><pre><strong>new </strong>ToastDialog(getContext())<br>        .setText(<strong>&quot;This is a ToastDialog displayed in the middle&quot;</strong>)<br>        .setAlignment(LayoutAlignment.<strong><em>CENTER</em></strong>)<br>        .show();</pre><p><strong>What is the equivalent of a Drawables in HarmonyOS?</strong></p><p>In Android, A drawable resource is a general concept for a graphic that can be drawn to the screen and which you can retrieve with APIs such as getDrawable(int) or apply to another XML resource with attributes such as android:drawable and android:icon. There are several different types of drawables: such as Shape Drawable, Vector Drawable, Scale Drawable, ect.</p><p>In HarmonyOS you have <strong>Element</strong>. Element an abstract class of something that can be drawn. When static images need to be displayed in an application, this class and its child classes can be used to draw shapes and images. There are several subclasses which is used as per the type of Element such as ShapeElement, VectorElement, PixelMapElement. For more details <a href="https://developer.harmonyos.com/en/docs/documentation/doc-references/element-0000001054358705"><strong>check here</strong></a>.</p><p><strong>How do I create notification in HarmonyOS?</strong></p><p>In Android, A notification is a message you can display to the user outside of your application. you need to set the notification’s content and channel using a NotificationCompat.Builder object. Also it is compulsory from Android Oreo to create notification channel. And for showing notification you need NotificationManager object.</p><p>Same in HarmonyOS also we have notification for displaying message outside of application. To create notification in HarmonyOS you need NotificationRequest object to set notification’s content, slot(channel) and other details. In HarmonyOS equivalent of NotificationChannel is NotificationSlot. And with the help of NotificationHelper class you can publish your notification. For more details about notification <a href="https://developer.harmonyos.com/en/docs/documentation/doc-references/overview-0000001054358819">check here</a>.</p><pre><em>//Create notification slot.<br> </em>NotificationSlot notificationSlot = new NotificationSlot(&quot;notification_001&quot;, &quot;low priority&quot;, NotificationSlot.<em>LEVEL_LOW</em>);<br> notificationSlot.setEnableVibration(true);<br> notificationSlot.setEnableLight(true);<br> try {<br>     NotificationHelper.<em>addNotificationSlot</em>(notificationSlot);<br> } catch (RemoteException e) {<br>     e.printStackTrace();<br> }<br> <br> <em>//Create notification.<br> </em>NotificationRequest notificationRequest = new NotificationRequest();<br> NotificationRequest.NotificationNormalContent content = new NotificationRequest.NotificationNormalContent();<br> content.setTitle(&quot;Notification&quot;);<br> content.setText(&quot;Hi there&quot;);<br> NotificationRequest.NotificationContent notificationContent = new NotificationRequest.NotificationContent(content);<br> notificationRequest.setTapDismissed(true);<br> notificationRequest.setSlotId(&quot;notification_001&quot;);<br> notificationRequest.setContent(notificationContent);<br> notificationRequest.setIntentAgent(getLaunchAction());<br> try {<br>     NotificationHelper.<em>publishNotification</em>(notificationRequest);<br> } catch (RemoteException e) {<br>     e.printStackTrace();<br> }</pre><pre><em>// Create Intent agent.<br> </em>private IntentAgent getLaunchAction() {<br>     Operation operation = new Intent.OperationBuilder()<br>             .withDeviceId(&quot;&quot;)<br>             .withBundleName(this.getBundleName())<br>             .withAbilityName(&quot;com.huawei.notification.SecondAbility&quot;)<br>             .build();<br>     Intent intent = new Intent();<br>     intent.setOperation(operation);<br>     List&lt;Intent&gt; intentList = new ArrayList&lt;&gt;();<br>     intentList.add(intent);<br>     List&lt;IntentAgentConstant.Flags&gt; flags = new ArrayList&lt;&gt;();<br>     flags.add(IntentAgentConstant.Flags.<em>UPDATE_PRESENT_FLAG</em>);<br>     IntentAgentInfo paramsInfo = new IntentAgentInfo(90, IntentAgentConstant.OperationType.<em>START_ABILITY</em>, flags, intentList, null);<br>     return IntentAgentHelper.<em>getIntentAgent</em>(this, paramsInfo);<br> }</pre><p><strong>How do I Add Animation on any component in HarmonyOS?</strong></p><p>In Android, you either create animations using XML, or call the animate() method on a view. Also using ValueAnimator you have more control over animations and customize them at each step of execution.</p><p>In HarmonyOS, java sdk provides three major classes for animation: FrameAnimationElement, AnimatorValue, AnimatorProperty, and AnimatorGroup. For more details please <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/ui-java-animation-0000000000580278">check here</a>.</p><p><strong>What is the equivalent of local database(SQLite) in HarmonyOS?</strong></p><p>In Android, for managing local data of application we have SQLite database and for small amount of data we have SharedPreference where we can store the data in the key-value pairs.</p><p>In HarmonyOS, the Object Relational Mapping (ORM) database is masks operations in structured query language (SQL) in the underlying SQLite database, and provides a series of object-oriented APIs for adding, deleting, modifying, and querying entities and relational data. The ORM is an abstraction layer above the SQLite database. For more details about ORM database please <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/database-orm-overview-0000000000030070">check here</a>.</p><p>You can see the workflow of ORM database in below figure.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/1*KZXFeKZeQ-4_2pF0bvQf3Q.png" /><figcaption>How the ORM database works</figcaption></figure><p>In HarmonyOS, the equivalent of SharedPreference is Lightweight Preference. In the Lightweight Preference you can store the data in the form of key-value pairs. For more details about Lightweight Preference please <a href="https://developer.harmonyos.com/en/docs/documentation/doc-guides/database-preference-overview-0000000000030086">check here</a>.</p><p>You can see the workflow of Lightweight Preference database in below figure.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/601/1*mP93u8Ttrtz_ZCCEw5cGeg.png" /><figcaption>Working Principles of Lightweight preference database</figcaption></figure><pre>Example of Lightweight Preference database:</pre><pre>Context context = getApplicationContext(); <em>// Storage path of data files: /data/data/{PackageName}/preferences<br> </em>DatabaseHelper databaseHelper = new DatabaseHelper(context);<em>// The input parameter context is of the ohos.app.Context type.<br> </em>String fileName = &quot;test_pref&quot;; <em>// fileName indicates the file name, which cannot be empty or contain a path. The default path can be obtained by calling context.getPreferencesDir().<br> </em>Preferences preferences = databaseHelper.getPreferences(fileName);<br> <br> <em>//Read data<br> </em>int value = preferences.getInt(&quot;intKey&quot;, 0);<br> <br> <em>//Write data<br> </em>preferences.putInt(&quot;intKey&quot;, 3);<br> preferences.putString(&quot;StringKey&quot;, &quot;String value&quot;);<br> preferences.flush();</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=93070ca6fe8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/harmonyos-for-android-developers-part-2-93070ca6fe8">HarmonyOS for Android Developers — Part 2</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[HarmonyOS for Android Developers — Part 1]]></title>
            <link>https://medium.com/application-library-engineering-group/harmonyos-for-android-developers-part-1-5d80072d0252?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/5d80072d0252</guid>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[harmony-os]]></category>
            <category><![CDATA[android]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Tue, 24 Aug 2021 07:12:57 GMT</pubDate>
            <atom:updated>2021-08-24T03:08:53.400Z</atom:updated>
            <content:encoded><![CDATA[<h3>HarmonyOS for Android Developers — Part 1</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/820/0*jR4ILfCgo4BRJb3e.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/436/0*_b3Ibk-8cc2WZlu5.png" /></figure><p>Mobile devices such as smartphones and tablets run the Android operating system, which is developed under an <a href="https://gitee.com/openharmony"><strong>open-source</strong></a> and Linux-based model. The Android platform enables developers to develop on a unified platform for developing applications for mobile devices, so their applications are likely to run on different Android-powered devices.</p><p>Whereas on the other hand, a microkernel-based operating system, such as <a href="https://www.harmonyos.com/en/"><strong>HarmonyOS</strong></a>, is considered to be safer and more efficient than hybrid kernel-based operating systems.</p><p>In order to successfully connect with other platforms on its devices, Huawei developed a multi-cloud platform operating system called HarmonyOS.</p><p>In its inception, HarmonyOS has been called an embedded operating system, and is meant for industrial applications or devices that are part of the Internet of Things.</p><p>In addition to being multiplatform operating systems and created by two leading technology companies, Android and HarmonyOS share numerous similarities. In reality, these two platforms are very different.</p><p>HarmonyOS comes with Linux Kernel, Micro Kernel, and Lite OS. The OS consists of multiple kernels to select an appropriate kernel for devices of varying resource capabilities.</p><p><strong>Let us see the architectural diagrams of Android and HarmonyOS:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/535/1*Llz4MldNnXpPoF3cfQuNxw.png" /><figcaption>Android Architecture Diagram</figcaption></figure><p>Based on the architecture diagram below, Android consists of a stack of software components that are roughly divided into five sections and four layers.</p><h3>Android Libraries</h3><p>Libraries that are specifically designed for Android usage can be found in this category.</p><p>The following is a summary of some of the key Android libraries available to developers:</p><p><strong>Android. app </strong>− This is the kernel of all Android applications and provides access to the application model.</p><p><strong>Android. content </strong>− Enables applications to access, publish, and message content.</p><p><strong>Android. database</strong> − Contains an SQLite database and management classes where users can access the content.</p><p><strong>android.OpenGL</strong> − API for rendering 3D graphics using OpenGL ES.</p><p><strong>Android. os </strong>− Contains standard operating system services, such as message access, network access, and inter-process communication.</p><p><strong>Android. text</strong> − Renders text and manipulates it on a display device.</p><p><strong>Android. view </strong>− User interface components that make up an application.</p><p><strong>Android. widget </strong>— A component for designing graphical user interfaces that includes elements such as buttons, labels, list views, layout managers, and radio buttons.</p><p><strong>android.WebKit</strong> − Provides a way to incorporate web-browsing functionality into applications.</p><p>The Java-based Android runtime libraries are now covered, and we’ll be looking at the C/C++-based libraries in this layer of the Android stack.</p><h3>Android Runtime</h3><p>Located on bottom of the second layer, this is the third section in the architecture. It provides a key component called Dalvik Virtual Machine, an Android-specific Java Virtual Machine.</p><p>As part of the Android runtime, developers can also use standard Java programming languages to write Android applications.</p><h3>Application Framework</h3><p>As a result of the Application Framework layer, there are many higher-level services available to applications. These services are available to application developers.</p><p>Below is a list of key services provided by the Android framework:</p><p>Activity Manager − Manages the lifecycle and stack of activities for the application.</p><p>Content Providers − Publishes and shares data among applications.</p><p>Resource Manager − Accesses embedded non-code resources such as strings, colors, and user interface layouts.</p><p>Notifications Manager − Shows alerts and notifications when an application is running.</p><p>View System − A user interface created by extending view classes.</p><h3>Applications</h3><p>In the top layer, you’ll find all the Android apps. This layer will be the only one on which you will install your application. Contacts Books, Browsers, Games, etc. are some examples.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/564/1*6gZ_bIup2Aoqp54LD0aTKg.png" /><figcaption>HarmonyOS Architecture Diagram</figcaption></figure><p><a href="https://www.harmonyos.com/en/"><strong>HarmonyOS</strong></a> consists of four layers.</p><p>· Kernel Layer</p><p>· System Service Layer</p><p>· Framework Layer</p><p>· Application Layer</p><h3>Kernel Layer</h3><p>Kernels are foundational layers of operating systems. With HarmonyOS, multiple kernels can be selected for devices with different resource limits. The kernel abstraction layer (KAL) shields differences in Kernel implementations and provides the upper layer with kernel functionality such as management of processes, threads, memory, and file systems, as well as peripheral management.</p><h3>System Service Layer</h3><p>System services enable HarmonyOS to provide applications with services through its framework layer.</p><p><strong>Basic Software Service</strong></p><p>The HarmonyOS provides common and universal features, including events, notifications, and telephony, design, and more In addition to Mobile Sensing Development Platform (MSDP) &amp; Device Virtualization (DV) for X(DFX).</p><h3>Enhanced Software Service</h3><p>Integrates a variety of hardware and software services for HarmonyOS, including those devoted to smart TVs, wearables, and IoT devices.</p><h3>Hardware Service</h3><p>Delivers hardware services aimed at wearables and IoT devices, such as geolocation and biometric recognition.</p><p><strong>Framework Layer</strong></p><p>There are two types of applications in this layer: system applications and third-party applications.</p><p>Web browsers and email clients are examples of software that forms the Application layer. It provides protocols that allow software to receive and send data and present information to users.</p><p>The <a href="https://www.harmonyos.com/en/"><strong>HarmonyOS</strong></a> app benefits from its own set of Feature Abilities (FAs) and Particle Abilities (PAs).</p><p>FAs provide a UI for interacting with users.</p><p>Unlike a UI, PAs process background tasks and provide data access from the background.</p><p>Applications developed based on FAs and PAs are specifically tailored for business characteristics and can schedule and distribute across devices, providing users with a consistent and efficient experience.</p><h3>Issues with the current operating system</h3><p>· Provide seamless user experience.</p><p>· The seamless integration of AI.</p><p>· OS challenges.</p><p>· There are over a million lines of codes.</p><p>· Security concerns arise from the interconnection of multiple devices.</p><p>· Close coupling prevents the sharing of ecosystems.</p><p>Say you are listening to music on your phone, but you can use a speaker in the same room that is more powerful. The same music file can also be played on your phone with better audio quality capabilities. You are not prompted to utilize the best resources on your mobile device. The aim is to integrate devices seamlessly.</p><p>Write applications that are not tailored to a single device, but instead take advantage of virtual devices or virtual resources.</p><p>As HarmonyOS grows, it will benefit consumers, developers, and equipment vendors. With its cutting-edge OS, HarmonyOS powers the next generation of smartphones and IoT (Internet of Things) applications. HarmonyOS offers users an engaging, diverse, and rich experience. Our goal is to build out this new ecosystem by inviting developers from around the world. Our goal is to provide consumers with intelligent experiences wherever they may be.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/601/1*2mPlijz-HY2yvxtZaDneEA.png" /><figcaption>Complexity of Code Management</figcaption></figure><p>The above figure shows the complexity of code management for different devices code base. Developers have to maintain multiple code base for multiple IOT devices.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/601/1*poUH7hRzw-1YdaMO5bFWkQ.png" /><figcaption>OneHop network connection between Other OS vs Harmony OS</figcaption></figure><p>With other OSs it is difficult in configuring networks for IoT devices due to complex steps and different entries. But with <a href="https://www.harmonyos.com/en/"><strong>HarmonyOS</strong></a> OneHop network connection this will help in automatic configuration as shown in figure.</p><p>Customers, equipment manufacturers, and developers will all reap benefits from HarmonyOS. For next-generation smartphones and internet-of-things (IOT) applications, HarmonyOS is the most advanced OS.</p><p>HarmonyOS aims to provide an engaging and diverse experience to its users. As a result, developers all over the world are encouraged to join and participate in this new ecosystem. Together, these technologies will deliver a seamless consumer experience in all situations.</p><p>Until now we have seen the importance of <strong>HarmonyOS </strong>and in Part 2 which is a continuation we will see the What does HarmonyOS have to offer for Android Developers?</p><h3>Check the next part here</h3><p><a href="https://applibgroup.medium.com/harmonyos-for-android-developers-part-2-93070ca6fe8">HarmonyOS for Android Developers — Part 2</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5d80072d0252" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/harmonyos-for-android-developers-part-1-5d80072d0252">HarmonyOS for Android Developers — Part 1</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Understand the Github Flow and tips to improve it.]]></title>
            <link>https://medium.com/application-library-engineering-group/understand-the-github-flow-and-tips-to-improve-it-3f07dc3c21cb?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/3f07dc3c21cb</guid>
            <category><![CDATA[github]]></category>
            <category><![CDATA[development-tools]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Mon, 23 Aug 2021 10:40:01 GMT</pubDate>
            <atom:updated>2021-05-05T16:59:33.568Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pxXlyuMYGYmlURwjjwYaRQ.jpeg" /></figure><p>We know that <strong>GitHub</strong> is a highly used software that is typically used for version control. We use it day in and day out to manage and develop projects or contributing to Open Source. We need to follow a workflow which is easier to teach and follow, both of which result in a more consistent application. To put it simply, a workflow is how you get the work done.</p><p>In this article we will see what is the Github Flow that we need to follow.</p><p>So, let’s understand what Github Flow does and its usage.</p><p>Github flow is a standard lightweight workflow followed for easy deployment process and this workflow is used regularly.</p><p>Below is the Flow</p><ul><li><a href="https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository"><strong>Create a Branch</strong></a></li><li><a href="https://docs.github.com/en/github/committing-changes-to-your-project/about-commits#about-commits"><strong>Commits</strong></a><strong>( create, edit. delete, update)</strong></li><li><a href="https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request"><strong>Pull request</strong></a></li><li><a href="https://docs.github.com/en/organizations/organizing-members-into-teams/managing-code-review-assignment-for-your-team#about-code-review-assignments"><strong>Review Code</strong></a></li><li><a href="https://docs.github.com/en/articles/merging-a-pull-request"><strong>Merge the Pull request</strong></a></li><li><a href="https://gist.github.com/cedrickchee/55ecfbaac643bf0c24da6874bf4feb08"><strong>Code Cleanup</strong></a></li></ul><p>The above set of actions needs to be followed rigorously in order to achieve a proper Github flow.</p><p>Until now we have seen what a Github Flow is, now let’s see how Github Flow is different from Git Flow.</p><p>Basically, Git Flow works with different branches to manage easily each phase of the software development. It is used in environment with “releases” and it is not best suited for Continuous Deployment.</p><p>The Structure looks like this, there will be four types of branches:</p><p><strong>- master<br>- release<br>- hotfix/*<br>- feature/*</strong></p><p>Well, that is not the case with Github Flow, it is more of a continuous deployment environment with no concept of release. The reason is that every time you have a new feature introduced it is pushed live immediately.</p><p>If you would like to know more about GitHub Flow you can read <a href="https://guides.github.com/introduction/flow/">here</a>.</p><h3>Github Tricks and Tips</h3><p>In this section we will cover some of the random GitHub tips and tricks that would be handy during the Workflow process and can hopefully speed up your development process.</p><ul><li>Organize you contributing guidelines.</li><li>Task list with Markdown as shown below.</li></ul><pre>- [ ] Tests for Error pages<br>- [x] Tests for unauthorized access<br>- [ ] Add Image Check</pre><ul><li>Use GitHub Gist while sharing snippets.</li><li>Structuring commits</li><li>Know about <a href="https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-blame#:~:text=The%20git%20blame%20command%20is%20used%20to%20examine%20the%20contents,author%20of%20the%20modifications%20was.&amp;text=git%20blame%20and%20git%20log,history%20of%20a%20file&#39;s%20contents.">Git Blame</a> and <a href="https://git-scm.com/docs/git-bisect">Git Bisect</a></li><li><strong>GitHub</strong> code review and exploration using <a href="https://chrome.google.com/webstore/detail/octotree-github-code-tree/bkhaagjahfmjljalopjnoealnfndnagc">Octotree</a> Plugin.</li><li>Know your .git folder</li></ul><p>So far, we have seen the basic GitHub Flow and how is it different from the Git Flow and also some of the unique and random tips. I’d love to hear from you about your favorite GitHub tips that save you time and improve your code workflow.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3f07dc3c21cb" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/understand-the-github-flow-and-tips-to-improve-it-3f07dc3c21cb">Understand the Github Flow and tips to improve it.</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GitHub insights for Open-Source contribution.]]></title>
            <link>https://medium.com/application-library-engineering-group/github-insights-for-open-source-contribution-380a60a655ce?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/380a60a655ce</guid>
            <category><![CDATA[libraries]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[github]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Mon, 23 Aug 2021 10:38:15 GMT</pubDate>
            <atom:updated>2021-04-07T03:06:42.696Z</atom:updated>
            <content:encoded><![CDATA[<p>In this article we will see the importance of Github (version tool) for Open-Source contribution and the best practices to be followed while creating or contributing to Open-Source.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/970/1*SdJ7ZVOs60Ji_Pnt9yIjpw.jpeg" /><figcaption>Github</figcaption></figure><p>GitHub hosts your source code projects in a variety of different programming languages and keeps track of the various changes made to every iteration.</p><p>It is all about the collaborative effort of the community, in reviewing, improving, and deriving new ideas from the uploaded code. It’s definitely something worth looking into!</p><p>Some importance features that make Github one of the best and a go to tool.</p><ol><li>Easy to use and best for open source contribution.</li><li>Everything is available in spot from documentation, code, issues, updates etc.</li><li>Easy to share and showcase your contribution.</li><li>Track share and merge available at single point.</li><li>Increased Safety with packages.</li><li>Easy Code hosting.</li></ol><p>Since we know the importance of Github now let’s see what guidelines to follow while contributing to Open Source.</p><ol><li>First create an account on <a href="https://github.com/">Github</a></li><li>Get your Github basic right before diving deep in creating pulling request, forking, or creating your commits.</li><li>Start creating repositories of the preferred language of your choice.</li><li>Always ensure when you create the repository the README.md document is available.</li><li>Before you start contributing to open-source make sure you read the contributing document available in the <strong>README </strong>file or <strong>CONTRIBUTING </strong>file of the project. Understand your role and then start contributing.</li><li>Check if there is any licensing attached to the project.</li><li>We do have <strong>wiki </strong>sections/ tab available for most of the projects, please go through the important details which is required towards contribution.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TFHC0Og2bqRI7W1X-zjaBg.png" /><figcaption>Wiki</figcaption></figure><p>8. Also there is a <strong>Security section/Tab </strong>if the project as some security guidelines to be followed related <strong>Reporting a Vulnerability.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dnRBZARfwmuC5IeBStTPBg.png" /><figcaption>Security</figcaption></figure><p>9. Make sure when you commit the code to open-source you use proper naming convention for the commit message if there one in the contributing guidelines.</p><p>10. If you are a first-time contributor, please ensure you recheck your commit, tags, descriptions, tests passing and all the relevant details are available.</p><p>11. Avoid duplicate issues, please go through the closed issues to avoid duplicates.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GvEbrRRPeq924FMWAVx6gw.png" /><figcaption>Issues</figcaption></figure><p>So, I recommend you go out and <strong>explore various projects on GitHub</strong> and start contributing and become a part of Open-Source Community.</p><p>If you would like to share your first-time experience in contributing to Open-Source, then leave your comment below.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=380a60a655ce" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/github-insights-for-open-source-contribution-380a60a655ce">GitHub insights for Open-Source contribution.</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Rise of Mobile Applications]]></title>
            <link>https://medium.com/application-library-engineering-group/the-rise-of-mobile-applications-977234dd77f5?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/977234dd77f5</guid>
            <category><![CDATA[mobile]]></category>
            <category><![CDATA[libraries]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Mon, 23 Aug 2021 10:37:07 GMT</pubDate>
            <atom:updated>2021-04-14T05:51:05.928Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wXir6iTIHoUMMQP5cE9GIw.jpeg" /><figcaption>Phone Usage</figcaption></figure><p>Today usage of mobile phones have increased in <strong>extensively </strong>when compared to that of computers. Mobile phone usage is taking a lead to a computer that it is small in size, light in weight, and can operate with minimum power.</p><p>These mobile phones are not limited to speaking only, it is used in making video, recording information and transmitting it to a phone or a computer.</p><blockquote><strong>Mobile</strong> owners worldwide will <strong>increase</strong> to 7.33 billion by 2023. The number of <strong>mobile phone</strong> users in the world will <strong>increase</strong> significantly in the next four years, as predicted by Statista.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*zlmULtHdP0PMGiAF6O6Zng.jpeg" /><figcaption>Image taken by FreeImage</figcaption></figure><ul><li>There are currently 3.5 billion smartphone users worldwide (Statista, 2019).</li><li>70% of the time is spent with Digital media, Mobile shopping, Office Work etc</li><li>Nearly 90% of mobile internet time is spent in apps.</li></ul><p>When we see the usage of apps and Mobile internet usage is rising while desktop internet usage continues to fall. The reason is that we are able to have apps performing most of the task that required Desktops.</p><p>So, this infers that apps are built keeping various aspects like screensizes, platforms, usage, geographical conditions, internet connectivity in mind.</p><blockquote>There are currently more than 2.9 million apps available in the Google Play Store. (<a href="https://www.statista.com/statistics/266210/number-of-available-applications-in-the-google-play-store/">Statista</a>)</blockquote><p>Android apps are being published at a rate three times greater than iOS apps (see next stat), with more than 100,000 new apps being released each month.</p><p>It’s been observed that 96% of apps in the Google Play Store are free.</p><p>There are a lot more options out there that you can explore if you want to learn how to make an app. These ways range from very technical to not that technical at all.</p><ul><li><strong>Building the app from scratch</strong> — Extremely technical but highly flexible. This app development method is costly and time consuming, but you can do just about anything with it.</li><li><strong>Hybrid App Development — </strong>You develop the app once and deploy it to many platforms using technology like JavaScript.</li></ul><ul><li><a href="https://reactnative.dev/">React Native · Learn once, write anywhere</a></li><li><a href="https://ionicframework.com/">Ionic Framework - The Cross-Platform App Development Leader</a></li></ul><ul><li>Using<strong> Low code platform</strong> tools to build apps — It’s not too technical, you can build the apps using drag and drop option and connect with API’s.</li></ul><ul><li><a href="https://lansa.com/">Low-Code Mobile App Development and Data Integration - LANSA</a></li><li><a href="https://www.zoho.com/creator/">Zoho Creator: Best Low-Code Custom Application Development Platform</a></li></ul><ul><li><strong>BuildFire</strong> — This method allows you to create an app from scratch with no technical skills.</li></ul><p><a href="https://buildfire.com/">App Builder | The Best App Maker for High End Mobile Apps</a></p><p>Below are the guidelines for Mobile App development process.</p><ul><li>Define a strategic goals for evolving your idea into a successful app.</li><li>Identify requirements, define team structure, and prepare the roadmap.</li><li>Create seamless and effortless user experience with a polished design.</li><li>Develop backend, API.</li><li>Validate your app with a series of testing criteria.</li><li>Deployment and support.</li></ul><p>I hope this article gives you a brief details about app development options. You can use it to choose what’s right for you and your business.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=977234dd77f5" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/the-rise-of-mobile-applications-977234dd77f5">The Rise of Mobile Applications</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Practices for Code Contribution]]></title>
            <link>https://medium.com/application-library-engineering-group/best-practices-for-code-contribution-65b8055c1f6b?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/65b8055c1f6b</guid>
            <category><![CDATA[github]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[code]]></category>
            <category><![CDATA[contribution]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Mon, 23 Aug 2021 10:36:39 GMT</pubDate>
            <atom:updated>2021-04-12T04:49:36.695Z</atom:updated>
            <content:encoded><![CDATA[<p>Collaboration is the key for a successful software development. It works best when code can be understood and contributed to by many.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/970/1*ZrJ-3_77jNh82E28O-he8g.jpeg" /></figure><p>We will discuss and see the factors that makes a code contribution successful and we all rely on and offer some strategies for encouraging contributions on our own projects.</p><p>Before we start understanding some of the best practices, let’s see the types of Open-source Users.</p><ul><li>Collaborator</li><li>Consumer</li><li>Maintainer</li></ul><p>No matter which project or language you pick the below mentioned practices can be applied. I would suggest analyzing which roles suits you the best then start selecting the project depending on your interest and language of preference.</p><h3>1. Look for the README.md document</h3><p>I’m sure any of the well-maintained Open source should contain this document, with proper guidelines indicating ways to contribute. It also helps new team members to see how the code is structured. All these paves way to clean coding, with fewer bugs — meaning lesser time spent in maintenance.</p><h3>2. There are other ways you can contribute without writing a single line of code.</h3><p>Replying and handling open issues. We get a lot of issues every day, and some of them may lack necessary information. You can help by guiding people through the process of filling out the issue template, asking for clarifying information, or pointing them to existing issues that match their description of the problem.</p><p>Reviewing pull requests for the docs.</p><p>Help people write test plans.</p><h3>3. Questioning</h3><p>Ask as many questions as possible before raising or submission of issue or ticket and refer documents or review the open issues if required.</p><h3>4. Review</h3><p>Review the issue/code and make sure all the necessary information is updated for further analysis.</p><p>Make sure you have added the relevant commit message and performed required test.</p><h3>5. Feedback</h3><p>Do not consider Feedback as a personal comment, give time for your contributions to be reviewed and use this as a learning experience.</p><p>If you feel to contribute by sharing your views or comment about the best practices in code contribution, then feel free to add your comment below.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=65b8055c1f6b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/best-practices-for-code-contribution-65b8055c1f6b">Best Practices for Code Contribution</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A Deep Dive into Reusable Components.]]></title>
            <link>https://medium.com/application-library-engineering-group/a-deep-dive-into-reusable-components-3788ca756390?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/3788ca756390</guid>
            <category><![CDATA[libraries]]></category>
            <category><![CDATA[reusable]]></category>
            <category><![CDATA[components]]></category>
            <category><![CDATA[mobile]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Mon, 23 Aug 2021 10:34:00 GMT</pubDate>
            <atom:updated>2021-04-16T05:27:52.915Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/970/1*7hnbjgwaPM0lcyhrTs47QQ.jpeg" /></figure><p>Reusability is one of the most common and frequently used buzzwords in software development. Developers are building components based on collections of reusable components, recently most of the technologies started to equip themselves with this function.</p><p>But the question always lingers as to when do you spend the time to make a thing reusable? How do we really build one? or how do I choose one that caters my needs.</p><p>This article as some general guidelines for thinking about reusability and its history.</p><h3>History of Reusable component?</h3><p>Below is the definition from Wikipedia about Reusability.</p><blockquote><em>In computer science and software engineering, </em><strong><em>reusability</em></strong><em> is the use of existing assets in some form within the software product development process; these assets are products and by-products of the software development life cycle and include code, software components, test suites, designs and documentation.</em></blockquote><p>Code reuse has been practiced from the earliest days of programming. Programmers have always reused sections of code, templates, functions, and procedures.</p><p>Software reuse is a recognized area of study in software engineering, however, dates only from 1968 <a href="https://en.wikipedia.org/wiki/Bell_Labs">Bell Laboratories</a> proposed basing the software industry on reusable components.</p><p>Code reuse aim is to decrease the time and effort of the software development process and increase the quality of the software product significantly, software engineering required new technologies. Nowadays, most software engineering design is based on reuse of existing system or components.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/822/1*3XT8dBv3i0qhyHI0KczCfQ.png" /></figure><p>The above image depicts the importance of reusability with the concept of shared reusable components and how efficiently it can be used to builds, distribute, and collaborate over components to build multiple applications and projects.</p><h3>Why do we need a Reusable component?</h3><p>We know every application are built using a basic standard approach and adding customization is vital to get started with. Hence if the basic standard is made reusable, we can avoid those hours <strong>reinventing </strong>the wheel.</p><p>When designing interface, break down the common design elements (buttons, form fields, layout components etc) into reusable components with well-defined interfaces. That way, next time you need to build some UI you can write less code, which means <strong>faster </strong>development time, less <strong>bug, </strong>and less <strong>bytes</strong>.</p><p>Single page applications have become increasingly more complex over the past. The way we approach, and design application have changed a lot. user interface has become even more interactive and often contain very complex flow. The <strong>performance</strong> is also another factor to be considered in which user are expecting native like experience.</p><p>We need to look for some framework that will help you build the best reusable components and manage the state of the application in a predictable way.</p><p>Below are some of the reasons justifying reusable component style?</p><ul><li>Time, Cost and Effort.</li><li>Create a new higher-level abstraction to development.</li><li>Multiple Formats are trending everywhere and need to balance out this.</li><li>Better Usability, there is always demand for simpler and easier UI.</li><li>Avoid repeating work or let go usage of old technology, consistent brand expectation and maximize developer productivity.</li><li>Easier testing.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1q9sJmT7nXmPWoMEaf1I8w.png" /></figure><h3>What is Reusable component?</h3><blockquote><strong><em>Repeatability in UI or behavior that can help to define what should be a component.</em></strong></blockquote><blockquote><strong><em>Components are induvial reusable chunks of code.</em></strong></blockquote><h3>Top Tools for Reusable components?</h3><p>Before we deep dive into the top tools let us understand what is a ideal design system.</p><p>A design system is a collection of reusable components, guided by clear standards, that can be assembled to build any number of applications.</p><p>List of component tool to aid you scale your productivity consistently and efficiently.</p><ul><li><a href="https://storybook.js.org/">StoryBook</a></li><li><a href="https://bit.dev/">Bit</a></li><li><a href="https://github.com/styleguidist/">Styleguidist</a></li><li><a href="https://stenciljs.com/">StencilJS</a></li></ul><h3>Do’s and Don’ts of Reusable components?</h3><p><strong>Do’s</strong></p><ul><li>Think before you reuse.</li><li>Self-sufficient.</li><li>Easy to integrate.</li><li>Components are maintainable and reusable.</li><li>Readable and easy to test.</li></ul><p><strong>Don’ts</strong></p><ul><li>Many of the “Reusable components” are never reused.</li><li>Components are built to solve hypothetical problem and not the real ones.</li></ul><p>Finally, the culture of reusability is just not solve a problem by setting up and sharing it, we need to ensure it is well maintained and agreed. The reason is that most of the software reuse fails is due to the consistence of maintaining it or lack of close feedback loops.</p><p><em>I think Reusable component is not a just a function it is a source of inspiration.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3788ca756390" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/a-deep-dive-into-reusable-components-3788ca756390">A Deep Dive into Reusable Components.</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Top Tools for Faster and Productive Development?]]></title>
            <link>https://medium.com/application-library-engineering-group/top-tools-for-faster-and-productive-development-cc3afe48a40f?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/cc3afe48a40f</guid>
            <category><![CDATA[development-tools]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Mon, 23 Aug 2021 10:26:58 GMT</pubDate>
            <atom:updated>2021-04-09T06:18:55.940Z</atom:updated>
            <content:encoded><![CDATA[<p>Today we will see some of the commonly used tools to increase your productivity and quality of your development and the overall workflow. Whether you are building your application using React, Angular, Ember, Vue etc. The art of efficient choice of your tools aids you to tackle different problems.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*k_KVkzhVdQPuIRz62EgiRA.png" /></figure><p>These days developers need to develop applications in both Android and iOS devices and are put in spot to develop an user interface that can be used across both platforms, while maintaining the look and feel. In this situation are developer creating separate UI’s specific to corresponding platform, resulting in increased time and effort?</p><p>Achieving the look and feel of native view is a major challenge developer face these days and are the component good enough to act like native or what are the alternatives?</p><p>This is where the modern UI tools comes like a life saver with wide range of building block available to the developer. Ranging from <strong>buttons, input elements, scrolling list, Grid element </strong>and many more. These components are still available but not designed to caters the modern cross platform concerns and constraints in the modern applications.</p><p>In order to overcome these challenges, I think we need to explore and make the maximum utilization of the UI component library which is readily available to us, use them in our development process and building a modern application.</p><p>Let’s explore some of the best tools in the markets and there productivity meter.</p><h3>1. Bit</h3><p><strong>Bit </strong>is one of the leading platforms for front- end components, it is fast, dynamic and collaborative way to build your team’s component library. With Bit you can host UI components and collaborate across projects.</p><p><a href="https://www.bit.dev/">Bit. Composable software.</a></p><h3>2. StoryBookJs</h3><p><strong>Storybook </strong>is an open source tool for developing UI components in isolation for React, Vue, Angular, and more. It makes building stunning UIs organized and efficient.</p><p><a href="http://storybook.js.org/">Storybook: UI component explorer for frontend developers</a></p><h3>3. NativeBase</h3><p><strong>NativeBase </strong>is a free and open source UI component library for React Native to build native mobile apps for iOS and Android platforms.</p><p><a href="https://nativebase.io/">NativeBase | Essential cross-platform UI components for React Native</a></p><h3>4. PatternFly</h3><p><strong>PatternFly</strong> Elements An open-source, flexible design system using Web Components.</p><p><a href="https://www.github.com/patternfly">PatternFly</a></p><h3>5. Elix</h3><p><strong>Elix </strong>is an open collection of high-quality web components for common user interface patterns such as lists, menus, dialogs, carousels, and so on. The modular nature of web components let you easily incorporate them into your web apps, and their standard definition ensures good results across all mainstream browsers.</p><p><a href="https://component.kitchen/elix">Elix - Component Kitchen</a></p><h3>6. Webcomponents</h3><p><strong>WebComponents</strong> aims to make it easy to share, discover and reuse web components. Web components is a standard created to empower developers to create HTML tags such that &lt;my-new-button&gt; would be valid and able to be utilized across all browsers. It creates a framework agnostic way of composing and repurposing code.</p><p><a href="https://www.webcomponents.org/">webcomponents.org - Discuss &amp; share web components</a></p><h3>7. Stencil</h3><p><strong>Stencil </strong>is a toolchain for building reusable, scalable Design Systems. Generate small, blazing fast, and 100% standards-based Web Components that run in every browser.</p><p><a href="https://stenciljs.com/">Stencil</a></p><h3>10. Vaadin web components</h3><p><strong>Vaadin </strong>makes it easy to build beautiful web apps in Java. The included library of<strong> UI</strong> components is designed to work well on both mobile and desktop. Your users will appreciate the attention to detail while you can focus on the functionality.</p><p><a href="https://vaadin.com/components">Mobile optimized UI components for your web app | Vaadin</a></p><h3>9. Polymer Elements</h3><p><strong>Polymer </strong>lets you build encapsulated, reusable <a href="https://www.webcomponents.org/introduction">Web Components</a> that work just like standard HTML elements, to use in building web applications. Using a Web Component built with Polymer is as simple as importing its definition then using it like any other HTML element:</p><p><a href="https://github.com/Polymer/polymer">Polymer/polymer</a></p><h3>10. UI5 Web Components (SAP)</h3><p><strong>UI5 </strong>library is a set of lightweight, reusable, and independent UI elements. The components are not however built on top of UI5 but are standalone elements. You can use across frameworks and apps.</p><p><a href="https://openui5.org/">OpenUI5</a></p><h3>Conclusion</h3><p>Since you have a brief view of the available tools in the market, I think it is always a good practice to explore the tools in depth and you will be surprised by the available number of options and there unique features.</p><p>Do you recommend or have any other tools in mind that you would like to mention then please share your comments with us?</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cc3afe48a40f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/top-tools-for-faster-and-productive-development-cc3afe48a40f">Top Tools for Faster and Productive Development?</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Things I wish I knew before building Libraries.]]></title>
            <link>https://medium.com/application-library-engineering-group/things-i-wish-i-knew-before-building-libraries-72bc121dbbe8?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/72bc121dbbe8</guid>
            <category><![CDATA[libraries]]></category>
            <category><![CDATA[github]]></category>
            <category><![CDATA[mobile]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Mon, 23 Aug 2021 10:25:06 GMT</pubDate>
            <atom:updated>2021-04-26T06:24:55.901Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/970/1*WMucWGfXynSETadSNqgdww.jpeg" /><figcaption>Libraries</figcaption></figure><p>One of the major reasons for using these libraries is to expedite the development process, i.e., develop an amazing application without any unnecessary or additional efforts.</p><p>These libraries provide developers with basic pre-written codes and other important elements that can be used instantly rather than performing these tasks from scratch.</p><p>Lets, see some of the guidelines/best practices to be followed</p><ul><li>Firstly, there is no defined set of standards or hard and fast rule available for this. However if you follow a structure it could make things easier and clearer.</li><li>Always stick to the goal as to why you initially started creating this library.</li><li>Keep it simple and straight.</li><li>Do some research and find if there is already an existing library available you just reinvent the wheel, you can actually avoid this.</li><li>It is not always necessary to create libraries, fixing a feature in a existing library is contributing and giving back to the community.</li><li>High quality <strong>dependencies</strong></li><li><strong>Permissive license</strong>, including (but not limited to) Apache, Artistic, BSD, CC BY, MIT, MS-PL and W3C</li><li>Github <strong>Version Tag </strong>so you can see exactly what source is in the package.</li><li>Support for the latest <strong>stable </strong>version</li><li>General <strong>usability</strong> when it comes to the overview, docs, sample/example code, and API quality.</li><li>Good <strong>runtime behavior</strong> in terms of CPU and memory usage</li><li>Integration as well as unit <strong>test </strong>coverage.</li></ul><p>Before creating libraries, I would suggest you go through some of the best readily available libraries and see the structure or pattern common in these libraries.</p><p>Below are some of the top libraries.</p><ul><li><a href="https://dagger.dev/"><strong>Dagger 2</strong></a></li><li><a href="https://square.github.io/retrofit/"><strong>Retrofit</strong></a></li><li><a href="https://square.github.io/picasso/"><strong>Picasso</strong></a></li><li><a href="https://github.com/bumptech/glide"><strong>Glide</strong></a></li><li><a href="https://github.com/JakeWharton/butterknife"><strong>ButterKnife</strong></a></li><li><a href="https://github.com/ReactiveX/RxAndroid"><strong>RxJava2</strong></a></li><li><a href="https://developer.android.com/training/testing/espresso"><strong>Espresso</strong></a></li></ul><p>The end goal of every library is to simplify abstract complexities of code and package the code for others to reuse in their projects.</p><p>If you have any details to be shared or steps to follow while working with libraries then feel free to share it in the comments below.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=72bc121dbbe8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/things-i-wish-i-knew-before-building-libraries-72bc121dbbe8">Things I wish I knew before building Libraries.</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Various Platforms available for Mobile Application Development.]]></title>
            <link>https://medium.com/application-library-engineering-group/various-platforms-available-for-mobile-application-development-f5a03ffde381?source=rss----36c8c98270b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/f5a03ffde381</guid>
            <category><![CDATA[mobile]]></category>
            <category><![CDATA[framework]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[application]]></category>
            <dc:creator><![CDATA[Application Library Engineering Group]]></dc:creator>
            <pubDate>Mon, 23 Aug 2021 10:18:17 GMT</pubDate>
            <atom:updated>2021-04-15T05:49:12.659Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/970/1*LjdZHF9hAvHSyJI8kgjWsA.jpeg" /></figure><p>Mobile devices are evolving into increasingly sophisticated and general-purpose computers and this has led to the development of a variety of platforms and operating systems in the mobile space.</p><p>Everyone would like to create mobile applications and bring their innovate ideas into solutions and sometimes you get overwhelmed choosing which platforms to use and the list of available platforms available.</p><p>Today let’s solve this by analyzing the various mobile platforms available in the market and which one to use and when to use it.</p><p>First let’s understand the types of app that can be build.</p><ul><li><strong>Native apps</strong></li><li><strong>Hybrid apps</strong></li><li><strong>Web apps</strong></li></ul><h3><strong>Native Apps</strong></h3><p>Native apps are built for specific mobile operating system such as Apple iOS or Android OS. An app made for Apple iOS will not work on Android OS or Windows OS.</p><h3>Hybrid Apps</h3><p>A Hybrid apps is a software application that combines elements of both native apps and web applications. Hybrid apps are essentially web apps that have been put in a native app shell.</p><h3>Web Apps</h3><p>Web apps tends to be built using JavaScript, CSS, and HTML5. Unlike mobile apps, there is no standard software development kit for building web apps.</p><p>Now let’s see how to build each category and list of available frameworks.</p><h3>Native apps</h3><p>We have handful of best frame-work available in market to start with below is the list.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/320/1*7KZ9GsvveJDWUX6E8o9AyA.png" /><figcaption>Flutter</figcaption></figure><h3><strong>Flutter</strong></h3><p><strong>Flutter</strong> SDK is Google’s UI toolkit for crafting beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.</p><p>Some of the features that makes flutter unique when compared to the rest of the market are.</p><ul><li>Cross Platform Capabilities</li><li>Community</li><li>Fast and Simple App Development</li><li>Unique and rich collection of widgets</li><li>Easy to learn.</li><li>Design Tools</li></ul><p>More details about Flutter can be found <a href="https://flutter.dev/">here</a>.</p><h3>React Native</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/267/1*sCPPTPklqJ3Vib8CtUpVgQ.png" /><figcaption>React Native</figcaption></figure><p>React Native is an open-source mobile application framework created by Facebook, Inc. It is used to develop applications for Android, Android TV, iOS, macOS, Web, Windows and UWP by enabling developers to use React framework along with native platform capabilities.</p><ul><li>Time and cost efficiency</li><li>Native look and feel of your apps.</li><li>Sharing the codebase for iOS, Android, and the Web (with React and React Native for Web)</li><li>One team for multiple platforms</li><li>Awesome performance</li></ul><p>More details about React Native can be found <a href="https://reactnative.dev/">here</a> .</p><h3>Swift</h3><p>Swift is a modern, general-purpose, and multi-paradigm programming language designed by Apple to build their iOS-powered devices.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/580/1*BEI5NTsW0w1jubCnkJ1AEg.png" /><figcaption>Swift</figcaption></figure><ul><li>Open Source</li><li>Better error Handling</li><li>Easy Scaling</li><li>Less Coding and Scaling</li><li>Faster Coding</li></ul><p>More details about Swift can be found <a href="https://developer.apple.com/swift/">here </a>.</p><h3>Hybrid Apps</h3><h3>Ionic Apps</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/387/1*H3qlnK1t1oCNySu452X0pA.png" /><figcaption>Ionic</figcaption></figure><p>The Ionic Framework is a complete open-source SDK for hybrid mobile app development. It provides tools and services for hybrid mobile app development using Web technologies like CSS, HTML5, and Sass.</p><p>More details about Swift can be found <a href="https://ionicframework.com/">here </a>.</p><h3>Native Script</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/516/1*Ez8bB0z-VVGdbWowwN3Y8w.png" /><figcaption>Native Script</figcaption></figure><p>Native Script apps are built using JavaScript, or by using any language that transpiles to JavaScript, such as TypeScript, for instance.</p><p>More details about Native Script can be found <a href="https://nativescript.org/">here</a>.</p><h3>Web Apps</h3><h3>Progressive Web Apps</h3><p>Progressive Web Apps are something between a responsive website and a mobile app.</p><p>They are mobile sites built with modern JavaScript frameworks, designed to work like a native app.</p><ul><li>Reliable</li><li>Fast</li><li>Engaging</li></ul><p>More details about Progressive Apps can be found <a href="https://web.dev/progressive-web-apps/">here</a>.</p><p>Hence, picking the right platform to develop application is one of the most critical parts of building your app. Hope this article would have aided in you understanding which framework to choose from.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f5a03ffde381" width="1" height="1" alt=""><hr><p><a href="https://medium.com/application-library-engineering-group/various-platforms-available-for-mobile-application-development-f5a03ffde381">Various Platforms available for Mobile Application Development.</a> was originally published in <a href="https://medium.com/application-library-engineering-group">Application-Library-Engineering-Group</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>