<\/figure>\n<\/p>\n\u8ff0\u6587\u4ef6\u3002<\/p>\n
1.2 \u51c6\u5907\u5e94\u7528\u7a0b\u5e8f\u5305<\/p>\n
\u5c06\u5e94\u7528\u7a0b\u5e8f\u6253\u5305\u6210ipa\u683c\u5f0f\uff0c\u5e76\u5c06\u5176\u4e0a\u4f20\u81f3\u670d\u52a1\u5668\u6216\u4e91\u5b58\u50a8\u3002<\/p>\n
2.\u524d\u7aef\u9875\u9762\u4e0a\u4f20\u5e94\u7528\u7a0b\u5e8f\u5305\u548c\u76f8\u5173\u4fe1\u606f<\/p>\n
2.1 \u521b\u5efa\u4e0a\u4f20\u9875\u9762<\/p>\n
\u5728\u524d\u7aef\u9875\u9762\u4e0a\u521b\u5efa\u4e0a\u4f20\u9875\u9762\uff0c\u5305\u542b\u4ee5\u4e0b\u5185\u5bb9\uff1a<\/p>\n
– \u5e94\u7528\u7a0b\u5e8f\u5305\u6587\u4ef6\u9009\u62e9\u6846<\/p>\n
– \u5e94\u7528\u7a0b\u5e8f\u540d\u79f0\u3001\u7248\u672c\u53f7\u3001Bundle ID\u7b49\u4fe1\u606f\u7684\u8f93\u5165\u6846<\/p>\n
– \u4e0a\u4f20\u6309\u94ae<\/p>\n
2.2 \u5b9e\u73b0\u4e0a\u4f20\u529f\u80fd<\/p>\n
\u4f7f\u7528HTML5\u4e2d\u7684File API\u548cFormData\u5bf9\u8c61\uff0c\u5b9e\u73b0\u5e94\u7528\u7a0b\u5e8f\u5305\u548c\u76f8\u5173\u4fe1\u606f\u7684\u4e0a\u4f20\u529f\u80fd\u3002<\/p>\n
3.\u540e\u53f0\u670d\u52a1\u63a5\u6536\u4e0a\u4f20\u7684\u5e94\u7528\u7a0b\u5e8f\u5305\u548c\u76f8\u5173\u4fe1\u606f<\/p>\n
3.1 \u521b\u5efa\u540e\u53f0\u670d\u52a1<\/p>\n
\u4f7f\u7528Web\u6846\u67b6\uff08\u5982Flask\u3001Django\u7b49\uff09\u521b\u5efa\u540e\u53f0\u670d\u52a1\uff0c\u5b9e\u73b0\u4ee5\u4e0b\u529f\u80fd\uff1a<\/p>\n
– \u63a5\u6536\u4e0a\u4f20\u7684\u5e94\u7528\u7a0b\u5e8f\u5305\u548c\u76f8\u5173\u4fe1\u606f<\/p>\n
– \u89e3\u6790\u5e94\u7528\u7a0b\u5e8f\u5305\u548c\u76f8\u5173\u4fe1\u606f<\/p>\n
– \u8c03\u7528xcrun\u547d\u4ee4\u884c\u5de5\u5177\u8fdb\u884c\u6253\u5305\u548c\u7b7e\u540d<\/p>\n
– \u8fd4\u56de\u751f\u6210\u7684.ipa\u6587\u4ef6<\/p>\n
3.2 \u89e3\u6790\u5e94\u7528\u7a0b\u5e8f\u5305\u548c\u76f8\u5173\u4fe1\u606f<\/p>\n
\u4f7f\u7528Python\u7684plist\u5e93\u89e3\u6790\u5e94\u7528\u7a0b\u5e8f\u5305\u4e2d\u7684Info.plist\u6587\u4ef6\uff0c\u83b7\u53d6\u5e94\u7528\u7a0b\u5e8f\u540d\u79f0\u3001\u7248\u672c\u53f7\u3001Bundle ID\u7b49\u4fe1\u606f\u3002<\/p>\n
3.3 \u8c03\u7528xcrun\u547d\u4ee4\u884c\u5de5\u5177\u8fdb\u884c\u6253\u5305\u548c\u7b7e\u540d<\/p>\n
\u4f7f\u7528Python\u7684subprocess\u5e93\uff0c\u8c03\u7528xcrun\u547d\u4ee4\u884c\u5de5\u5177\u8fdb\u884c\u6253\u5305\u548c\u7b7e\u540d\u3002\u5177\u4f53\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n
\/usr\/bin\/xcrun -sdk iphoneos PackageApplication -v path_to_app -o path_to_ipa –sign “iPhone Distribution: Your Name (XXXXXXXXXX)” –embed path_to_provisioning_profile<\/p>\n
\u5176\u4e2d\uff0cpath_to_app\u4e3a\u5e94\u7528\u7a0b\u5e8f\u5305\u7684\u8def\u5f84\uff0cpath_to_ipa\u4e3a\u751f\u6210\u7684.ipa\u6587\u4ef6\u7684\u8def\u5f84\uff0c”iPhone Distribution: Your Name (XXXXXXXXXX)”\u4e3a\u8bc1\u4e66\u7684\u540d\u79f0\uff0cpath_to_provisioning_profile\u4e3a\u63cf\u8ff0\u6587\u4ef6\u7684\u8def\u5f84\u3002<\/p>\n
4.\u540e\u53f0\u670d\u52a1\u5c06\u751f\u6210\u7684.ipa\u6587\u4ef6\u8fd4\u56de\u7ed9\u524d\u7aef\u9875\u9762<\/p>\n
\u5c06\u751f\u6210\u7684.ipa\u6587\u4ef6\u8fd4\u56de\u7ed9\u524d\u7aef\u9875\u9762\uff0c\u4f9b\u7528\u6237\u4e0b\u8f7d\u548c\u5b89\u88c5\u3002<\/p>\n
\u4ee5\u4e0a\u5c31\u662f\u7f51\u9875\u751f\u6210.ipa\u7684\u539f\u7406\u548c\u8be6\u7ec6\u6b65\u9aa4\u3002\u901a\u8fc7Web\u524d\u7aef\u6280\u672f\u548c\u540e\u53f0\u670d\u52a1\u7684\u7ed3\u5408\uff0c\u5b9e\u73b0\u5e94\u7528\u7a0b\u5e8f\u7684\u6253\u5305\u548c\u7b7e\u540d\uff0c\u4e3aiOS\u5f00\u53d1\u8005\u63d0\u4f9b\u4e86\u4e00\u79cd\u65b9\u4fbf\u5feb\u6377\u7684\u53d1\u5e03\u5e94\u7528\u7a0b\u5e8f\u7684\u65b9\u5f0f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"
\u5728iOS\u5f00\u53d1\u4e2d\uff0c.ipa\u662f\u4e00\u79cd\u5b89\u88c5\u5305\u6587\u4ef6\u683c\u5f0f\uff0c\u53ef\u4ee5\u5728iPhone\u3001iPad\u7b49iOS\u8bbe\u5907\u4e0a\u5b89\u88c5\u548c\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u3002\u5bf9\u4e8e\u5f00\u53d1\u8005\u800c\u8a00\uff0c\u751f\u6210.ipa\u6587\u4ef6\u662f\u53d1\u5e03\u5e94\u7528\u7a0b\u5e8f\u7684\u5fc5\u8981\u6b65\u9aa4\u4e4b\u4e00\u3002\u672c\u6587\u5c06\u4ecb\u7ecd\u7f51\u9875\u751f\u6210.ipa\u7684<\/p>\n","protected":false},"author":25,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[6748,26112,12,199,9790],"topic":[],"class_list":["post-28013","post","type-post","status-publish","format-standard","hentry","category-kaifaapp","tag-app-","tag-dz-tabbar","tag-12","tag-199","tag-9790"],"_links":{"self":[{"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/posts\/28013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/comments?post=28013"}],"version-history":[{"count":1,"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/posts\/28013\/revisions"}],"predecessor-version":[{"id":28070,"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/posts\/28013\/revisions\/28070"}],"wp:attachment":[{"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/media?parent=28013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/categories?post=28013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/tags?post=28013"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.zhidianwl.net\/zhidianwl\/wp-json\/wp\/v2\/topic?post=28013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}