{"id":246,"date":"2019-10-07T16:12:27","date_gmt":"2019-10-07T16:12:27","guid":{"rendered":"https:\/\/www.roseverte.net\/wpblog\/?p=246"},"modified":"2019-10-28T08:44:19","modified_gmt":"2019-10-28T08:44:19","slug":"things-you-need-to-be-cautious-regarding-mac-apps-notarization","status":"publish","type":"post","link":"https:\/\/roseverte.net\/wpblog\/?p=246","title":{"rendered":"Things you need to be cautious regarding Mac Apps notarization."},"content":{"rendered":"<p>After googling, finding more and more info and some deep search, I found that the past fail I experienced with the Mac Apps notarization was not because of the notarization itself, but because some progress I did after the notarization. Below I listed some stuff that you need to pay attention in regards to notarize Mac Apps, especially if you&#8217;re using Adobe Air like I did. Btw, I&#8217;m not really a programmer, so sorry if some of the text below sounds silly to some of you. I&#8217;m using Mac 10.13.6 with xCode 10.1 by the way, since my Mac is very old (2012) and I can&#8217;t install any newer OS.<\/p>\n<h4>1. Don&#8217;t use Steam Content Prep.<\/h4>\n<p>My first fault was because I use Content Prep from Steam SDK as a habit to prepare the Mac version for Steam. It seems after the Content Prep &#8220;warp&#8221; the notarization will be annulled, and if we do the opposite (warp first then notarize the warped app), the notarization will be failed. Just, don&#8217;t use this tool.<\/p>\n<h4>2. Don&#8217;t forget ENTITLEMENT.PLIST<\/h4>\n<p>This is the culprit which caused me to redo all of my notarization!!!<br \/>\nYou can proceed the notarization without using this, but Steam API requires a special setting on entitlement.plist to work (a permission for the dylib file)!! Also, if your game is using Java (as far as I know both of Adobe Air and renpy is using java to build, so I added Java related permission here just for in case). Anyway, it&#8217;s a simple xml file, yet it&#8217;s very important!!<\/p>\n<h4>3. Make sure the file name inside MacOS folder has no space (inside the .app bundle).<\/h4>\n<p>So after my first &#8220;success&#8221; notarization progress, I tested the file (it was fine) then uploaded the file to Steam, and downloaded it to test again if it works but&#8230; it&#8217;s failed. I somehow have already been suspicious with the file inside MacOS folder inside the app bundle, so I simply edit the file name and the game works again. But&#8212;the notarization was annulled. (You can check this by running xcrun stapler validate on Terminal.)<\/p>\n<p>To settle this, first I tried to re-notarize the file with edited name only, but then it caused more rejected notarization, and I realize that rebuild a whole new .app file is easier and faster. Just, especially for Adobe Air user, don&#8217;t add space within the name inside &lt;filename&gt; section.<\/p>\n<h4>4. Inside Resource folder is still editable (probably?) But not the one inside MacOS folder.<\/h4>\n<p>I tried to delete one file and added random folder inside Resource folder and it&#8217;s fine. But when I delete\/ edit the file name of the original file inside MacOS folder the notarization was annulled.<br \/>\nI haven&#8217;t checked the Resource folder thoroughly, so probably there&#8217;s still hidden rule in it.<\/p>\n<h4>5. Notarized the plugin first before the app is useless.<\/h4>\n<p>I noticed that the notarization fail report mostly mentioned about the plugin\/ ane I use, so I tried to notarize it first before using it to build the game, but it won&#8217;t do T_T just, notarize it once for all when the .app is done.<\/p>\n<h4>6. What the notarization based of?<\/h4>\n<p>Tbh I&#8217;m not really sure of this.<br \/>\nI have 3 files for East Tower &#8211; Kuon, for example, and they only different in languages. The final command on notarization is only &#8220;xcrun stapler staple xxx.app&#8221;, so at first I was wondered, how could they differ which xxx.app has been notarized, if there are three Kuon.app? But, they really can. I tried to notarized English version first, then I try to staple the Japanese version without the notarizing it, but it was failed (the English version notarization won&#8217;t be applied to the Japanese version), and it was the same when I tried to staple an earlier version of the English version. Only the correct .app file which has been through the notarization can be stapled.<\/p>\n<p>To put it shortly, there are still some mystery within this progress. I&#8217;m not really sure, but it should settle the notarization issue for now even if&#8230; well, it&#8217;s indeed taking time to notarize a game, especially a big one,\u00a0 as we need to upload a zip file to Apple server.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After googling, finding more and more info and some deep search, I found that the past fail I experienced with the Mac Apps notarization was not because of the notarization itself, but because some progress I did after the notarization. Below I listed some stuff that you need to pay attention in regards to notarize &hellip; <a href=\"https:\/\/roseverte.net\/wpblog\/?p=246\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Things you need to be cautious regarding Mac Apps notarization.<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","footnotes":""},"categories":[20],"tags":[30,31],"class_list":["post-246","post","type-post","status-publish","format-standard","hentry","category-experience","tag-mac","tag-notarization"],"_links":{"self":[{"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=\/wp\/v2\/posts\/246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=246"}],"version-history":[{"count":3,"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=\/wp\/v2\/posts\/246\/revisions"}],"predecessor-version":[{"id":255,"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=\/wp\/v2\/posts\/246\/revisions\/255"}],"wp:attachment":[{"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/roseverte.net\/wpblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}