এক্সকোড to এ স্যুইচ করার পরে, অ্যাপের আকারটি 9 এমবি থেকে 60 এমবিতে বেড়েছে, সেখানে কি কোনও সমাধান আছে?


96

আমি একটি গুরুর ইতিহাসের পিছনে চলে যাচ্ছি একটি ফাইলের আকারের পরিবর্তনের কারণটি খুঁজে পেতে, তবে কেবলমাত্র আসল কারণটি আমি Xcode 6 থেকে Xcode 7 GM তে স্যুইচ করতে পারি।

আমি খুঁজে পেয়েছি যে এইগুলি রিলিজ বিল্ড কনফিগারেশনে সংরক্ষণাগার অপারেশন .ipaথেকে তৈরি করা শীর্ষ 10 ফাইল আকারের অবদানকারী :

$ unzip -lv Roger\ Release.ipa | sort -k +3nr | head
41802768  Defl:N 16887199  60%  09-14-15 23:47  dc24cdc1  Payload/Roger.app/Frameworks/libswiftCore.dylib
41802400  Defl:N 16886076  60%  09-06-15 18:33  f939ea6a  SwiftSupport/iphoneos/libswiftCore.dylib
11184032  Defl:N  5915625  47%  09-14-15 23:48  6ceac4a2  Payload/Roger.app/Roger
 6399584  Defl:N  2670275  58%  09-14-15 23:47  0ac52d3f  Payload/Roger.app/Frameworks/libPhoneNumber_iOS.framework/libPhoneNumber_iOS
 5410384  Defl:N  2334189  57%  09-14-15 23:47  7a8cb03f  Payload/Roger.app/Frameworks/Alamofire.framework/Alamofire
 4521904  Defl:N  2292789  49%  09-14-15 23:47  95da0882  Payload/Roger.app/Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit
 4731552  Defl:N  1926357  59%  09-14-15 23:48  e05337de  Payload/Roger.app/Frameworks/libswiftFoundation.dylib
 4731168  Defl:N  1925355  59%  09-06-15 18:33  19a5c3c4  SwiftSupport/iphoneos/libswiftFoundation.dylib
 2659232  Defl:N  1232897  54%  09-14-15 23:47  1a53a401  Payload/Roger.app/Frameworks/AFNetworking.framework/AFNetworking
 1196624  Defl:N   545343  54%  09-14-15 23:47  19a063cb  Payload/Roger.app/Frameworks/Bolts.framework/Bolts

এখন পর্যন্ত বৃহত্তম ফাইল দুটি (কিছুটা আলাদা) libswiftCore.dylibফাইল যা মোট 32 এমবি এর বেশি। এক্সকোড by দ্বারা নির্মিত বান্ডেলে এই দুটি ফাইল মোট 3 এমবি।

সুতরাং প্রশ্ন # 1 হ'ল কেন সুইফট কোর ফাইলগুলি সেখানে দু'বার? ( এম্বেড থাকা সামগ্রীতে সুইফট কোডটি নম্বরে সেট করা আছে )।

এবং # 2 প্রশ্নটি হল: কী হয়েছে? কেন সুইফট কোর আকার 15 এমবি দ্বারা বৃদ্ধি পেয়েছে? এটি কি স্থায়ী?

কিছু অতিরিক্ত নোট:

  • এটি এমন একটি প্রকল্প যা পুরোপুরি উদ্দেশ্যমূলক-সি ছিল তবে এখন বেশিরভাগ সুইফ্ট। সংজ্ঞায়িত মডিউল সেটিং সেট করা হয় হ্যাঁ
  • প্রকল্পটি use_frameworks!সেট সহ কোকোপড ব্যবহার করে।
  • আমি একাধিক ডিভাইস এবং iOS সংস্করণে টেস্টফ্লাইট থেকে প্রকৃত ডাউনলোডের আকারটি নিশ্চিত করেছি এবং এটি 30-60 মেগাবাইটের মধ্যে রয়েছে (সম্ভবত পার্থক্যটি অ্যাপ্লিকেশন কাটার কারণে)। এটি 9 এমবি ব্যবহৃত হত used

4
এক্সকোড 7 অ্যাপ্লিকেশন স্লাইসিং ব্যবহার করে, ডাউনলোডের আকারটি সম্ভবত আলাদা হবে, সম্ভবত এটি আরও কমবে। আমি এই সম্পর্কে চিন্তা করবেন না।
আদম

6
@ অ্যাডাম: এটি ঘটনা নয়। মোতায়েন করা সংস্করণটি ডিভাইসের উপর নির্ভর করে পরিবর্তিত হয়, তবে এ পর্যন্ত আমি আইফোন 5 এস-তে 30 এমবি এবং আইফোন 6-তে 60 এমবি দেখেছি Installation ইনস্টলেশনের সময়টি লক্ষণীয়ভাবে বেড়েছে। এটি 9 এমবি ব্যবহার করার সময় অবশ্যই উদ্বেগের বিষয়।
Blixt

