سلام
اولین سوال!
تو اندریود میشه خیلی راحت با برنامه های مختلف اپی که نصب کردی و منتقل کنی به یه دیوایس دیگه!! خب میدونیم که اندروید هم یه جور لینوکسه!! منم هم با توجه به اینکه فک میکنم تنها کشوری هستیم که پول ترافیک میدیم خواستم که همین کار رو تو ابونتو هم انجام بدم که هی مجبور نصب برنامه ها نشم ولی خیلی خوب نشد!! به خاطر دیپندنسیها
خود برنامه رو میشه پکش کرد هم میشه سورسش و دانلود کرد یا اینکه نصب شده رو پک کرد ولی دیپندنسی ها ایراد داره!!
دوستان کیس راه حلی داره؟؟؟!!!
درود.
البته این نکته رو مد نظر داشته باشید که چون اندروید از کرنل لینوکس استفاده می کنه به این معنا نیست که مدیر بسته ها و نرم افزارهایی که براشون نوشته میشن یکسان هستند. زیاد به این نکته نمیپردازیم چون موضوع اصلی این نیست و توضیح بیشتر ممکنه باعث بشه مطلب اصلی کمتر مورد توجه قرار بگیره
شما وقتی یک پکیج رو دانلود می کنین، نیازمندی هاش هم همراهش دانلود میشن و بسته به تنظیمات ممکنه فایل های نصاب تا مدت زمانی در مسیر مورد نظر وجود داشته باشن. میتونین از این فایل ها بک آپ بگیرین و بعدا نصب کنید. عموما این فایل ها در مسیر:
/var/cache/apt/archives
هستند
---------
توضیح در ارتباط با دلیل وجود dependency در بسته ها : هر نرم افزاری که نیازمندی خاصی داره، نیازمندی رو از طریق فراخوانی فایل مورد نظر اعلام می کنه و نه از طریق بسته ها. به عنوان مثال نرم افزار X نیاز به فایل کتابخانه ی libsomthing.so.0 در مسیر /lib داره. حال مهم نیست که پکیج A چنین فایلی رو تامین می کنه یا پکیج B، مهم اینه که فایل libsomething.so.0 در همون محلی باشه که نرم افزار X داره فراخوانیش می کنه.
1 - یک راه اینه که ما در هنگام پکیج کردن نرم افزارامون بیایم این فایل های نیازمندی رو درون بسته قرار بدیم. اما این راه مناسبی نیست، چون این کتابخانه ها عموما اشتراکی بین چندین نرم افزار هستند و اگر فایل مورد نظر، دقیقا مطلوب نرم افزار خاصی نباشه، ممکنه نرم افزار به درستی کار نکنه. پس راه بهتر اینه که تا حد امکان پکیج ها فایل های یکسان در یک مسیر ایجاد نکنند، در نتیجه به جای اینکه تمامی فایل ها و کتابخانه هارو خود پکیج تامین کنه، میاد یه سری نیازمندی هارو در فایل بسته می نویسه تا تداخل رو تا حد امکان کمتر کنه.
2 - یک راه دیگه اینه که من بیام نیازمندیهارو (فایل ها و کتابخانه ها، نه بسته ها) در مسیری بریزم که متمایز با بقیه باشه. اونوقت فقط خود نرم افزار می تونه از اون فایل استفاده کنه.
- این کار برای نرم افزارهایی که در مسیر خانه ی کاربر نصب میشن معمول هستش و نرم افزار قابلیت حمل بالایی پیدا می کنه.
- برای نرم افزارهایی که در مسیر ریشه در پوشه هایی که نیاز به دسترسی روت دارند، نصب میشن، این کار بی فایده هستش، چون فرض کنید نرم افزار X و Y هردو به فایل libsomething.so.0 نیاز دارند. نرم افزار X کتابخانه ی libsomething.so.0 رو در پوشه ی lib با نام libsomething.so.0.for.X ذخیره کرده ، نرم افزار Y هم همون فایل رو اومده با نام libsomething.so.0.for.Y ذخیره کرده. در واقع یک فایل دو بار کپی شده که اصلا نیاز به چنین کاری نبوده
همچنین این کار باعث میشه تعداد کد هایی که توسعه دهنده مورد بررسی قرار بده بالا بره، لذا وقت بیشتری رو برای عیب یابی قسمت های مختلف کد باید بزاره. در صورتی که فایل های کتابخانه ای مورد نیاز رو توسعه دهندگان دیگر مدیریت کنند، تمرکز توسعه دهنده بیشتر بر روی کد های خودش معطوف میشه