<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Blog &#8211; Ooiks&#039;s Blog</title>
	<atom:link href="https://ooiks.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://ooiks.com</link>
	<description>The blog where I share my thoughts, knowledges and experiences with the world</description>
	<lastBuildDate>Wed, 29 Oct 2025 15:19:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>

<image>
	<url>https://ooiks.com/wp-content/uploads/2017/04/cropped-site_icon.png?w=32</url>
	<title>Blog &#8211; Ooiks&#039;s Blog</title>
	<link>https://ooiks.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">127998690</site><cloud domain='ooiks.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<atom:link rel="search" type="application/opensearchdescription+xml" href="https://ooiks.com/osd.xml" title="Ooiks&#039;s Blog" />
	<atom:link rel='hub' href='https://ooiks.com/?pushpress=hub'/>
	<item>
		<title>Xamarin.Google.MLKit.Common.MlKitException Failed to Initialize Detector</title>
		<link>https://ooiks.com/2025/10/29/xamarin-google-mlkit-common-mlkitexception-failed-to-initialize-detector/</link>
					<comments>https://ooiks.com/2025/10/29/xamarin-google-mlkit-common-mlkitexception-failed-to-initialize-detector/#respond</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Wed, 29 Oct 2025 15:19:26 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=12564</guid>

					<description><![CDATA[If you came to this post, this mean you encounter the same problem as I am. Xamarin.Google.MLKit.Common.MlKitException Failed to initialize detector is throw when ObjectDetectorOptions.Builder() is call. If we try to catch the error and inspect the inner error. The inner exception complain about: This file can not be opened as a file descriptor; it &#8230; <a href="https://ooiks.com/2025/10/29/xamarin-google-mlkit-common-mlkitexception-failed-to-initialize-detector/" class="more-link">Continue reading <span class="screen-reader-text">Xamarin.Google.MLKit.Common.MlKitException Failed to Initialize&#160;Detector</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you came to this post, this mean you encounter the same problem as I am. Xamarin.Google.MLKit.Common.MlKitException Failed to initialize detector is throw when ObjectDetectorOptions.Builder() is call. </p>



<p class="wp-block-paragraph">If we try to catch the error and inspect the inner error. The inner exception complain about: This file can not be opened as a file descriptor; it is probably compressed.</p>



<p class="wp-block-paragraph">Ask any AI, all will suggest adding AndroidAapt2NoCompress tag under property group in csproj.</p>



<pre class="wp-block-code"><code>&lt;PropertyGroup&gt;
 &lt;AndroidAapt2NoCompress&gt;tflite&lt;/AndroidAapt2NoCompress&gt;
&lt;/PropertyGroup&gt;</code></pre>



<p class="wp-block-paragraph"> or with dot</p>



<pre class="wp-block-code"><code>&lt;PropertyGroup&gt;
 &lt;AndroidAapt2NoCompress&gt;.tflite&lt;/AndroidAapt2NoCompress&gt;
&lt;/PropertyGroup&gt; </code></pre>



<p class="wp-block-paragraph">Unfortunately .NET compiler doesn&#8217;t seem to read this property. After more try and error, the solution is adding this instead.</p>



<pre class="wp-block-code"><code>&lt;PropertyGroup&gt;
 &lt;AndroidAapt2LinkExtraArgs&gt;$(AndroidAapt2LinkExtraArgs) -0 .tflite&lt;/AndroidAapt2LinkExtraArgs&gt;
&lt;/PropertyGroup&gt;</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2025/10/29/xamarin-google-mlkit-common-mlkitexception-failed-to-initialize-detector/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">12564</post-id>
		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>
	</item>
		<item>
		<title>Application Could Not Be Uploaded to the Device (iPhone)</title>
		<link>https://ooiks.com/2023/11/26/application-could-not-be-uploaded-to-the-device-iphone/</link>
					<comments>https://ooiks.com/2023/11/26/application-could-not-be-uploaded-to-the-device-iphone/#respond</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Sun, 26 Nov 2023 10:01:01 +0000</pubDate>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[iOS]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=9337</guid>

					<description><![CDATA[It is annoying that every once a while deploying app from Visual Studio to iPhone, it will just fail. Maybe try again. Then it fail again. But they used to work without problem and in fact they work 2 weeks ago! I have connected the cable and Visual Studio detected my iPhone, what else it &#8230; <a href="https://ooiks.com/2023/11/26/application-could-not-be-uploaded-to-the-device-iphone/" class="more-link">Continue reading <span class="screen-reader-text">Application Could Not Be Uploaded to the Device&#160;(iPhone)</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">It is annoying that every once a while deploying app from Visual Studio to iPhone, it will just fail. Maybe try again. Then it fail again. But they used to work without problem and in fact they work 2 weeks ago! I have connected the cable and Visual Studio detected my iPhone, what else it want?</p>



<pre class="wp-block-code"><code>ERROR: The device must be paired before it can be connected. (com.apple.dt.CoreDeviceError error 2.)
The device must be paired before it can be connected. (com.apple.dt.RemotePairingError error 2.)</code></pre>



<p class="wp-block-paragraph">If you have the same problem, connect your iPhone to your Mac. Then open Xcode. Go to Window &gt; Devices and Simulators. Select the iPhone that is currently connected and make sure it is trusted. If it is not, it will now force your iPhone to popup the trust this device dialog.</p>



<p class="wp-block-paragraph">Previously if the device . iPhone isn&#8217;t trusted, it won&#8217;t even show up in the device list in Visual Studio for Mac. Now it will still show up but deploy always end in failure.</p>



<p class="wp-block-paragraph">Source: <a href="https://developer.apple.com/documentation/xcode/running-your-app-in-simulator-or-on-a-device#Configure-the-list-of-simulated-devices">https://developer.apple.com/documentation/xcode/running-your-app-in-simulator-or-on-a-device#Configure-the-list-of-simulated-devices</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2023/11/26/application-could-not-be-uploaded-to-the-device-iphone/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9337</post-id>
		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>
	</item>
		<item>
		<title>MouseHunt New Horn</title>
		<link>https://ooiks.com/2022/11/30/mousehunt-new-horn/</link>
					<comments>https://ooiks.com/2022/11/30/mousehunt-new-horn/#respond</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Tue, 29 Nov 2022 19:04:19 +0000</pubDate>
				<category><![CDATA[MouseHunt AutoBot]]></category>
		<category><![CDATA[AutoBot]]></category>
		<category><![CDATA[MouseHunt]]></category>
		<category><![CDATA[user script]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=7340</guid>

					<description><![CDATA[If you are here because MouseHunt AutoBot script is no longer working due to the new shiny horn introduced on 30 Nov 2022, then you are at the right place. Let&#8217;s skip everything, I manage to patch the script to a temporary working condition. You can get it from https://github.com/ooikengsiang/MouseHunt-AutoBot/blob/master/MouseHunt-AutoBot.user.js but beware it is not &#8230; <a href="https://ooiks.com/2022/11/30/mousehunt-new-horn/" class="more-link">Continue reading <span class="screen-reader-text">MouseHunt New Horn</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you are here because MouseHunt AutoBot script is no longer working due to the new shiny horn introduced on 30 Nov 2022, then you are at the right place.</p>



<p class="wp-block-paragraph">Let&#8217;s skip everything, I manage to patch the script to a temporary working condition. You can get it from <a href="https://github.com/ooikengsiang/MouseHunt-AutoBot/blob/master/MouseHunt-AutoBot.user.js">https://github.com/ooikengsiang/MouseHunt-AutoBot/blob/master/MouseHunt-AutoBot.user.js</a> but beware it is not in a good condition. I will continue to update the script later on.</p>



<p class="wp-block-paragraph"><strong>Update:</strong> Version 2.08 available in the link above should address most of the issue caused by the new shiny horn.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2022/11/30/mousehunt-new-horn/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7340</post-id>
		<media:thumbnail url="https://ooiks.com/wp-content/uploads/2022/11/screenshot-2022-11-30-at-3.01.00-am.png" />
		<media:content url="https://ooiks.com/wp-content/uploads/2022/11/screenshot-2022-11-30-at-3.01.00-am.png" medium="image">
			<media:title type="html">Screenshot 2022-11-30 at 3.01.00 AM</media:title>
		</media:content>

		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>
	</item>
		<item>
		<title>Release Android App to Huawei AppGallery via Azure Pipeline</title>
		<link>https://ooiks.com/2022/02/24/release-android-app-to-huawei-appgallery-via-azure-pipeline/</link>
					<comments>https://ooiks.com/2022/02/24/release-android-app-to-huawei-appgallery-via-azure-pipeline/#respond</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Thu, 24 Feb 2022 13:53:52 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AppGallery]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[Pipeline]]></category>
		<category><![CDATA[Xamarin]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=6359</guid>

					<description><![CDATA[Build and release app to Google Play Store / Apple App Store via Azure Pipeline is relative straightforward by following the template / task provided in Azure Pipeline. But there is no such template / task for app publish to Huawei AppGallery. The tutorial I found in Huawei developer forum doesn&#8217;t work correctly either. After &#8230; <a href="https://ooiks.com/2022/02/24/release-android-app-to-huawei-appgallery-via-azure-pipeline/" class="more-link">Continue reading <span class="screen-reader-text">Release Android App to Huawei AppGallery via Azure&#160;Pipeline</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Build and release app to Google Play Store / Apple App Store via Azure Pipeline is relative straightforward by following the template / task provided in Azure Pipeline. But there is no such template / task for app publish to Huawei AppGallery. The tutorial I found in <a rel="noreferrer noopener" href="https://forums.developer.huawei.com/forumPortal/en/topic/0202337168449920057" target="_blank">Huawei developer forum</a> doesn&#8217;t work correctly either. After a few try and error, I have finally found a solution. Noted that I already have a build pipeline configured to build the Android app into Android App Bundles (aab) and another release pipeline to publish the app to Google Play Store, so I&#8217;m not going to show here how to do build and sign the app, but focus on how to upload and submit the signed app to Huawei AppGallery instead.</p>



<p class="wp-block-paragraph">I will not go very in depth on how Azure DevOps work. I also assume those who searching how to publish app to Huawei AppGallery via Azure pipeline should already experienced how to setup a release pipeline to publish to other store like Google Play Store. I also assume that you already publish the app to AppGallery before this.</p>



<h2 class="wp-block-heading" id="create-api-client-in-appgallery"> Create API Client in AppGallery</h2>



<p class="wp-block-paragraph">1. Login to <a href="https://developer.huawei.com/consumer/en/service/josp/agc/index.html#/" target="_blank" rel="noreferrer noopener">Huawei AppGallery Connect</a>.<br>2. Go to <strong>Users and permissions</strong>.</p>



<figure class="wp-block-image size-large"><img width="1024" height="188" data-attachment-id="6372" data-permalink="https://ooiks.com/2022/02/24/release-android-app-to-huawei-appgallery-via-azure-pipeline/screenshot-2022-02-23-at-9-00-57-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png" data-orig-size="1944,358" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot 2022-02-23 at 9.00.57 PM" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png?w=1024" alt="" class="wp-image-6372" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png 1944w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img width="1024" height="507" data-attachment-id="6373" data-permalink="https://ooiks.com/2022/02/24/release-android-app-to-huawei-appgallery-via-azure-pipeline/screenshot-2022-02-23-at-9-01-59-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.01.59-pm.png" data-orig-size="1348,668" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot 2022-02-23 at 9.01.59 PM" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.01.59-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.01.59-pm.png?w=1024" alt="" class="wp-image-6373" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.01.59-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.01.59-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.01.59-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.01.59-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.01.59-pm.png 1348w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">3. Go to <strong>Connect API</strong> then click <strong>Create</strong> on the right.</p>



<figure class="wp-block-image size-large"><img width="1024" height="348" data-attachment-id="6374" data-permalink="https://ooiks.com/2022/02/24/release-android-app-to-huawei-appgallery-via-azure-pipeline/screenshot-2022-02-23-at-9-05-44-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png" data-orig-size="2794,950" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot 2022-02-23 at 9.05.44 PM" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png?w=1024" alt="" class="wp-image-6374" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png?w=2048 2048w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png?w=1440 1440w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">4. In <strong>Create API client</strong>, give it a <strong>name</strong> (example: App Publish) and assign the <strong>Administrator role</strong>. <strong>DO NOT</strong> assign a project to this client. Leave the project as <strong>N/A</strong> else <a rel="noreferrer noopener" href="https://stackoverflow.com/questions/63999681/huawei-appgallery-connect-api-403-client-token-authorization-fail/64002280" target="_blank">Azure pipeline will fail with 403 error</a>. Click <strong>OK</strong> to create the API client.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="573" data-attachment-id="6377" data-permalink="https://ooiks.com/screenshot-2022-02-23-at-9-16-17-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png" data-orig-size="1620,908" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-23-at-9.16.17-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png?w=1024" alt="" class="wp-image-6377" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png 1620w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">5. Remember / noted the <strong>Client ID</strong> and <strong>Key</strong>. You will need them later.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="266" data-attachment-id="6380" data-permalink="https://ooiks.com/screenshot-2022-02-23-at-9-20-52-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png" data-orig-size="2240,582" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-23-at-9.20.52-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png?w=1024" alt="" class="wp-image-6380" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png?w=2048 2048w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png?w=1440 1440w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="get-app-id">Get App ID</h2>



<p class="wp-block-paragraph">1. In <a href="https://developer.huawei.com/consumer/en/service/josp/agc/index.html#/" target="_blank" rel="noreferrer noopener">Huawei AppGallery Connect</a>, go to <strong>My App</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="186" data-attachment-id="6382" data-permalink="https://ooiks.com/screenshot-2022-02-23-at-9-25-38-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png" data-orig-size="1934,352" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-23-at-9.25.38-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png?w=1024" alt="" class="wp-image-6382" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png 1934w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="542" data-attachment-id="6383" data-permalink="https://ooiks.com/screenshot-2022-02-23-at-9-26-25-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.26.25-pm.png" data-orig-size="1194,632" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-23-at-9.26.25-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.26.25-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.26.25-pm.png?w=1024" alt="" class="wp-image-6383" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.26.25-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.26.25-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.26.25-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.26.25-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.26.25-pm.png 1194w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>2. Select the app you want to publish.<br>3. Go to <strong>App Information</strong> on the left.<br>4. Remember / noted down the <strong>App ID</strong>. You will need it later.</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="402" data-attachment-id="6385" data-permalink="https://ooiks.com/screenshot-2022-02-23-at-9-28-51-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png" data-orig-size="2836,1116" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-23-at-9.28.51-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png?w=1024" alt="" class="wp-image-6385" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png?w=2048 2048w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png?w=1440 1440w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading" id="create-a-new-release-pipeline">Create A New Release Pipeline</h2>



<p class="wp-block-paragraph">1. Inside Azure DevOps, go to <strong>Release</strong> Pipelines.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="570" height="1002" data-attachment-id="6390" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-8-44-35-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.44.35-pm.png" data-orig-size="570,1002" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-8.44.35-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.44.35-pm.png?w=570" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.44.35-pm.png?w=570" alt="" class="wp-image-6390" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.44.35-pm.png 570w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.44.35-pm.png?w=85 85w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.44.35-pm.png?w=171 171w" sizes="(max-width: 570px) 100vw, 570px" /></figure>



<p class="wp-block-paragraph">2. Click on the <strong>New</strong> button and select <strong>New release pipeline</strong> to create a new release pipeline.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="736" height="750" data-attachment-id="6392" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-8-47-08-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.47.08-pm.png" data-orig-size="736,750" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-8.47.08-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.47.08-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.47.08-pm.png?w=736" alt="" class="wp-image-6392" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.47.08-pm.png 736w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.47.08-pm.png?w=147 147w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.47.08-pm.png?w=294 294w" sizes="(max-width: 736px) 100vw, 736px" /></figure>



<p class="wp-block-paragraph">3. We will start with an <strong>Empty job</strong> without any template.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="646" data-attachment-id="6394" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-8-53-39-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.53.39-pm.png" data-orig-size="1252,790" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-8.53.39-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.53.39-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.53.39-pm.png?w=1024" alt="" class="wp-image-6394" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.53.39-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.53.39-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.53.39-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.53.39-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.53.39-pm.png 1252w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">4. Since I already have a Android build pipeline setup and running already, I&#8217;m going to use the signed app (artifact) generated from that build pipeline as the source. This can be easily done by <strong>Add an artifact</strong>, then select the correct <strong>Project</strong> and <strong>Source (build pipeline)</strong>. Important to remember the <strong>Source alias</strong> which we will need it later.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="517" data-attachment-id="6404" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-16-06-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png" data-orig-size="2688,1358" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.16.06-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png?w=1024" alt="" class="wp-image-6404" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png?w=2048 2048w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png?w=1440 1440w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading" id="add-tasks">Add Tasks</h2>



<p class="wp-block-paragraph">Next, we already going to add task to the release pipeline. Go to <strong>Tasks</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="419" data-attachment-id="6398" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-10-21-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.10.21-pm.png" data-orig-size="1206,494" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.10.21-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.10.21-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.10.21-pm.png?w=1024" alt="" class="wp-image-6398" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.10.21-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.10.21-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.10.21-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.10.21-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.10.21-pm.png 1206w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="task-1-install-python-request">Task 1: Install Python Request</h3>



<ol class="wp-block-list"><li>Add a command line task.</li><li>Display name: <strong>Install Python request</strong></li><li>Script:</li></ol>



<pre class="wp-block-code"><code>cd C:\hostedtoolcache\windows\Python\3.8.1\x64\Scripts

pip install requests</code></pre>



<figure data-carousel-extra='{&quot;blog_id&quot;:127998690,&quot;permalink&quot;:&quot;https://ooiks.com/2022/02/24/release-android-app-to-huawei-appgallery-via-azure-pipeline/&quot;}'  class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="541" data-attachment-id="6399" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-11-43-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png" data-orig-size="1546,818" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.11.43-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png?w=700" data-id="6399" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png?w=1024" alt="" class="wp-image-6399" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png 1546w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<h3 class="wp-block-heading" id="task-2-get-appgallery-access-token">Task 2: Get AppGallery Access Token</h3>



<ol class="wp-block-list"><li>Add <strong>Python script</strong> task.</li><li>Display name: <strong>Get AppGallery access token</strong></li><li>Script source: <strong>Inline</strong></li><li>Script:</li></ol>



<pre class="wp-block-code"><code>import requests

json_data = {"client_id":"$(client_id)","client_secret":"$(client_secret)","grant_type":"client_credentials"}

req = requests.post("https://connect-api.cloud.huawei.com/api/oauth2/v1/token",json=json_data)

res_data = req.json()

res_data = "Bearer " + res_data&#091;'access_token']

print("##vso&#091;task.setvariable variable=access_token]"+res_data)</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="657" data-attachment-id="6401" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-13-07-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png" data-orig-size="1548,994" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.13.07-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png?w=1024" alt="" class="wp-image-6401" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png 1548w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="task-3-get-upload-url">Task 3: Get Upload URL</h3>



<ol class="wp-block-list"><li>Add <strong>Python script</strong> task.</li><li>Display name: <strong>Get upload URL</strong></li><li>Script source: <strong>Inline</strong></li><li>Script:</li></ol>



<pre class="wp-block-code"><code>import requests

headers = {
    'Authorization': '$(access_token)',
    'client_id': '$(client_id)'
}

url = 'https://connect-api.cloud.huawei.com/api/publish/v2/upload-url'

data = {
    'appId':'$(appId)',
    'suffix':'aab'
}
response = requests.get(url,headers=headers,params=data)
res_data = response.json()
print("##vso&#091;task.setvariable variable=authCode]"+res_data&#091;'authCode'])
print("##vso&#091;task.setvariable variable=uploadUrl]"+res_data&#091;'uploadUrl'])</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="660" data-attachment-id="6402" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-13-49-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png" data-orig-size="1544,996" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.13.49-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png?w=1024" alt="" class="wp-image-6402" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png 1544w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="task-4-upload-file">Task 4: Upload File</h3>



<ol class="wp-block-list"><li>Add <strong>Python script</strong> task.</li><li>Display name: <strong>Upload file</strong></li><li>Script source: <strong>Inline</strong></li><li>Script (Important: Replace <strong>Source Alias</strong> with the source alias from release pipeline):</li></ol>



<pre class="wp-block-code"><code>import requests

filePath = r'$(System.DefaultWorkingDirectory)\&lt;Source Alias&gt;\Build\drop\$(fileName)'

files = {'file':open(filePath,'rb')}

data = {'authCode':'$(authCode)','fileCount':1}

reponse = requests.post('$(uploadUrl)',data=data,files=files)

text = reponse.json()

file_info = text&#091;'result']&#091;'UploadFileRsp']&#091;'fileInfoList']&#091;0]

file_size = str(file_info&#091;'size'])

print("##vso&#091;task.setvariable variable=fileDestUrl]"+file_info&#091;'fileDestUlr'])

print("##vso&#091;task.setvariable variable=size]"+file_size)</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="662" data-attachment-id="6405" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-19-19-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png" data-orig-size="1542,998" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.19.19-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png?w=1024" alt="" class="wp-image-6405" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png 1542w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="task-5-update-app-file-info">Task 5: Update App File Info</h3>



<ol class="wp-block-list"><li>Add <strong>Python script</strong> task.</li><li>Display name: <strong>Update app file info</strong></li><li>Script source: <strong>Inline</strong></li><li>Script (Important: replace <strong>en-US</strong> to language-region of the main language supported by your app):</li></ol>



<pre class="wp-block-code"><code>import requests

file_size = int($(size))

headers = {
    'Authorization': '$(access_token)',
    'client_id': '$(client_id)'
}

params = {
    'appId':'$(appId)'
}

data = {'lang':'en-US','fileType':5,'files':&#091;{'fileName':'$(fileName)','fileDestUrl':'$(fileDestUrl)','size':file_size,'imageResolution':'','imageResolutionSingature':''}]}

reponse = requests.put('https://connect-api.cloud.huawei.com/api/publish/v2/app-file-info',headers=headers,json=data,params=params)

text = reponse.json()</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="663" data-attachment-id="6407" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-19-55-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png" data-orig-size="1540,998" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.19.55-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png?w=1024" alt="" class="wp-image-6407" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png 1540w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="task-6-submit">Task 6: Submit</h3>



<ol class="wp-block-list"><li>Add <strong>Python script</strong> task.</li><li>Display name: <strong>Submit</strong></li><li>Script source: <strong>Inline</strong></li><li>Script:</li></ol>



<pre class="wp-block-code"><code>import requests

headers = {'Authorization': '$(access_token)','client_id': '$(client_id)'}

params = {'appId': '$(appId)'}

r11 = requests.post("https://connect-api.cloud.huawei.com/api/publish/v2/app-submit",params=params,headers=headers)

res_data = r11.json()
print(res_data)</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="665" data-attachment-id="6408" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-20-30-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png" data-orig-size="1552,1008" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.20.30-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png?w=1024" alt="" class="wp-image-6408" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png 1552w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">You should have a total of 6 tasks in your release pipeline by now.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="727" data-attachment-id="6411" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-27-33-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.27.33-pm.png" data-orig-size="1148,816" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.27.33-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.27.33-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.27.33-pm.png?w=1024" alt="" class="wp-image-6411" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.27.33-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.27.33-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.27.33-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.27.33-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.27.33-pm.png 1148w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading" id="add-variables">Add Variables</h2>



<p class="wp-block-paragraph">Next, we are going to add the variable with value taken from Huawei AppGallery in order to make the pipeline work.</p>



<ul class="wp-block-list"><li>Add &#8220;<strong>appId</strong>&#8221; variable with <strong>App ID</strong> retrieved from Huawei AppGallery.</li><li>Add &#8220;<strong>client_id</strong>&#8221; variable with <strong>Client Id</strong> from Huawei AppGallery.</li><li>Add &#8220;<strong>client_secret</strong>&#8221; variable with <strong>Key</strong> from Huawei AppGallery.</li><li>Add &#8220;<strong>fileName</strong>&#8221; variable with file name of signed app generated from release pipeline. (Refer to your previous build pipeline run if needed. Example com.app-Signed.aab)</li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="279" data-attachment-id="6412" data-permalink="https://ooiks.com/screenshot-2022-02-24-at-9-29-27-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png" data-orig-size="2762,754" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-24-at-9.29.27-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png?w=1024" alt="" class="wp-image-6412" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png?w=2048 2048w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png?w=1440 1440w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading" id="complete">Complete</h2>



<p class="wp-block-paragraph">Remember to click <strong>Save</strong> to save the whole setup. Click <strong>Create release</strong> to see if everything is setup correctly. If you have problem access to the API or there is any API change, you can refer to their <a href="https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-References/agcapi-upload-file-0000001158245059" target="_blank" rel="noreferrer noopener">AppGallery Connect API document</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2022/02/24/release-android-app-to-huawei-appgallery-via-azure-pipeline/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6359</post-id>
		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.00.57-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.01.59-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.05.44-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.16.17-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.20.52-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.25.38-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.26.25-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-23-at-9.28.51-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.44.35-pm.png?w=570" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.47.08-pm.png?w=736" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-8.53.39-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.16.06-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.10.21-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.11.43-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.07-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.13.49-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.19-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.19.55-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.20.30-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.27.33-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-24-at-9.29.27-pm.png?w=1024" medium="image" />
	</item>
		<item>
		<title>How to Select Older iOS Simulator in Visual Studio for Mac</title>
		<link>https://ooiks.com/2022/02/22/how-to-select-older-ios-simulator-in-visual-studio-for-mac/</link>
					<comments>https://ooiks.com/2022/02/22/how-to-select-older-ios-simulator-in-visual-studio-for-mac/#respond</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Mon, 21 Feb 2022 16:10:18 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Simulator]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Xamarin]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=6340</guid>

					<description><![CDATA[Sometime it is very useful to test on an older device to reproduce bug found by your other iOS users, but launching / select an older iOS simulator is not that straightforward compare with Android simulator which can easily be done in Visual Studio for Mac. For iOS simulator, first you need to install the &#8230; <a href="https://ooiks.com/2022/02/22/how-to-select-older-ios-simulator-in-visual-studio-for-mac/" class="more-link">Continue reading <span class="screen-reader-text">How to Select Older iOS Simulator in Visual Studio for&#160;Mac</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Sometime it is very useful to test on an older device to reproduce bug found by your other iOS users, but launching / select an older iOS simulator is not that straightforward compare with Android simulator which can easily be done in Visual Studio for Mac.</p>



<p class="wp-block-paragraph">For iOS simulator, first you need to install the older version of iOS simulator from Xcode.</p>



<ol class="wp-block-list"><li>Launch Xcode.</li><li>Open <strong>Preferences</strong> by go to top menu &gt; Xcode &gt; Preferences.</li><li>Open <strong>Components</strong> tab.</li><li>Select and install the iOS simulator version you prefer by clicking on the small download button on the left.</li><li>The download / installation might take some time.</li></ol>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="798" data-attachment-id="6347" data-permalink="https://ooiks.com/screenshot-2022-02-19-at-10-04-23-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png" data-orig-size="2082,1624" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-19-at-10.04.23-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png?w=1024" alt="" class="wp-image-6347" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png?w=2048 2048w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png?w=1440 1440w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Just install the older simulator is not enough, you need to manually create a simulator for this version too.</p>



<ol class="wp-block-list"><li>Still inside Xcode.</li><li>Open <strong>Devices and Simulators</strong> by go to the top menu &gt; Window &gt; Devices and Simulators.</li><li>Switch to <strong>Simulators</strong> tab.</li><li>Click the small <strong>+</strong> button on the bottom left.</li><li>Enter a name for the simulator (it even suggested a name for you).</li><li>Remember to select the correct iOS version you need.</li><li>Click OK and you should see the newly created simulator added to the list of simulator on the left.</li></ol>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="770" data-attachment-id="6349" data-permalink="https://ooiks.com/screenshot-2022-02-19-at-10-05-32-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png" data-orig-size="1904,1432" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-19-at-10.05.32-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png?w=1024" alt="" class="wp-image-6349" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png 1904w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="675" data-attachment-id="6351" data-permalink="https://ooiks.com/screenshot-2022-02-19-at-10-05-51-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png" data-orig-size="1620,1068" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-19-at-10.05.51-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png?w=1024" alt="" class="wp-image-6351" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png?w=1440 1440w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png 1620w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Once you have installed and created the iOS simulator. Then only Visual Studio for Mac will be able to show the new simulator in the simulator list. You might need to restart Visual Studio for Mac for the simulator list to be refreshed if Visual Studio for Mac already running when you create the simulator.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="798" data-attachment-id="6353" data-permalink="https://ooiks.com/screenshot-2022-02-21-at-11-56-47-pm/" data-orig-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-21-at-11.56.47-pm.png" data-orig-size="1370,1068" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="screenshot-2022-02-21-at-11.56.47-pm" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-21-at-11.56.47-pm.png?w=700" src="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-21-at-11.56.47-pm.png?w=1024" alt="" class="wp-image-6353" srcset="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-21-at-11.56.47-pm.png?w=1024 1024w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-21-at-11.56.47-pm.png?w=150 150w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-21-at-11.56.47-pm.png?w=300 300w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-21-at-11.56.47-pm.png?w=768 768w, https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-21-at-11.56.47-pm.png 1370w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">One thing to keep in mind that older simulator doesn&#8217;t get removed automatically when you update your Xcode.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2022/02/22/how-to-select-older-ios-simulator-in-visual-studio-for-mac/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6340</post-id>
		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.04.23-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.32-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-19-at-10.05.51-pm.png?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2022/02/screenshot-2022-02-21-at-11.56.47-pm.png?w=1024" medium="image" />
	</item>
		<item>
		<title>I Joined A Startup, Left, Then End Up in The Court: This Is My Story</title>
		<link>https://ooiks.com/2021/10/28/i-joined-a-startup-left-then-end-up-in-the-court-this-is-my-story/</link>
					<comments>https://ooiks.com/2021/10/28/i-joined-a-startup-left-then-end-up-in-the-court-this-is-my-story/#comments</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Thu, 28 Oct 2021 06:54:06 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[boostorder]]></category>
		<category><![CDATA[court case]]></category>
		<category><![CDATA[Instanture]]></category>
		<category><![CDATA[startup]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=5516</guid>

					<description><![CDATA[A story which a programmer fight in the court alone against a company, with a lawyer and a forged evidence. In 2018, I decided to quit my job at Intel to join a newly startup company, Boostorder (parent company: Instanture, sister company: Mango Fintech) believing their promise and future potential. Before that, I do all &#8230; <a href="https://ooiks.com/2021/10/28/i-joined-a-startup-left-then-end-up-in-the-court-this-is-my-story/" class="more-link">Continue reading <span class="screen-reader-text">I Joined A Startup, Left, Then End Up in The Court: This Is My&#160;Story</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>A story which a programmer fight in the court alone against a company, with a lawyer and a forged evidence.</em></p>



<p class="wp-block-paragraph">In 2018, I decided to quit my job at Intel to join a newly startup company, <a rel="noreferrer noopener" href="https://www.boostorder.com/" target="_blank">Boostorder</a> (parent company: <a rel="noreferrer noopener" href="https://www.linkedin.com/company/instanture-holding" target="_blank">Instanture</a>, sister company: Mango Fintech) believing their promise and future potential. Before that, I do all my homework before joining the startup. The company have received a new funding from <a rel="noreferrer noopener" href="https://www.investor-one.com/editorial/565-Shopper360-invests--in-B2B-capabilities-with-minority-acquisition" target="_blank">a multinational company</a>, financial check. One of my friends recommend the director as trustable, leadership check. I even visited the company myself to understand their work and product, all check. Obviously, they promised a lot, but do they actually deliver them is another story.</p>



<span id="more-5516"></span>



<h2 class="wp-block-heading">October 2019</h2>



<p class="wp-block-paragraph">After many empty promises and disappointments, I decided to resign and submitted my resign email on 10<sup>th</sup> October. The director, <strong>Chuah Teong Kee</strong> and I have a small, heated exchange when he known that I had resigned. In the end, we verbally agreed that if the company still need my assistance on my final week in the company, I will continue to work at the office and company will cash out my remaining annual leave if it happens.</p>



<div class="wp-block-jetpack-layout-grid alignfull column1-desktop-grid__span-6 column1-desktop-grid__row-1 column2-desktop-grid__span-6 column2-desktop-grid__start-7 column2-desktop-grid__row-1 column1-tablet-grid__span-4 column1-tablet-grid__row-1 column2-tablet-grid__span-4 column2-tablet-grid__start-5 column2-tablet-grid__row-1 column1-mobile-grid__span-4 column1-mobile-grid__row-1 column2-mobile-grid__span-4 column2-mobile-grid__row-2">
<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="809" data-attachment-id="5527" data-permalink="https://ooiks.com/01_resign_email-1/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/01_resign_email-1.jpg" data-orig-size="1375,1087" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="01_resign_email-1" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/01_resign_email-1.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/05/01_resign_email-1.jpg?w=1024" alt="" class="wp-image-5527" srcset="https://ooiks.com/wp-content/uploads/2021/05/01_resign_email-1.jpg?w=1024 1024w, https://ooiks.com/wp-content/uploads/2021/05/01_resign_email-1.jpg?w=150 150w, https://ooiks.com/wp-content/uploads/2021/05/01_resign_email-1.jpg?w=300 300w, https://ooiks.com/wp-content/uploads/2021/05/01_resign_email-1.jpg?w=768 768w, https://ooiks.com/wp-content/uploads/2021/05/01_resign_email-1.jpg 1375w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Resignation email</figcaption></figure>
</div>



<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none"></div>
</div>



<h2 class="wp-block-heading">December 2019</h2>



<p class="wp-block-paragraph">After discussion with my direct manager, he determined that my assistance was not needed in the final week. So, I applied my annual leave on 1<sup>st</sup> December as planned and did not went to the office from 2<sup>nd</sup> to 6<sup>th</sup> December. This is where the horror story start. </p>



<p class="wp-block-paragraph">At the end of December, I found out that I did not receive my remaining salary and some of my parking expanses. I sent two reminder emails to the director on 24<sup>th</sup> and 30<sup>th</sup> December. No reply from both emails.</p>



<div class="wp-block-jetpack-layout-grid alignfull column1-desktop-grid__span-6 column1-desktop-grid__row-1 column2-desktop-grid__span-6 column2-desktop-grid__start-7 column2-desktop-grid__row-1 column1-tablet-grid__span-4 column1-tablet-grid__row-1 column2-tablet-grid__span-4 column2-tablet-grid__start-5 column2-tablet-grid__row-1 column1-mobile-grid__span-4 column1-mobile-grid__row-1 column2-mobile-grid__span-4 column2-mobile-grid__row-2">
<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="628" data-attachment-id="5528" data-permalink="https://ooiks.com/02_salary_reminder_01-1/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg" data-orig-size="1738,1067" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="02_salary_reminder_01-1" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg?w=1024" alt="" class="wp-image-5528" srcset="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg?w=1024 1024w, https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg?w=150 150w, https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg?w=300 300w, https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg?w=768 768w, https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg?w=1440 1440w, https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg 1738w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"> First salary reminder through email  </figcaption></figure>
</div>



<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="598" data-attachment-id="5529" data-permalink="https://ooiks.com/02_salary_reminder_02-1/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_02-1.jpg" data-orig-size="1362,796" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="02_salary_reminder_02-1" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_02-1.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_02-1.jpg?w=1024" alt="" class="wp-image-5529" srcset="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_02-1.jpg?w=1024 1024w, https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_02-1.jpg?w=150 150w, https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_02-1.jpg?w=300 300w, https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_02-1.jpg?w=768 768w, https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_02-1.jpg 1362w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"> Second salary reminder through email  </figcaption></figure>
</div>
</div>



<h2 class="wp-block-heading">January 2020</h2>



<p class="wp-block-paragraph">On 7<sup>th</sup> January, I sent a Whatsapp message to the director to remind him about the email and salary. Read but no reply.</p>



<p class="wp-block-paragraph">On 13<sup>th</sup> January, I message my direct manager and another director in the company and explain to them what had happened. My direct manager replied that he already informed the director, but no reason is given, and no action is taken. While the other director in the company, <strong>Khoo Ta Kang</strong> refuse to help me citing that he is powerless against another director and do not want to get involved in this.</p>



<p class="wp-block-paragraph">On 17<sup>th</sup> January, I went to office personally to seek a valid reason. The director refused to speak with me and told me that he will call police to get me arrested for trespassing private property if I did not leave the office immediately. I leave the office immediately.</p>



<div class="wp-block-jetpack-layout-grid alignfull column1-desktop-grid__span-6 column1-desktop-grid__row-1 column2-desktop-grid__span-6 column2-desktop-grid__start-7 column2-desktop-grid__row-1 column1-tablet-grid__span-4 column1-tablet-grid__row-1 column2-tablet-grid__span-4 column2-tablet-grid__start-5 column2-tablet-grid__row-1 column1-mobile-grid__span-4 column1-mobile-grid__row-1 column2-mobile-grid__span-4 column2-mobile-grid__row-2">
<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="581" height="1024" data-attachment-id="5552" data-permalink="https://ooiks.com/04_salary_reminder_03-2/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/04_salary_reminder_03-2.jpg" data-orig-size="1266,2232" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="04_salary_reminder_03-2" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/04_salary_reminder_03-2.jpg?w=581" src="https://ooiks.com/wp-content/uploads/2021/05/04_salary_reminder_03-2.jpg?w=581" alt="" class="wp-image-5552" srcset="https://ooiks.com/wp-content/uploads/2021/05/04_salary_reminder_03-2.jpg?w=581 581w, https://ooiks.com/wp-content/uploads/2021/05/04_salary_reminder_03-2.jpg?w=1162 1162w, https://ooiks.com/wp-content/uploads/2021/05/04_salary_reminder_03-2.jpg?w=85 85w, https://ooiks.com/wp-content/uploads/2021/05/04_salary_reminder_03-2.jpg?w=170 170w, https://ooiks.com/wp-content/uploads/2021/05/04_salary_reminder_03-2.jpg?w=768 768w" sizes="(max-width: 581px) 100vw, 581px" /><figcaption class="wp-element-caption">Third salary reminder through Whatsapp message</figcaption></figure>
</div>



<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="581" height="1024" data-attachment-id="5549" data-permalink="https://ooiks.com/05_salary_reminder_04-1/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/05_salary_reminder_04-1.jpg" data-orig-size="1266,2232" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="05_salary_reminder_04-1" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/05_salary_reminder_04-1.jpg?w=581" src="https://ooiks.com/wp-content/uploads/2021/05/05_salary_reminder_04-1.jpg?w=581" alt="" class="wp-image-5549" srcset="https://ooiks.com/wp-content/uploads/2021/05/05_salary_reminder_04-1.jpg?w=581 581w, https://ooiks.com/wp-content/uploads/2021/05/05_salary_reminder_04-1.jpg?w=1162 1162w, https://ooiks.com/wp-content/uploads/2021/05/05_salary_reminder_04-1.jpg?w=85 85w, https://ooiks.com/wp-content/uploads/2021/05/05_salary_reminder_04-1.jpg?w=170 170w, https://ooiks.com/wp-content/uploads/2021/05/05_salary_reminder_04-1.jpg?w=768 768w" sizes="(max-width: 581px) 100vw, 581px" /><figcaption class="wp-element-caption">Seeking help from direct manager and another director</figcaption></figure>
</div>
</div>



<h2 class="wp-block-heading">February 2020</h2>



<p class="wp-block-paragraph">With advice from friend, I filed a small claim against the director of the company at Balik Pulau Court on 24<sup>th</sup> February. I naively though the company will just pay me back after they got the court letter. I was dead wrong.</p>



<p class="wp-block-paragraph"><strong><span class="has-inline-color has-vivid-red-color">Side note:</span></strong> Why small claim? Because it does not require a lawyer representation. Why not seek help from Department of Labour of Peninsular Malaysia? I tried but they cannot help me due to some law that written in year 1955 and did not get updated ever since.</p>



<p class="wp-block-paragraph">No reply from the company after they received the court document. On 28<sup>th</sup> February, the director shows up with a lawyer in the court proceeding. Surprise! They claim that they refused to pay my salary because I did not apply my annual leave on time as written in the employee handbook: “All annual leave must be applied one week before”. I checked the employee handbook; this rule does not exist. They also claim that I did not submit my parking expanses, which I did, and I can easily prove them. Then I realized that this is not going to end without a fight, and they are not going to play fairly.</p>



<p class="wp-block-paragraph"><strong><span class="has-inline-color has-vivid-red-color">Side note:</span></strong> The small claim should be file against the company instead of the director because it is company that own my salary, not the director personally. This is corrected by the judge on the proceeding.</p>



<div class="wp-block-jetpack-layout-grid alignfull column1-desktop-grid__span-6 column1-desktop-grid__row-1 column2-desktop-grid__span-6 column2-desktop-grid__start-7 column2-desktop-grid__row-1 column1-tablet-grid__span-4 column1-tablet-grid__row-1 column2-tablet-grid__span-4 column2-tablet-grid__start-5 column2-tablet-grid__row-1 column1-mobile-grid__span-4 column1-mobile-grid__row-1 column2-mobile-grid__span-4 column2-mobile-grid__row-2">
<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="725" height="1023" data-attachment-id="5554" data-permalink="https://ooiks.com/06_small_claim_p1/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/06_small_claim_p1.jpg" data-orig-size="886,1251" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="06_small_claim_p1" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/06_small_claim_p1.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/05/06_small_claim_p1.jpg?w=725" alt="" class="wp-image-5554" srcset="https://ooiks.com/wp-content/uploads/2021/05/06_small_claim_p1.jpg?w=725 725w, https://ooiks.com/wp-content/uploads/2021/05/06_small_claim_p1.jpg?w=106 106w, https://ooiks.com/wp-content/uploads/2021/05/06_small_claim_p1.jpg?w=212 212w, https://ooiks.com/wp-content/uploads/2021/05/06_small_claim_p1.jpg?w=768 768w, https://ooiks.com/wp-content/uploads/2021/05/06_small_claim_p1.jpg 886w" sizes="(max-width: 725px) 100vw, 725px" /><figcaption class="wp-element-caption">Small claim page 1</figcaption></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" data-attachment-id="5561" data-permalink="https://ooiks.com/07_small_claim_p2-1/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/07_small_claim_p2-1.jpg" data-orig-size="860,1007" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="07_small_claim_p2-1" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/07_small_claim_p2-1.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/05/07_small_claim_p2-1.jpg?w=860" alt="" class="wp-image-5561" width="384" height="449" srcset="https://ooiks.com/wp-content/uploads/2021/05/07_small_claim_p2-1.jpg?w=384 384w, https://ooiks.com/wp-content/uploads/2021/05/07_small_claim_p2-1.jpg?w=768 768w, https://ooiks.com/wp-content/uploads/2021/05/07_small_claim_p2-1.jpg?w=128 128w, https://ooiks.com/wp-content/uploads/2021/05/07_small_claim_p2-1.jpg?w=256 256w" sizes="(max-width: 384px) 100vw, 384px" /><figcaption class="wp-element-caption">Small claim page 2</figcaption></figure>
</div>



<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="745" height="1023" data-attachment-id="5560" data-permalink="https://ooiks.com/08_defendant_counter_claim_p1-1/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/08_defendant_counter_claim_p1-1.jpg" data-orig-size="946,1300" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="08_defendant_counter_claim_p1-1" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/08_defendant_counter_claim_p1-1.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/05/08_defendant_counter_claim_p1-1.jpg?w=745" alt="" class="wp-image-5560" srcset="https://ooiks.com/wp-content/uploads/2021/05/08_defendant_counter_claim_p1-1.jpg?w=745 745w, https://ooiks.com/wp-content/uploads/2021/05/08_defendant_counter_claim_p1-1.jpg?w=109 109w, https://ooiks.com/wp-content/uploads/2021/05/08_defendant_counter_claim_p1-1.jpg?w=218 218w, https://ooiks.com/wp-content/uploads/2021/05/08_defendant_counter_claim_p1-1.jpg?w=768 768w, https://ooiks.com/wp-content/uploads/2021/05/08_defendant_counter_claim_p1-1.jpg 946w" sizes="(max-width: 745px) 100vw, 745px" /><figcaption class="wp-element-caption">Defendant counter claim page 1</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="690" height="1023" data-attachment-id="5558" data-permalink="https://ooiks.com/09_defendant_counter_claim_p2/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/09_defendant_counter_claim_p2.jpg" data-orig-size="878,1303" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="09_defendant_counter_claim_p2" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/09_defendant_counter_claim_p2.jpg?w=690" src="https://ooiks.com/wp-content/uploads/2021/05/09_defendant_counter_claim_p2.jpg?w=690" alt="" class="wp-image-5558" srcset="https://ooiks.com/wp-content/uploads/2021/05/09_defendant_counter_claim_p2.jpg?w=690 690w, https://ooiks.com/wp-content/uploads/2021/05/09_defendant_counter_claim_p2.jpg?w=101 101w, https://ooiks.com/wp-content/uploads/2021/05/09_defendant_counter_claim_p2.jpg?w=202 202w, https://ooiks.com/wp-content/uploads/2021/05/09_defendant_counter_claim_p2.jpg?w=768 768w, https://ooiks.com/wp-content/uploads/2021/05/09_defendant_counter_claim_p2.jpg 878w" sizes="(max-width: 690px) 100vw, 690px" /><figcaption class="wp-element-caption"> Defendant counter claim page 2</figcaption></figure>
</div>
</div>



<h2 class="wp-block-heading">March 2020 – February 2021</h2>



<p class="wp-block-paragraph">MCO 1.0 and 2.0 hit. Court close and case get delayed multiple times. Still, I must go to court personally multiple times, sit in the court room waiting to get a new date and time for each time the case gets delayed. Unlike the lawyer, I do not get pay for this.</p>



<h2 class="wp-block-heading">April 2021</h2>



<p class="wp-block-paragraph">Court hearing finally happen on 22<sup>nd</sup> April. Unsurprisingly, the director and lawyer show up in court hearing with a &#8220;updated&#8221;employee handbook which contain the new rule: “All annual leave must be applied one week before”. Surprise, surprise. Luckily, I have the old employee handbook and debunked their claim. I also have all my parking expanses digital report to backup. Their defends is down from &#8220;This employee break our company&#8217;s rule when he applied annual leave less than 1 week as required&#8221; to &#8220;The 1-week rule is not really relevant, it is unreasonable to approve leave on Sunday because it is hard to find a replacement&#8221;. Nice U-turn, Mr. Lawyer. I never know software engineer / developer need a replacement when they are on leave. Also, startup company don&#8217;t work on Sunday you say?</p>



<p class="wp-block-paragraph">I also pointed that if the company honestly think that I broke the company’s rule or policy and refused to pay my remaining salary, they have plenty of opportunity to tell me when I email or message them to remind them about the salary. Instead, they refused to speak with me or reply any of my email and message and even threaten me to get me arrest when I meet them in person. This is simply just a retaliation against me for leaving the company.</p>



<p class="wp-block-paragraph"><mark style="background-color:rgba(0,0,0,0);" class="has-inline-color has-vivid-red-color"><strong>Side note:</strong></mark> If anyone who know about civil court’s process, all party must perform <a rel="noreferrer noopener" href="https://en.wikipedia.org/wiki/Filing_(law)" target="_blank">document filing</a> and exchange document between parties before court hearing. I did my document filing and waited for them to exchange document with me. Technically I should know if they have submitted the “updated” employee handbook as evidence before the court hearing, but their lawyer told the judge that he does not know the process thus did not do the document filing before court hearing.</p>



<p class="wp-block-paragraph">I going to skip the rest of the court hearing details because a programmer arguing with a lawyer in court is not as interesting as you can imagine.</p>



<div class="wp-block-jetpack-layout-grid alignfull column1-desktop-grid__span-6 column1-desktop-grid__row-1 column2-desktop-grid__span-6 column2-desktop-grid__start-7 column2-desktop-grid__row-1 column1-tablet-grid__span-4 column1-tablet-grid__row-1 column2-tablet-grid__span-4 column2-tablet-grid__start-5 column2-tablet-grid__row-1 column1-mobile-grid__span-4 column1-mobile-grid__row-1 column2-mobile-grid__span-4 column2-mobile-grid__row-2">
<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="770" height="1024" data-attachment-id="5563" data-permalink="https://ooiks.com/10_employee_handbook_2019/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/10_employee_handbook_2019.jpg" data-orig-size="944,1256" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="10_employee_handbook_2019" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/10_employee_handbook_2019.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/05/10_employee_handbook_2019.jpg?w=770" alt="" class="wp-image-5563" srcset="https://ooiks.com/wp-content/uploads/2021/05/10_employee_handbook_2019.jpg?w=770 770w, https://ooiks.com/wp-content/uploads/2021/05/10_employee_handbook_2019.jpg?w=113 113w, https://ooiks.com/wp-content/uploads/2021/05/10_employee_handbook_2019.jpg?w=225 225w, https://ooiks.com/wp-content/uploads/2021/05/10_employee_handbook_2019.jpg 944w" sizes="(max-width: 770px) 100vw, 770px" /><figcaption class="wp-element-caption">One of the section in employee handbook 2018/2019</figcaption></figure>
</div>



<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="1021" height="718" data-attachment-id="5564" data-permalink="https://ooiks.com/11_employee_handbook_2020/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/05/11_employee_handbook_2020.jpg" data-orig-size="1021,718" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="11_employee_handbook_2020" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/05/11_employee_handbook_2020.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/05/11_employee_handbook_2020.jpg?w=1021" alt="" class="wp-image-5564" srcset="https://ooiks.com/wp-content/uploads/2021/05/11_employee_handbook_2020.jpg 1021w, https://ooiks.com/wp-content/uploads/2021/05/11_employee_handbook_2020.jpg?w=150 150w, https://ooiks.com/wp-content/uploads/2021/05/11_employee_handbook_2020.jpg?w=300 300w, https://ooiks.com/wp-content/uploads/2021/05/11_employee_handbook_2020.jpg?w=768 768w" sizes="(max-width: 1021px) 100vw, 1021px" /><figcaption class="wp-element-caption">One of the section in employee handbook 2020</figcaption></figure>
</div>
</div>



<h2 class="wp-block-heading">May 2021</h2>



<p class="wp-block-paragraph">On 6<sup>th</sup> May, the court finally ruled that the company must pay back my remaining salary.&nbsp;Before I manage to get the court ruling document done, MCO 3.0 hit follow by FMCO. Although the court still open during this time, to avoid unnecessary trouble and reduce non-essential travel, I opt to wait until the MCO lifted.</p>



<p class="wp-block-paragraph">On 10<sup>th</sup> May, I received a mail from defendant’s lawyer informing me that Boostorder has already made the payment as order by the court on 7<sup>th</sup> May, which the company own me a year and half ago. Thank you very much?</p>



<div class="wp-block-jetpack-layout-grid alignfull column1-desktop-grid__span-6 column1-desktop-grid__row-1 column2-desktop-grid__span-6 column2-desktop-grid__start-7 column2-desktop-grid__row-1 column1-tablet-grid__span-4 column1-tablet-grid__row-1 column2-tablet-grid__span-4 column2-tablet-grid__start-5 column2-tablet-grid__row-1 column1-mobile-grid__span-4 column1-mobile-grid__row-1 column2-mobile-grid__span-4 column2-mobile-grid__row-2">
<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="741" height="1023" data-attachment-id="5718" data-permalink="https://ooiks.com/12_payback_01/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg" data-orig-size="1972,2724" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="12_payback_01" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg?w=741" alt="" class="wp-image-5718" srcset="https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg?w=741 741w, https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg?w=1482 1482w, https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg?w=109 109w, https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg?w=217 217w, https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg?w=768 768w, https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg?w=1440 1440w" sizes="(max-width: 741px) 100vw, 741px" /><figcaption class="wp-element-caption">Letter from defendant&#8217;s lawyer after court ruling</figcaption></figure>
</div>



<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="671" height="1023" data-attachment-id="5720" data-permalink="https://ooiks.com/13_payback_02/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/06/13_payback_02.jpg" data-orig-size="1778,2712" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="13_payback_02" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/06/13_payback_02.jpg?w=671" src="https://ooiks.com/wp-content/uploads/2021/06/13_payback_02.jpg?w=671" alt="" class="wp-image-5720" srcset="https://ooiks.com/wp-content/uploads/2021/06/13_payback_02.jpg?w=671 671w, https://ooiks.com/wp-content/uploads/2021/06/13_payback_02.jpg?w=1342 1342w, https://ooiks.com/wp-content/uploads/2021/06/13_payback_02.jpg?w=98 98w, https://ooiks.com/wp-content/uploads/2021/06/13_payback_02.jpg?w=197 197w, https://ooiks.com/wp-content/uploads/2021/06/13_payback_02.jpg?w=768 768w" sizes="(max-width: 671px) 100vw, 671px" /><figcaption class="wp-element-caption">Proof of bank transfer transaction attached together in the letter</figcaption></figure>
</div>
</div>



<h2 class="wp-block-heading">October 2021</h2>



<p class="wp-block-paragraph">FMCO become Recovery Plan and it never end. Finally I get my 2 shot of vaccinations, and able to safety travel a cross district to the court in order to get the final court ruling document done. Delivered a copy to Boostorder. Although they have paid me in May, I still want to get all the paperwork done (better safe than sorry especially dealing with a shady company and a dishonest employer).</p>



<div class="wp-block-jetpack-layout-grid alignfull column1-desktop-grid__span-6 column1-desktop-grid__row-1 column2-desktop-grid__span-6 column2-desktop-grid__start-7 column2-desktop-grid__row-1 column1-tablet-grid__span-4 column1-tablet-grid__row-1 column2-tablet-grid__span-4 column2-tablet-grid__start-5 column2-tablet-grid__row-1 column1-mobile-grid__span-4 column1-mobile-grid__row-1 column2-mobile-grid__span-4 column2-mobile-grid__row-2">
<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none">
<figure class="wp-block-image size-large"><img loading="lazy" width="746" height="1024" data-attachment-id="5989" data-permalink="https://ooiks.com/14_court_ruling/" data-orig-file="https://ooiks.com/wp-content/uploads/2021/10/14_court_ruling.jpg" data-orig-size="892,1225" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="14_court_ruling" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2021/10/14_court_ruling.jpg?w=700" src="https://ooiks.com/wp-content/uploads/2021/10/14_court_ruling.jpg?w=746" alt="" class="wp-image-5989" srcset="https://ooiks.com/wp-content/uploads/2021/10/14_court_ruling.jpg?w=746 746w, https://ooiks.com/wp-content/uploads/2021/10/14_court_ruling.jpg?w=109 109w, https://ooiks.com/wp-content/uploads/2021/10/14_court_ruling.jpg?w=218 218w, https://ooiks.com/wp-content/uploads/2021/10/14_court_ruling.jpg?w=768 768w, https://ooiks.com/wp-content/uploads/2021/10/14_court_ruling.jpg 892w" sizes="(max-width: 746px) 100vw, 746px" /><figcaption class="wp-element-caption">Court ruled that Boostorder must pay back my salary</figcaption></figure>
</div>



<div class="wp-block-jetpack-layout-grid-column wp-block-jetpack-layout-grid__padding-none"></div>
</div>



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



<p class="wp-block-paragraph">So, let me recap. I spend more almost 2 years fighting in court to get back the salary I lawfully earned at the first place. To be honest, the cost for all court filing and annual leave applied to attend the court in person, it already far excesses the remaining salary I tried to claim back. Not to mention the risk of catching Covid-19 whenever I attend the court.</p>



<p class="wp-block-paragraph">Did the company get punished for not paying their employee as required by the law? <strong>No.</strong></p>



<p class="wp-block-paragraph">Did the company get punished for owning employee&#8217;s salary for more than a year? <strong>No.</strong></p>



<p class="wp-block-paragraph">Did the company get punished for submitted a forged evidence in court? <strong>No.</strong></p>



<p class="wp-block-paragraph"><strong>I&#8217;m just lucky</strong> to win in this court case. There are so many ways this court case can fall apart. What if my ex-employer claim that I did not submit my annual leave application at all? The HR system is under their control and who will think of taking a screenshot when apply for annual leave? What if I go to court without my old employee handbook with me? If I did not win the court case, every time other companies perform a background check on me when I apply a new job, do you think Boostorder will say nice word about me? My employment record and court record will be toasted!</p>



<p class="wp-block-paragraph"><strong>What have I learned?</strong> In Malaysia, company can easily get away from not paying their employee if they are willing to pay the lawyer. Not many employees are willing to go through the legal trouble. For foreigner, that is even harder. Even if they do, what is the worst thing that can happen to the company? Pay back the salary and they are off to go. If employee decided to take their frustrations to the social media instead, it does not make any difference, employee still is not getting back their salary and a defamation lawyer letter maybe waiting in their inbox. So, if any of you happened to face the same situation as mine where ex-employer own your remaining salary. My advice for you “Forget about it”. If you insist on talking the same path as mine, my advice will be “Good Luck” because you really need all the luck to win.</p>



<p class="wp-block-paragraph"><strong>Startup in Malaysia.</strong> Don’t get me wrong, this is not a story about me bashing how bad startup culture are in Malaysia. There are many good startup companies out there in Malaysia and even in Penang. But Boostorder / Instanture is not one of them and their bad behavior deserved to be call out because it is very damaging to local startup. Imagine if anyone who joined this startup company and went through such bad experience, will he / she choose another startup company again in the next job? Even worse, if an intern who joined such startup company during internship, will he / she spread good word about startup when he / she returns to the university / college?</p>



<p class="wp-block-paragraph"><strong><span class="has-inline-color has-vivid-red-color">Bonus:</span></strong> A lot of you asked me what have I done to the company caused that the director to go after me? I HAVE NO IDEA! I am working my ass off even on the last day in the office, porting Xamarin library, helping others to hunt bug in the app. Even after I left the company, I never turn down other ex-colleague request for help when they messaged me. The only thing I did was, I resigned from my position and like most employees who left this company, it is not a happy ending.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2021/10/28/i-joined-a-startup-left-then-end-up-in-the-court-this-is-my-story/feed/</wfw:commentRss>
			<slash:comments>57</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5516</post-id>
		<media:thumbnail url="https://ooiks.com/wp-content/uploads/2021/05/pxl_20211028_044000460.jpg" />
		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/pxl_20211028_044000460.jpg" medium="image">
			<media:title type="html">PXL_20211028_044000460</media:title>
		</media:content>

		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/01_resign_email-1.jpg?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_01-1.jpg?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/02_salary_reminder_02-1.jpg?w=1024" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/04_salary_reminder_03-2.jpg?w=581" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/05_salary_reminder_04-1.jpg?w=581" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/06_small_claim_p1.jpg?w=725" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/07_small_claim_p2-1.jpg?w=860" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/08_defendant_counter_claim_p1-1.jpg?w=745" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/09_defendant_counter_claim_p2.jpg?w=690" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/10_employee_handbook_2019.jpg?w=770" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/05/11_employee_handbook_2020.jpg?w=1021" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/06/12_payback_01.jpg?w=741" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/06/13_payback_02.jpg?w=671" medium="image" />

		<media:content url="https://ooiks.com/wp-content/uploads/2021/10/14_court_ruling.jpg?w=746" medium="image" />
	</item>
		<item>
		<title>Change Navigation Bar Color in iOS 15</title>
		<link>https://ooiks.com/2021/10/16/change-navigation-bar-color-in-ios-15/</link>
					<comments>https://ooiks.com/2021/10/16/change-navigation-bar-color-in-ios-15/#comments</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Sat, 16 Oct 2021 09:47:48 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Xamarin]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=6014</guid>

					<description><![CDATA[If your app changed the color of navigation bar (background / foreground / text color / tint color), it is probably broken in the new iOS 15. Here is how I fix them in Xamarin:]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If your app changed the color of navigation bar (background / foreground / text color / tint color), it is probably broken in the new iOS 15. Here is how I fix them in Xamarin:</p>



<pre class="wp-block-code"><code>if (UIDevice.CurrentDevice.CheckSystemVersion(15, 0))
{
    // change the background and text color of title bar
    var appearance = new UINavigationBarAppearance();
    appearance.ConfigureWithOpaqueBackground();
    appearance.BackgroundColor = CustomColor.AccentColor;
    appearance.TitleTextAttributes = new UIStringAttributes() { ForegroundColor = CustomColor.ForegroundColor };
    appearance.LargeTitleTextAttributes = new UIStringAttributes() { ForegroundColor = CustomColor.ForegroundColor };

    UINavigationBar.Appearance.StandardAppearance = appearance;
    UINavigationBar.Appearance.ScrollEdgeAppearance = appearance;
}
else
{
    // change the background color of title bar
    UINavigationBar.Appearance.BarTintColor = CustomColor.AccentColor;
    UINavigationBar.Appearance.Translucent = false;

    // change the title text color
    UINavigationBar.Appearance.TitleTextAttributes = new UIStringAttributes() { ForegroundColor = CustomColor.ForegroundColor };
}

// change the button color on navigation bar
UINavigationBar.Appearance.TintColor = CustomColor.ForegroundColor;</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2021/10/16/change-navigation-bar-color-in-ios-15/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6014</post-id>
		<media:thumbnail url="https://ooiks.com/wp-content/uploads/2021/10/navigation_bar_ios15.png" />
		<media:content url="https://ooiks.com/wp-content/uploads/2021/10/navigation_bar_ios15.png" medium="image">
			<media:title type="html">navigation_bar_ios15</media:title>
		</media:content>

		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>
	</item>
		<item>
		<title>UWP Submission Error 1201 and Weird Certification Crash</title>
		<link>https://ooiks.com/2019/04/20/uwp-submission-error-1201-and-weird-certification-crash/</link>
					<comments>https://ooiks.com/2019/04/20/uwp-submission-error-1201-and-weird-certification-crash/#respond</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Sat, 20 Apr 2019 05:06:59 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=4565</guid>

					<description><![CDATA[A whole month, this random submission error 1201 and unproducible crash reported by certification team of Windows store promoted me to look for the problem and solution in my UWP app that never existed. When submitting the app to Windows Store, the submission will typical fail within 5 minutes after pre-processing complete. The following error &#8230; <a href="https://ooiks.com/2019/04/20/uwp-submission-error-1201-and-weird-certification-crash/" class="more-link">Continue reading <span class="screen-reader-text">UWP Submission Error 1201 and Weird Certification&#160;Crash</span></a>]]></description>
										<content:encoded><![CDATA[<p>A whole month, this random submission error 1201 and unproducible crash reported by certification team of Windows store promoted me to look for the problem and solution in my UWP app that never existed.</p>
<p>When submitting the app to Windows Store, the submission will typical fail within 5 minutes after pre-processing complete. The following error message is what shown:</p>
<pre>This submission failed with error code(s) 1201 . More info about the error(s) can be found <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fwindows%2Fuwp%2Fpublish%2Fresolve-submission-errors&amp;data=02%7C01%7Cmichals%40microsoft.com%7C03366f79451649fa220208d6c3dfb0e4%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C636911762847944798&amp;sdata=Qks5Si1dLjp%2FRW5%2Fg5%2BSwUX4TdIrnQTI2jx%2BIJcUUXY%3D&amp;reserved=0">here.</a></pre>
<p>Quick online search mention about using old Microsoft.NETCore.UniversalWindowsPlatform may caused this problem, but I&#8217;m using the latest version 6.2.8 which doesn&#8217;t have this problem. The certification team told me to resubmit the app because this might be just some random issue on the server, which I did and fail again. I recompile the whole package again and submit to Windows Store. Well, everything went wel&#8230;. crash, crash, crash!</p>
<p>Now certification team told me that my app crash on startup which I was not able to reproducible at all using the same package I submitted to Windows store. I even tested it on multiple different machine which different language and region configuration. So I did the same trick of recompile and submit. The app still crash on startup when certification team tried the app. Here are the stack track captured in crash report, although it make no sense to me.</p>
<pre class="lang-cs prettyprint prettyprinted"><code><span class="pln">appname</span><span class="pun">::</span><span class="pln">app onlaunched</span><span class="pun">()</span><span class="pln">
stowed_exception </span><span class="lit">80131500</span><span class="pun">:</span><span class="pln"> stowed_exception
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">RoOriginateLanguageException</span><span class="pun">()</span><span class="pln"> error</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">1504</span>
<span class="typ">System</span><span class="pun">.</span><span class="typ">Private</span><span class="pun">.</span><span class="typ">Interop</span>    <span class="typ">System</span><span class="pun">::</span><span class="typ">Runtime</span><span class="pun">::</span><span class="typ">InteropServices</span><span class="pun">::</span><span class="typ">ExceptionHelpers</span> <span class="typ">OriginateLanguageException</span><span class="pun">()</span> <span class="typ">ExceptionHelpers</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">113</span>
<span class="typ">System</span><span class="pun">.</span><span class="typ">Private</span><span class="pun">.</span><span class="typ">Interop</span>    <span class="typ">System</span><span class="pun">::</span><span class="typ">Runtime</span><span class="pun">::</span><span class="typ">InteropServices</span><span class="pun">::</span><span class="typ">ExceptionHelpers</span> <span class="typ">GetHRForExceptionWithErrorPropogationNoThrow</span><span class="pun">()</span> <span class="typ">ExceptionHelpers</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">219</span>
<span class="typ">System</span><span class="pun">.</span><span class="typ">Private</span><span class="pun">.</span><span class="typ">Interop</span>    <span class="typ">System</span><span class="pun">::</span><span class="typ">Runtime</span><span class="pun">::</span><span class="typ">InteropServices</span><span class="pun">::</span><span class="typ">McgMarshal</span> <span class="typ">GetHRForExceptionWinRT</span><span class="pun">()</span> <span class="typ">McgMarshal</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">1239</span><span class="pln">
appname</span><span class="pun">.</span><span class="typ">UniversalWindows</span><span class="pun">.</span><span class="typ">McgInterop</span><span class="pun">.</span><span class="pln">dll    __Interop</span><span class="pun">::</span><span class="typ">ReverseComStubs</span><span class="pun">.</span><span class="typ">Stub_12_System</span><span class="pln"> __Canon_$catch$0</span><span class="pun">()</span> <span class="typ">SharedStubs</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">11147</span><span class="pln">
mrt100_app</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">RhpCallCatchFunclet2</span><span class="pun">()</span><span class="pln"> exceptionhandling</span><span class="pun">.</span><span class="pln">asm</span><span class="pun">:</span><span class="lit">438</span><span class="pln">
mrt100_app</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">System</span><span class="pun">::</span><span class="typ">Runtime</span><span class="pun">::</span><span class="pln">EH </span><span class="typ">DispatchEx</span><span class="pun">()</span> <span class="typ">ExceptionHandling</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">683</span><span class="pln">
mrt100_app</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">System</span><span class="pun">::</span><span class="typ">Runtime</span><span class="pun">::</span><span class="pln">EH </span><span class="typ">RhThrowEx</span><span class="pun">()</span> <span class="typ">ExceptionHandling</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">552</span><span class="pln">
mrt100_app</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">RhpThrowEx2</span><span class="pun">()</span><span class="pln"> exceptionhandling</span><span class="pun">.</span><span class="pln">asm</span><span class="pun">:</span><span class="lit">198</span>
<span class="typ">System</span><span class="pun">.</span><span class="typ">Private</span><span class="pun">.</span><span class="typ">Interop</span>    <span class="typ">System</span><span class="pun">::</span><span class="typ">Runtime</span><span class="pun">::</span><span class="typ">InteropServices</span><span class="pun">::</span><span class="typ">McgMarshal</span> <span class="typ">ThrowOnExternalCallFailed</span><span class="pun">()</span> <span class="typ">McgMarshal</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">1267</span><span class="pln">
appname</span><span class="pun">.</span><span class="typ">UniversalWindows</span><span class="pun">.</span><span class="typ">McgInterop</span><span class="pun">.</span><span class="pln">dll    __Interop</span><span class="pun">::</span><span class="typ">ComCallHelpers</span> <span class="typ">Call</span><span class="pun">()</span> <span class="typ">SharedStubs</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">8527</span><span class="pln">
appname</span><span class="pun">.</span><span class="typ">UniversalWindows</span><span class="pun">.</span><span class="typ">McgInterop</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Windows</span><span class="pun">::</span><span class="pln">UI</span><span class="pun">::</span><span class="typ">Xaml</span><span class="pun">::</span><span class="typ">Controls</span><span class="pun">::</span><span class="typ">IFrame__Impl</span><span class="pun">::</span><span class="typ">Stubs</span> <span class="typ">Navigate</span><span class="pun">()</span> <span class="typ">ImplTypes</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">158360</span><span class="pln">
appname</span><span class="pun">.</span><span class="typ">UniversalWindows</span><span class="pun">.</span><span class="typ">McgInterop</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Windows</span><span class="pun">::</span><span class="pln">UI</span><span class="pun">::</span><span class="typ">Xaml</span><span class="pun">::</span><span class="typ">Controls</span><span class="pun">::</span><span class="typ">Frame</span> <span class="typ">Navigate</span><span class="pun">()</span> <span class="typ">SafeTypes</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">44489</span><span class="pln">
appname</span><span class="pun">.</span><span class="typ">UniversalWindows</span><span class="pun">.</span><span class="pln">exe    appname</span><span class="pun">::</span><span class="typ">App</span> <span class="typ">OnLaunched</span><span class="pun">()</span> <span class="typ">App</span><span class="pun">.</span><span class="pln">xaml</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">76</span>
<span class="typ">System</span><span class="pun">.</span><span class="typ">Private</span><span class="pun">.</span><span class="typ">Threading</span>    <span class="typ">System</span><span class="pun">::</span><span class="typ">Progress$1_$89_System</span><span class="pun">::</span><span class="typ">VoidValueTypeParameter_</span><span class="pun">.</span><span class="typ">System</span><span class="pun">.</span><span class="typ">IProgress_T_</span> <span class="typ">Report</span><span class="pun">()</span> <span class="typ">SafeTypes</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">23264</span><span class="pln">
appname</span><span class="pun">.</span><span class="typ">UniversalWindows</span><span class="pun">.</span><span class="typ">McgInterop</span><span class="pun">.</span><span class="pln">dll    __Interop</span><span class="pun">::</span><span class="typ">ReverseComStubs</span><span class="pun">.</span><span class="typ">Stub_12_System</span><span class="pln"> __Canon_</span><span class="pun">()</span> <span class="typ">SharedStubs</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">11130</span><span class="pln">
appname</span><span class="pun">.</span><span class="typ">UniversalWindows</span><span class="pun">.</span><span class="typ">McgInterop</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Windows</span><span class="pun">::</span><span class="pln">UI</span><span class="pun">::</span><span class="typ">Xaml</span><span class="pun">::</span><span class="typ">IApplicationOverrides__Impl</span><span class="pun">::</span><span class="typ">Vtbl</span> <span class="typ">OnLaunched__n</span><span class="pun">()</span> <span class="typ">ImplTypes</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">cs</span><span class="pun">:</span><span class="lit">138287</span>
<span class="typ">Windows</span><span class="pun">.</span><span class="pln">UI</span><span class="pun">.</span><span class="typ">Xaml</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">DirectUI</span><span class="pun">::</span><span class="typ">FrameworkApplicationGenerated</span> <span class="typ">OnLaunchedProtected</span><span class="pun">()</span><span class="pln"> frameworkapplication</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">502</span>
<span class="typ">Windows</span><span class="pun">.</span><span class="pln">UI</span><span class="pun">.</span><span class="typ">Xaml</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">DirectUI</span><span class="pun">::</span><span class="typ">FrameworkView</span> <span class="typ">OnActivated</span><span class="pun">()</span><span class="pln"> frameworkview_partial</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">267</span>
<span class="typ">Windows</span><span class="pun">.</span><span class="pln">UI</span><span class="pun">.</span><span class="typ">Xaml</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Microsoft</span><span class="pun">::</span><span class="pln">WRL</span><span class="pun">::</span><span class="typ">Details</span><span class="pun">::</span><span class="typ">DelegateArgTraits_long</span> <span class="pun">(</span><span class="pln">__cdecl </span><span class="typ">Windows</span><span class="pun">::</span><span class="typ">Foundation</span><span class="pun">::</span><span class="typ">ITypedEventHandler_impl_Windows</span><span class="pun">::</span><span class="typ">Foundation</span><span class="pun">::</span><span class="typ">Internal</span><span class="pun">::</span><span class="typ">AggregateType_Windows</span><span class="pun">::</span><span class="pln">UI</span><span class="pun">::</span><span class="typ">Core</span><span class="pun">::</span><span class="typ">CoreWindow</span> <span class="pun">*,</span><span class="typ">Windows</span><span class="pun">::</span><span class="pln">UI</span><span class="pun">::</span><span class="typ">Core</span><span class="pun">::</span><span class="typ">ICoreWindow</span> <span class="pun">*</span><span class="pln">_</span><span class="pun">,</span><span class="typ">IInspectable</span> <span class="pun">*</span><span class="pln">_ </span><span class="pun">*)()</span> <span class="kwd">event</span><span class="pun">.</span><span class="pln">h</span><span class="pun">:</span><span class="lit">245</span>
<span class="typ">Microsoft</span><span class="pun">::</span><span class="pln">WRL</span><span class="pun">::</span><span class="typ">InvokeTraits_</span><span class="pun">-</span><span class="lit">2</span><span class="pln">_</span><span class="pun">::</span><span class="typ">InvokeDelegates__lambda_3ad0adb09957fd62cbc86618ebbeb8fa_</span><span class="pun">,</span><span class="typ">Windows</span><span class="pun">::</span><span class="typ">Foundation</span><span class="pun">::</span><span class="typ">ITypedEventHandler_Windows</span><span class="pun">::</span><span class="typ">ApplicationModel</span><span class="pun">::</span><span class="typ">Core</span><span class="pun">::</span><span class="typ">CoreApplicationView</span> <span class="pun">*,</span><span class="typ">Windows</span><span class="pun">::</span><span class="typ">ApplicationModel</span><span class="pun">::</span><span class="typ">Activation</span> <span class="typ">IActivatedEventArgs</span> <span class="pun">*</span><span class="pln">_ _</span><span class="pun">()</span><span class="pln"> internalevent</span><span class="pun">.</span><span class="pln">h</span><span class="pun">:</span><span class="lit">119</span><span class="pln">
twinapi</span><span class="pun">.</span><span class="pln">appcore</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Windows</span><span class="pun">::</span><span class="typ">ApplicationModel</span><span class="pun">::</span><span class="typ">Core</span><span class="pun">::</span><span class="typ">CoreApplicationView</span> <span class="typ">Activate</span><span class="pun">()</span><span class="pln"> coreapplicationview</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">545</span><span class="pln">
rpcrt4</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Invoke</span><span class="pun">()</span><span class="pln"> invoke</span><span class="pun">.</span><span class="pln">asm</span><span class="pun">:</span><span class="lit">183</span><span class="pln">
rpcrt4</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Ndr64StubWorker</span><span class="pun">()</span><span class="pln"> srvcall</span><span class="pun">.</span><span class="pln">cxx</span><span class="pun">:</span><span class="lit">392</span><span class="pln">
rpcrt4</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">NdrStubCall3</span><span class="pun">()</span><span class="pln"> srvwrap</span><span class="pun">.</span><span class="pln">cxx</span><span class="pun">:</span><span class="lit">166</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">CStdStubBuffer_Invoke</span><span class="pun">()</span><span class="pln"> stub</span><span class="pun">.</span><span class="pln">cxx</span><span class="pun">:</span><span class="lit">1446</span><span class="pln">
rpcrt4</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">CStdStubBuffer_Invoke</span><span class="pun">()</span><span class="pln"> ndrfwds</span><span class="pun">.</span><span class="pln">cxx</span><span class="pun">:</span><span class="lit">182</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">ObjectMethodExceptionHandlingAction__lambda_c9f3956a20c9da92a64affc24fdd69ec_</span><span class="pln"> _</span><span class="pun">()</span><span class="pln"> excepn</span><span class="pun">.</span><span class="pln">hxx</span><span class="pun">:</span><span class="lit">87</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">DefaultStubInvoke</span><span class="pun">()</span><span class="pln"> channelb</span><span class="pun">.</span><span class="pln">cxx</span><span class="pun">:</span><span class="lit">1452</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">SyncServerCall</span> <span class="typ">StubInvoke</span><span class="pun">()</span><span class="pln"> servercall</span><span class="pun">.</span><span class="pln">hpp</span><span class="pun">:</span><span class="lit">826</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">ServerCall</span> <span class="typ">ContextInvoke</span><span class="pun">()</span><span class="pln"> ctxchnl</span><span class="pun">.</span><span class="pln">cxx</span><span class="pun">:</span><span class="lit">1418</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">ASTAInvokeInApartment</span><span class="pun">()</span><span class="pln"> applicationsta</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">470</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">AppInvoke</span><span class="pun">()</span><span class="pln"> channelb</span><span class="pun">.</span><span class="pln">cxx</span><span class="pun">:</span><span class="lit">1182</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">ComInvokeWithLockAndIPID</span><span class="pun">()</span><span class="pln"> channelb</span><span class="pun">.</span><span class="pln">cxx</span><span class="pun">:</span><span class="lit">2290</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">ThreadDispatch</span><span class="pun">()</span><span class="pln"> chancont</span><span class="pun">.</span><span class="pln">cxx</span><span class="pun">:</span><span class="lit">416</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">ModernSTAState</span> <span class="typ">HandleMessage</span><span class="pun">()</span><span class="pln"> modernsta</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">472</span><span class="pln">
combase</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">ModernSTAWaitContext</span> <span class="typ">HandlePriorityEventsFromMessagePump</span><span class="pun">()</span><span class="pln"> modernsta</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">1550</span>
<span class="typ">Windows</span><span class="pun">.</span><span class="pln">UI</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Windows</span><span class="pun">::</span><span class="pln">UI</span><span class="pun">::</span><span class="typ">Core</span><span class="pun">::</span><span class="typ">CDispatcher</span> <span class="typ">ProcessMessage</span><span class="pun">()</span><span class="pln"> dispatcher</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">339</span>
<span class="typ">Windows</span><span class="pun">.</span><span class="pln">UI</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Windows</span><span class="pun">::</span><span class="pln">UI</span><span class="pun">::</span><span class="typ">Core</span><span class="pun">::</span><span class="typ">CDispatcher</span> <span class="typ">WaitAndProcessMessagesInternal</span><span class="pun">()</span><span class="pln"> dispatcher</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">1953</span>
<span class="typ">Windows</span><span class="pun">.</span><span class="pln">UI</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">Windows</span><span class="pun">::</span><span class="pln">UI</span><span class="pun">::</span><span class="typ">Core</span><span class="pun">::</span><span class="typ">CDispatcher</span> <span class="typ">WaitAndProcessMessages</span><span class="pun">()</span><span class="pln"> dispatcher</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">461</span><span class="pln">
twinapi</span><span class="pun">.</span><span class="pln">appcore</span><span class="pun">.</span><span class="pln">dll    _lambda_643db08282a766b00cec20194396f531_ </span><span class="kwd">operator</span><span class="pun">()</span><span class="pln"> coreapplicationviewagilecontainer</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">1145</span>
<span class="typ">SHCore</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">_WrapperThreadProc</span><span class="pun">()</span><span class="pln"> thread</span><span class="pun">.</span><span class="pln">cpp</span><span class="pun">:</span><span class="lit">321</span><span class="pln">
ntdll</span><span class="pun">.</span><span class="pln">dll    </span><span class="typ">RtlUserThreadStart</span><span class="pun">()</span><span class="pln"> rtlstrt</span><span class="pun">.</span><span class="pln">c</span><span class="pun">:</span><span class="lit">1152</span></code></pre>
<p>Contacted certification support team, but the certification support team insist that I should contact the developer support team. Contacted the developer support team, but the developer support team insist that I should contact the certification support team. In the end, both doesn&#8217;t even provide any help or direction and keep quiet.</p>
<p>Long story, I rollback some changes and resubmit the app, everything went smooth. But none of the code I rollback look suspicious at all. In fact they aren&#8217;t. Add back the code and everything went hair wired again. In fact, during the app package compilation, .NET native toolchain start to fail, but I usually ignore them because they can be resolve by recompile again. In the end, I emailed .NET native team for help. This is what I get back.</p>
<p style="padding-left:30px;">We have seen similar symptoms when the compiler runs out of memory while compiling the app. Sometimes apps are on the edge, and timing around how memory is allocated is all that makes the difference between success and failure.</p>
<p style="padding-left:30px;">We have a 64 bit compiler available that can operate with more memory. Can you try to add &lt;Use64BitCompiler&gt;true&lt;/Use64BitCompiler&gt; to a PropertyGroup in your main CSPROJ file?</p>
<p style="padding-left:30px;">You should be able to validate that it’s doing the right thing by enabling diagnostic build output in Visual Studio, switching build configuration to Release and building the project. In the build log, there should be a line with nutc_driver.exe in it. The nutc_driver.exe that was invoked should be in a tools64 directory (as opposed to the tools directory used by default).</p>
<p style="padding-left:30px;">-Michal</p>
<p>Adding Use64BitCompiler is a life saver! It totally work and the app went through submission <del>without a problem at all</del> minimum problem. Gosh, that took long enough! This is the few thing I learn:</p>
<ul>
<li>Windows Store will re-compile your package submitted. I never knew that, I though they just testing the package procvided.</li>
<li>UWP app can grow big very quickly espcially if you use a lot of nuget libraries.</li>
<li>Bad archtecture design will cause .NET native to run to limitation much quicker, such as two view model is refering each other directly.</li>
<li>We really need a 64 bits Visual Studio.</li>
<li>If app submission still hitting error 1201, resubmit again until it success.</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2019/04/20/uwp-submission-error-1201-and-weird-certification-crash/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4565</post-id>
		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>
	</item>
		<item>
		<title>UWP App Manifest Resources Tests Failed The Size Restrictions</title>
		<link>https://ooiks.com/2019/01/18/uwp-app-manifest-resources-tests-failed-the-size-restrictions/</link>
					<comments>https://ooiks.com/2019/01/18/uwp-app-manifest-resources-tests-failed-the-size-restrictions/#respond</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Fri, 18 Jan 2019 03:16:20 +0000</pubDate>
				<category><![CDATA[Universal Windows Platform]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[UWP]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=4150</guid>

					<description><![CDATA[Another day another random error hit. Today I try to submit an update for my UWP app to Windows store. I submitted countless number of update previously and never encounter any error especially I always run the Windows App Cert Kit locally before submitting my app as precaution. Everything work great exception app certification failed &#8230; <a href="https://ooiks.com/2019/01/18/uwp-app-manifest-resources-tests-failed-the-size-restrictions/" class="more-link">Continue reading <span class="screen-reader-text">UWP App Manifest Resources Tests Failed The Size&#160;Restrictions</span></a>]]></description>
										<content:encoded><![CDATA[<p>Another day another random error hit. Today I try to submit an update for my UWP app to Windows store. I submitted countless number of update previously and never encounter any error especially I always run the Windows App Cert Kit locally before submitting my app as precaution. Everything work great exception app certification failed with the following message:</p>
<ul class="ulMessagesOverflow">
<li>Image reference &#8220;Resources\Images\Logos\store_logo.png&#8221;: The image &#8220;s:\t\7E7C79\appcert_2A0C\7463Ooiks.Bugko-MTGTool_5.8.8.0_neutral_split.scale-100_t9y74dhqw19zm\Resources\Images\Logos\square_71x71_logo.scale-100.png&#8221; failed the size restrictions of 50 X 50.</li>
<li>Image reference &#8220;Resources\Images\Logos\store_logo.png&#8221;: The image &#8220;s:\t\7E7C79\appcert_2A0C\7463Ooiks.Bugko-MTGTool_5.8.8.0_neutral_split.scale-125_t9y74dhqw19zm\Resources\Images\Logos\square_71x71_logo.scale-125.png&#8221; failed the size restrictions of 62 X 62.</li>
<li>Image reference &#8220;Resources\Images\Logos\store_logo.png&#8221;: The image &#8220;s:\t\7E7C79\appcert_2A0C\7463Ooiks.Bugko-MTGTool_5.8.8.0_neutral_split.scale-150_t9y74dhqw19zm\Resources\Images\Logos\square_71x71_logo.scale-150.png&#8221; failed the size restrictions of 75 X 75.</li>
<li>Image reference &#8220;Resources\Images\Logos\store_logo.png&#8221;: The image &#8220;s:\t\7E7C79\appcert_2A0C\7463Ooiks.Bugko-MTGTool_5.8.8.0_neutral_split.scale-400_t9y74dhqw19zm\Resources\Images\Logos\square_71x71_logo.scale-400.png&#8221; failed the size restrictions of 200 X 200.</li>
</ul>
<p><span id="more-4150"></span></p>
<p>What? The logo submitted was not in the correct size? I never changes the logo in this update and all previous submission went without any problem, why now? Wait, it point to the incorrect image instead. But why? Clean build, delete bin and obj folder then rebuild. Run <span style="display:inline !important;float:none;background-color:#ffffff;color:#4b4f53;cursor:text;font-family:'Noto Serif', Georgia, 'Times New Roman', Times, serif;font-size:16px;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:normal;line-height:1.2em;orphans:2;text-align:left;text-decoration:none;text-indent:0;text-transform:none;white-space:normal;word-spacing:0;">Windows App Cert Kit locally</span>, yet still fail with the same error after submit.</p>
<p>After some search online, found <a href="https://social.msdn.microsoft.com/Forums/windowsapps/en-US/d635300c-ce04-4554-bb6b-d1808e18175e/issue-with-app-manifest-resources-tests-in-online-wack-wrong-images-are-used-for-resolutions-check?forum=wpdevelop" target="_blank" rel="noopener">this post in the forum</a> mention about Resource Map issue when building project in Visual Studio. But the post didn&#8217;t mention how to check the resource map. Search online about Visual Studio / UWP resource map get me no where.</p>
<p>Hey, let&#8217;s unzip the installation package and see if I can figure out something.</p>
<ol>
<li>Unzip the app upload package (with .appxupload extension).</li>
<li>Go into the unzipped folder.</li>
<li>Unzip the app bundle package (with .appxbundle extension).</li>
<li>Go into the unzipped folder.</li>
<li>Here you should find the app <span style="display:inline !important;float:none;background-color:#ffffff;color:#4b4f53;cursor:text;font-family:'Noto Serif', Georgia, 'Times New Roman', Times, serif;font-size:16px;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:normal;line-height:1.2em;orphans:2;text-align:left;text-decoration:none;text-indent:0;text-transform:none;white-space:normal;word-spacing:0;">installation </span>package <span style="display:inline !important;float:none;background-color:#ffffff;color:#4b4f53;cursor:text;font-family:'Noto Serif', Georgia, 'Times New Roman', Times, serif;font-size:16px;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:normal;line-height:1.2em;orphans:2;text-align:left;text-decoration:none;text-indent:0;text-transform:none;white-space:normal;word-spacing:0;"> (with .appx extension)</span> build for different platforms. For example, mine have: x86, x64 and ARM.</li>
<li>Unzip each of the installation package (with .appx extension).</li>
<li>Compare the file unzipped from each platform. All platform should have the same number of files inside (You can use tool like Beyond Compare to do the hard work of comparing).</li>
<li>In my case, x86 package is missing one file, which is e_sqlite3.dll. This is the problem.</li>
</ol>
<p>Fast forward, I recently moved the reference of SQLite library in the project from Visual Studio SQLite Extension to nuget package for DevOps purposes. I though that was the problem, but it wasn&#8217;t. Actually it was just a simple miss selection that I wasn&#8217;t notice when create app packages (I don&#8217;t even remember I changed them). Under the x86 architecture, the solution configuration was changed from &#8220;<strong>Release (x86)</strong>&#8221; to &#8220;<strong>Release (Any CPU)</strong>&#8220;. That is the problem. Switching back to <strong>&#8220;Release (x86)&#8221;</strong> and the problem go away.</p>
<p><img loading="lazy" data-attachment-id="4156" data-permalink="https://ooiks.com/2019/01/18/uwp-app-manifest-resources-tests-failed-the-size-restrictions/x86_anycpu_package/" data-orig-file="https://ooiks.com/wp-content/uploads/2019/01/x86_anycpu_package.png" data-orig-size="798,687" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="x86_anycpu_package" data-image-description="" data-image-caption="" data-large-file="https://ooiks.com/wp-content/uploads/2019/01/x86_anycpu_package.png?w=700" class="alignnone size-full wp-image-4156" src="https://ooiks.com/wp-content/uploads/2019/01/x86_anycpu_package.png" alt="x86_anyCPU_package.PNG" width="798" height="687" srcset="https://ooiks.com/wp-content/uploads/2019/01/x86_anycpu_package.png 798w, https://ooiks.com/wp-content/uploads/2019/01/x86_anycpu_package.png?w=150&amp;h=129 150w, https://ooiks.com/wp-content/uploads/2019/01/x86_anycpu_package.png?w=300&amp;h=258 300w, https://ooiks.com/wp-content/uploads/2019/01/x86_anycpu_package.png?w=768&amp;h=661 768w" sizes="(max-width: 798px) 100vw, 798px" /></p>
<p>Gosh, this error really caught me out of no where. Wasted a day staring on the app packaging.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2019/01/18/uwp-app-manifest-resources-tests-failed-the-size-restrictions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4150</post-id>
		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>

		<media:content url="https://ooiks.com/wp-content/uploads/2019/01/x86_anycpu_package.png" medium="image">
			<media:title type="html">x86_anyCPU_package.PNG</media:title>
		</media:content>
	</item>
		<item>
		<title>Android App Crash &#038; Reboot OS / Phone</title>
		<link>https://ooiks.com/2019/01/14/android-app-crash-reboot-os-phone/</link>
					<comments>https://ooiks.com/2019/01/14/android-app-crash-reboot-os-phone/#respond</comments>
		
		<dc:creator><![CDATA[Ooi Keng Siang]]></dc:creator>
		<pubDate>Mon, 14 Jan 2019 02:02:38 +0000</pubDate>
				<category><![CDATA[Xamarin]]></category>
		<category><![CDATA[Android]]></category>
		<guid isPermaLink="false">http://ooiks.com/?p=4121</guid>

					<description><![CDATA[I&#8217;m been spending a whole weekend trying to hunt down a crash reported by one of my user who is running Samsung J3 on Android Oreo 8.1. The app launch then crash. It also bring down the whole Android OS and rebooted the phone. This is very unusual and because app crash normally won&#8217;t bring &#8230; <a href="https://ooiks.com/2019/01/14/android-app-crash-reboot-os-phone/" class="more-link">Continue reading <span class="screen-reader-text">Android App Crash &#38; Reboot OS /&#160;Phone</span></a>]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m been spending a whole weekend trying to hunt down a crash reported by one of my user who is running Samsung J3 on Android Oreo 8.1. The app launch then crash. It also bring down the whole Android OS and rebooted the phone. This is very unusual and because app crash normally won&#8217;t bring down the whole OS.</p>
<p>No crash report recorded on App Center (crash analytical tool I used) or Google Play Console which is understandable because whole OS is down). This make the debugging almost impossible since I cannot duplicate this on my phone nor emulator I tried. Since only 1 user reported, I suspect this is very much a isolated case.</p>
<p>After some deep search on the internet. It seem like Samsung Android phone have this cache partition that help app launch faster by caching some data in it. Some time it will become corrupted and causing random problem. Since wiping the cache partition doesn&#8217;t wipe any of the user data, I tell my user to give it a try. It work!</p>
<p>Here are the post on how to wipe the cache partition: <a href="https://us.community.samsung.com/t5/Phones/How-to-wipe-the-Cache-Partition-on-your-phone-or-tablet/td-p/12662" target="_blank" rel="noopener">https://us.community.samsung.com/t5/Phones/How-to-wipe-the-Cache-Partition-on-your-phone-or-tablet/td-p/12662</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://ooiks.com/2019/01/14/android-app-crash-reboot-os-phone/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4121</post-id>
		<media:content url="https://0.gravatar.com/avatar/3e905209bd5c586e9edb53285480ce97bfaa25c63b483826b6158d23de9d51d7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ooikengsiang</media:title>
		</media:content>
	</item>
	</channel>
</rss>