4
আসলে 30 বনাম 60 মেগাবাইট পার্থক্যটি সম্ভবত আইফোন 5 এস আইওএস 9.1 এবং আইফোন 6 আইওএস 8 এর কারণে রয়েছে তবে সমস্ত অ্যাপ ব্যবহারকারীরা আইওএস 9-তে উন্নীত হলেও, 30 এমবি এখনও 9 থেকে খুব বড় বৃদ্ধি এমবি
Blixt

4
আপনি কি টেস্টফ্লাইটের মাধ্যমে মোতায়েন করেছেন? অ্যাপ্লিকেশনগুলির পাতলা অ্যাপল সার্ভারগুলিতে সম্পন্ন হয়েছে, সুতরাং আপনি টেস্টফ্লাইট / আইটিউনস এর মাধ্যমে ইনস্টল না করা পর্যন্ত আপনি হ্রাস করা আকারটি দেখতে পারবেন না বলে আমি মনে করি।
মিরেকে

4
টেস্টফ্লাইটে আপলোড করার পরে, আমার অ্যাপ্লিকেশনটির আকার 74MB থেকে 9.6MB তে হ্রাস পেয়েছে, তাই চিন্তা করবেন না
Gintama

উত্তর:


27

সম্ভবত বিটকোডের কারণে ঘটেছিল, আমি একই ধরণের বৃদ্ধি দেখতে পেয়েছি তবে একবার অ্যাপ স্টোর থেকে স্থাপন করা অ্যাপের আকারটি আসলে বাড়েনি।

আপনি নিজের অ্যাপ্লিকেশন এবং অন্যান্য লক্ষ্যগুলিতেও বিটকোড অক্ষম করতে পারেন এবং আপনার সঙ্কুচিত হওয়া উচিত।


আমি অ্যাপল টেস্টফ্লাইট থেকে অ্যাপটি ডাউনলোডের আকারটি 9 এমবির পরিবর্তে 30 থেকে 60 মেগাবাইট হওয়ার বিষয়ে নিশ্চিত করেছি। আমি মনে করি না এটি একবার অ্যাপ স্টোরে আসার পরে এটি পরিবর্তিত হবে কারণ তারা সম্ভবত একই বিতরণ প্রক্রিয়াটি সম্ভবত ব্যবহার করে। আমি বিটকোড অক্ষম করার চেষ্টা করব।
Blixt

বিল্ড এবং প্রকাশের পদক্ষেপগুলিতে বিটকোড এবং ডিবাগ সিম্বলগুলি অক্ষম করা এবং বিল্ড সংস্করণ সংরক্ষণাগার স্থাপনে এখনও প্রতি দুটি libswiftCore.dylibMB 40 এমবি (16 ডলার সংকুচিত) এ একই দুটি ফাইল অন্তর্ভুক্ত রয়েছে । আমি টেস্টফ্লাইটের মাধ্যমে পুরো মোতায়েনের বিষয়টি নিশ্চিত করতে পারি নি, তবে যেহেতু এই বিশাল ফাইলগুলি এখনও আইপিএর অংশ, আমি সন্দেহ করি যে ফাইল আকারে তাদের অবদান পরিবর্তন হবে। সামগ্রিক আকার প্রায় 10 এমবি দ্বারা সঙ্কুচিত, যা সম্ভবত বেশিরভাগ ক্ষেত্রে ক্র্যাশ প্রতীক সমর্থন নেওয়া থেকে আসে।
Blixt

4
আমি কেবল ব্যক্তিগত অভিজ্ঞতা বন্ধ করে দিচ্ছি, আমার .xcarive এর প্রাক-এক্সকোড 7 এর চেয়ে এখন অনেক বড় বড় তবে অ্যাপ্লিকেশন স্টোর ডাউনলোড এখনও একই আকারে যদি রিসোর্স পাতলা ইত্যাদি কারণে সামান্য ছোট না হয়
ডেভিড রোথেরা

10
এখনই দেখছি, টেস্টফ্লাইটের বান্ডিলটি 33MB ছিল এবং অ্যাপস্টোরের স্ব-নির্মাণের জন্য এটি 10.5MB, এটি দেখায় যে পাতলা টেস্টফ্লাইট বিল্ডগুলিতে করা হয়নি।
ডেভিড রোথেরা

ঠিক আছে, এটা জেনে রাখা ভাল। আমি অ্যাপ স্টোরের মাধ্যমে অ্যাপটি চালাব এবং সর্বোত্তম আশা করব!
Blixt

19

আমি অনেকগুলি সেটিংস এবং সংমিশ্রণ পরীক্ষা করে দেখছি এবং মনে হচ্ছে এক্সকোড 7 দ্বারা নির্মিত বান্ডিলগুলির ফাইলের আকারটি ডিভাইস এবং আইওএসের সংস্করণ উভয়ের উপর নির্ভর করে অনেক আলাদা হয়। এছাড়াও, টেস্টফ্লাইট বিল্ডগুলি এখন আগের তুলনায় বিশাল, তবে সুসংবাদটি হ'ল একবার অ্যাপ স্টোরের উপরে খুব বেশি বৃদ্ধি হয়নি (যদিও আমি আগের তুলনায় প্রায় 1-2 এমবি বান্ডেলের আকারে যুক্ত দেখছি) ।

