{"id":6063,"date":"2025-06-04T20:47:01","date_gmt":"2025-06-04T12:47:01","guid":{"rendered":"http:\/\/blog.coolcoding.cn\/?p=6063"},"modified":"2025-06-04T21:04:43","modified_gmt":"2025-06-04T13:04:43","slug":"%e6%90%ad%e5%bb%ba%e9%b8%bf%e8%92%99%e5%9b%a2%e7%bb%93%e6%9e%84%e5%bb%ba%e6%b5%81%e6%b0%b4%e7%ba%bf","status":"publish","type":"post","link":"https:\/\/blog.coolcoding.cn\/?p=6063","title":{"rendered":"\u642d\u5efa\u9e3f\u8499+\u56e2\u7ed3\u6784\u5efa\u6d41\u6c34\u7ebf"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Jenkins\u5b89\u88c5Unity3d\u63d2\u4ef6<\/h1>\n\n\n\n<p>\u5728Jenkins\u6307\u5b9a\u5b89\u88c5\u8def\u5f84(ManagerJenkins\/Tools\/Unity3d installations)\u65f6<\/p>\n\n\n\n<p>\u9700\u8981\u6307\u5b9a\u56e2\u7ed3\u7684\u5b89\u88c5\u76ee\u5f55\uff0c\u4f8b\u5982\uff1a<\/p>\n\n\n\n<p><code>C:\\Program Files\\Tuanjie\\Hub\\Editor\\2022.3.48t7<\/code><\/p>\n\n\n\n<p>\u8fd9\u4e2a\u76ee\u5f55\u662f\u4e0d\u542bEditor\u76ee\u5f55\u7684\uff1b\u5b9a\u4f4d\u5230Editor\/Tuanjie.exe\uff0c\u628aEditor\/Tuanjie.exe\u62f7\u8d1d\u4e00\u4efd\u547d\u540d\u4e3aUnity.exe\uff0c\u4f7f\u5f97\u63d2\u4ef6\u53ef\u4ee5\u4ee5Unity\u7684\u65b9\u5f0f\u8fd0\u884c\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u4f7f\u7528Tuanjie\u8fdb\u884c\u6784\u5efa<\/h1>\n\n\n\n<p>\u4e0eUnity\u7c7b\u578b\uff0c\u5728\u6784\u5efa\u4efb\u52a1\u4e2d\uff0c\u6dfb\u52a0 Invoke Unity3d Editor\u6b65\u9aa4<\/p>\n\n\n\n<p>\u7136\u540e\u6307\u5b9aEditor command line arguments\uff0c\u4f8b\u5982\uff1a<\/p>\n\n\n\n<p><code>CustomArgsString -batchmode -quit -silent-crashes -projectPath d:\\tuanjie -executeMethod Jenkins.BuildHarmony<\/code><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">[\u53ef\u90091]\u6784\u5efa\u540e\u5904\u7406\u811a\u672c<\/h1>\n\n\n\n<p>\u53ef\u4ee5\u4e3a\u56e2\u7ed3\u5f15\u64ce\u6dfb\u52a0\u6784\u5efa\u540e\u5904\u7406<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#if UNITY_EDITOR &amp;&amp; UNITY_OPENHARMONY\nusing System.Collections.Generic;\nusing UnityEngine;\n\n\/\/ \u56e2\u7ed3-\u9e3f\u8499\u540e\u5904\u7406\n&#91;UnityEditor.InitializeOnLoad]\npublic class BuildOpenHarmonyPost : UnityEditor.OpenHarmony.IPostGenerateOpenHarmonyProject\n{\n   \n    public int callbackOrder =&gt; 0;\n    public void OnPostGenerateOpenHarmonyProject(string outputDir)\n    {\n        var streamingAssetsDir= $\"{outputDir}\/src\/main\/resources\/rawfile\/Data\/StreamingAssets\/\";\n        \/\/ \u5bf9\u8f93\u51fa\u7684StreamingAssets\u76ee\u5f55\u8fdb\u884c\u540e\u5904\u7406\u64cd\u4f5c\n    }\n}\n\n#endif<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">[\u53ef\u90092]\u6784\u5efa\u540e\u5904\u7406\u64cd\u4f5c<\/h1>\n\n\n\n<p>\u5728BuildPipeline.BuildPlayer\u4e4b\u540e\uff0c\u53ef\u4ee5\u62f7\u5165\u50cfSDK\u4e4b\u7c7b\u7684\u6587\u4ef6<\/p>\n\n\n\n<p>\u8003\u8651\u53ef\u4ee5\u62f7\u5165\uff1a<\/p>\n\n\n\n<p>1\u3001build-profile.json5\u4e2d\u542b\u6709\u7b7e\u540d\u4fe1\u606f\uff0c\u53ef\u4ee5\u76f4\u63a5\u62f7\u8fc7\u53bb\u4f7f\u7528\uff08\u8bc1\u4e66\u76f4\u63a5\u62f7\u5230\u6839\u76ee\u5f55\u4e2d\uff0c\u4f7f\u7528\u76f8\u5bf9\u8def\u5f84\uff09<\/p>\n\n\n\n<p>2\u3001entry\\src\\main\\module.json5 \u542b\u6709\u5e94\u7528\u914d\u7f6e\u4fe1\u606f\uff0c\u53ef\u4ee5\u76f4\u63a5\u62f7\u8fc7\u53bb\u4f7f\u7528<\/p>\n\n\n\n<p>3\u3001entry\\src\\main\\ets\\ability\\\u4e2d\u7684ets\u6587\u4ef6\uff0c\u53ef\u4ee5\u914d\u7f6e\u597d\u62f7\u8fc7\u53bb<\/p>\n\n\n\n<p>4\u3001\u6839\u76ee\u5f55\u7684oh_modules\u6a21\u5757\uff0c\u53ef\u4ee5\u5b89\u88c5\u597d\u62f7\u8fc7\u53bb<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u4f7f\u7528\u547d\u4ee4\u884c\u6784\u5efa<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\u5fc5\u8981\u73af\u5883<\/h2>\n\n\n\n<p>DevEco Studio 5.0.4 Release, Build Version: 5.0.11.100, built on March 28, 2025; <br>Runtime version: 17.0.12+1-b1087.25 amd64<br>VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o<\/p>\n\n\n\n<p>\u57fa\u4e8eJDK17\uff0c\u6240\u4ee5\u7cfb\u7edf\u7684PATH\u8def\u5f84\u4e2d\uff0c\u4e00\u5b9a\u8981\u4f18\u5148\u8bbe\u7f6e\u597dJDK17\uff0c\u5426\u5219\u4f1a\u7f16\u8bd1\u5931\u8d25\uff1b<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u547d\u4ee4\u884c<\/h2>\n\n\n\n<p>CD\u5230\u9879\u76ee\u8f93\u51fa\u76ee\u5f55\uff0c\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hvigorw assembleHap --mode module -p product=default -p buildMode=debug --no-daemon<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u7b7e\u540d<\/h3>\n\n\n\n<p>\u751f\u6210hap\u540e\uff0c\u8981\u7b7e\u540d\uff0c\u5426\u5219\u65e0\u6cd5\u5b89\u88c5<\/p>\n\n\n\n<p><code>https:\/\/developer.huawei.com\/consumer\/cn\/doc\/harmonyos-guides\/ide-command-line-building-app<\/code><\/p>\n\n\n\n<p>\u9700\u8981\u628ahap-sign-tool.jar\u8fd9\u4e2a\u6587\u4ef6\u62f7\u5230\u76ee\u5f55\u4e2d\uff0c\u7136\u540e\u6267\u884c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>java -jar hap-sign-tool.jar sign-app -keyAlias \"xxx\" -signAlg \"SHA256withECDSA\" -mode \"localSign\" -appCertFile \"xxx.cer\" -profileFile \"xxx.p7b\" -inFile \"entry\/build\/default\/outputs\/default\/entry-default-unsigned.hap\" -keystoreFile \"xxx.p12\" -outFile \"entry\/build\/default\/outputs\/default\/entry-default-signed.hap\" -keyPwd \"xxx\" -keystorePwd \"xxx\" -signCode \"1\"\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jenkins\u5b89\u88c5Unity3d\u63d2\u4ef6 \u5728Jenkins\u6307\u5b9a\u5b89\u88c5\u8def\u5f84(ManagerJenkins\/Tools\/ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts\/6063"}],"collection":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6063"}],"version-history":[{"count":13,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts\/6063\/revisions"}],"predecessor-version":[{"id":6078,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts\/6063\/revisions\/6078"}],"wp:attachment":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}