টেস্টফ্লাইট, অ্যাপ স্টোর এবং ডিভাইসগুলির মধ্যে পার্থক্য দেখাতে এখানে কয়েকটি নমুনা দেওয়া হয়েছে:

আইওএস 9.1
35.6 এমবিতে টেস্টফ্লাইট, আইফোন 5 এস

আইওএস 8.4.1
70.1 এমবিতে টেস্টফ্লাইট, আইফোন 6

অ্যাপ স্টোর
11.8 এমবি

অ্যাপ স্টোরের আকারটি আমি পরীক্ষিত সমস্ত ডিভাইসে অভিন্ন ছিল। যদিও আমি এটি আইফোন 6 প্লাসে পরীক্ষা করে দেখিনি, এটি খুব সম্ভব যে বান্ডিল আকারটি আরও বড় হবে যেহেতু এটি @ 3x সম্পদ ব্যবহার করে।


11

বিস্কোড অন্তর্ভুক্তির কারণে সুইট ডাইলিবগুলির আকার এবং আপনার নিজস্ব কোড .xcarchive এ উল্লেখযোগ্য পরিমাণে বড় হবে এবং আপনি যখন স্টোর বিতরণের জন্য রফতানি করবেন তখন এটি প্রত্যাশিত। এই অতিরিক্ত আকারটি আসলে আপনার ব্যবহারকারীদের কাছে কী সরবরাহ করা হবে তা প্রতিফলিত হবে না, সুতরাং এটি কোনও সমস্যা হওয়া উচিত নয়। আপনি যখন স্টোরটিতে আপনার অ্যাপ্লিকেশনটি জমা দিন, দোকানটি বিটকোডটি সরিয়ে ফেলার জন্য এটি প্রক্রিয়া করবে এবং আইপিএর সেই প্রক্রিয়াজাত সংস্করণটি আপনার ব্যবহারকারীরা ডাউনলোড করবেন।

যদি আপনি আপনার সংরক্ষণাগার থেকে কোনও স্টোর রফতানি (যেমন অ্যাড-হক স্থাপনার জন্য সংরক্ষণ করুন) ব্যতীত কোনও ধরণের রফতানি করেন তবে আমরা স্থানীয়ভাবে বিটকোড বের করব (এবং আপনার বাইনারিগুলি প্রথমে বিটকোড থেকে পুনরায় সংকলন করব, যদি আপনি এই বিকল্পটি রফতানীতে যাচাই করে ফেলে থাকেন তবে ওয়ার্কফ্লো, দোকানে কী ঘটবে তা পুনরায় তৈরি করতে), যাতে আপনি দেখতে পারবেন যে আপনার অ্যাপ্লিকেশনটি আসলে কত বড় হবে। টেস্টফ্লাইটটি আপনার জন্য বিটকোডও সরিয়ে ফেলবে এবং আপনাকে আপনার সত্যিকারের অ্যাপ্লিকেশন আকারটি দেখিয়ে দেবে।

আপনার সচেতন হওয়া উচিত যে অ্যাপ্লিকেশনটির আকার অ্যাপ্লিকেশন পাতলা করার মাধ্যমেও হ্রাস করা যেতে পারে, যা আপনি https://developer.apple.com/library/ios/docamentation/IDEs/Conceptual/appDistribrationGuide/Intr Productions/Introduction.html এ পড়তে পারেন । আপনার অ্যাপ্লিকেশনের প্রতিটি পাতলা রূপের আকারটি দেখতে আপনি সম্ভবত অ্যাড-হক রফতানি করতে চান।


6

এম্বেড বিটকোড কারণ।

ধরে নিই যে আপনি ENABLE_BITCODE অক্ষম করতে চান না, আপনি ডিবাগ প্রতীকগুলি কেটে ফেলতে পারেন।

বিটকোড এম্বেড করার আগে স্ট্রিপিং ডিবাগ প্রতীক হিসাবে http://oguzbastemur.blogspot.com/2015/09/xcode-7-and-increaded-binary-size.html দেখুন আপনি যে বিকল্পগুলি করতে পারেন তার মধ্যে একটি।


4
এর অর্থ এই নয় যে আপনি প্রতীকী ক্র্যাশ প্রতিবেদন পাবেন না?
আইউলিয়ান ওনোফ্রেই

0

আমাদের সুইফট ১.২ নিয়েও এই সমস্যা ছিল। দেখুন কিভাবে SwiftSupport লাইব্রেরি প্রতিরোধ দুইবার অন্তর্ভুক্ত করা এই একই সমস্যা সম্পর্কে আমার মূল প্রশ্নের জন্য।

আমি নিশ্চিত যে এটি একটি সরঞ্জামচেন সমস্যা in

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.