android how - حل الخطأ INSTALL_FAILED_INSUFFICIENT_STORAGE على نظام التشغيل




make file (25)

حل المحاكي

افتح دليل .Android الخاص بك. عادة في دليل منزلك. ثم انتقل إلى avd ثم افتح الدليل الذي يحتوي على اسم avd الذي ترغب في تغييره.

الآن قم بتحرير ملف config.ini وأضف السطر التالي أو قم بتعديل السطر التالي:

disk.dataPartition.size=1024

حيث 1024 هو الحجم الذي ترغب في استخدامه بالميغابايت. احفظ الملف ثم ابدأ المحاكي مع wipe user data المحددة. يجب أن يكون لديك الآن على المحاكي الحجم الجديد.

يمثل الخطأ INSTALL_FAILED_INSUFFICIENT_STORAGE جزءًا من حياة كل مطور في Android. يحدث ذلك بغض النظر عن حجم التطبيق ، أو مقدار التخزين المتاح. تعمل إعادة تشغيل الجهاز المستهدف على إصلاح المشكلة باختصار ، ولكنها ستعود قريبًا. هناك المئات (إن لم يكن الآلاف) من رسائل لوحة الرسائل من الأشخاص الذين يسألون عن سبب حدوث المشكلة ، ولكن الأشخاص في Google صامتون بشكل محبط حول المشكلة.

هناك حل بسيط. إذا كان جهاز الاختبار يعمل بالإصدار 2.2 من نظام التشغيل Android أو إصدار أحدث ، فأضف سمة android: installLocation إلى ملف البيان الخاص بالتطبيق ، مع القيمة " preferExternal ". سيؤدي هذا إلى فرض تثبيت التطبيق على وحدة التخزين الخارجية للجهاز ، مثل بطاقة SD للهاتف.

فمثلا:

  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.andrewsmith.android.darkness"
    android:installLocation="preferExternal"

هذا هو أكثر من الإسعافات الأولية من إصلاح ، وربما لا يكون مثاليا إذا كنت ترغب في تثبيت التطبيق النهائي على الذاكرة الداخلية للجهاز. ولكنها على الأقل ستجعل عملية التنمية أقل إحباطًا.


تحتاج إلى زيادة سعة ذاكرة محاكي الأندرويد. هناك طريقتان لذلك:

  1. انقر بزر الماوس الأيمن على جذر مشروع Android الخاص بك ، وانتقل إلى "Run As" ثم انتقل إلى "Run Configurations ...". حدد موقع عقدة "تطبيق Android" في الشجرة على اليسار ، ثم حدد مشروعك وانتقل إلى علامة التبويب "الهدف" على الجانب الأيمن من النافذة لأسفل بحثًا عن حقل "محاكي إضافي لخيارات سطر الأوامر" (أحيانًا أنت) سوف تحتاج إلى جعل النافذة أكبر) وأخيراً لصق "-partition-size 1024" هناك. انقر فوق تطبيق ثم قم بتشغيل لاستخدام المحاكي الخاص بك.

  2. انتقل إلى تفضيلات Eclipse's ، ثم حدد "Launch" قم بإضافة "-partition-size 1024" على الحقل "Default simulator option". انقر فوق "تطبيق" واستخدم المحاكي كالمعتاد.


نظرًا لأن هذه المشكلة لا تزال قائمة ، فكرت في إضافة شيء إلى إجابة راسو لأغراض التطوير. إذا كنت لا تستخدم البرنامج المساعد Eclipse's أو لأي سبب من الأسباب التي لا تملك المصدر ، ولكن فقط .apk ، يمكنك زيادة حجم القسم من سطر الأوامر باستخدام نفس الخيار عند تشغيل المحاكي:

emulator -avd <emulator name> -partition-size 1024

حسب علمي ، لم يتم توثيق هذا الخيار على developer.android.com ، لذلك أعتقد أنني سأقوم بنشره هنا حتى يتمكن الناس من إيجاد هذا الحل.


أشعر بالكثير من الغرابة في كتابة هذا ، لكنني لا أستطيع أن أكون متأكداً بنسبة 100٪ من أن هذا غير صحيح في بعض الحالات (إنه يعمل بالنسبة لي). إذا كنت تعاني من الأعراض التالية:

  • كنت تعمل باستخدام جهاز فعلي (في حالتي ، Samsung Galaxy Ace) ،
  • لقد قمت بتطوير لبضع أيام على التوالي ،
  • كان هاتفك متصلاً طوال الوقت ليلاً ونهارًا.
  • لقد بدأت في الحصول على هذا الخطأ بعد مرور يومين ، وظل الأمر يزداد سوءًا.
  • لم تنجح أي من الإجابات الأخرى.
  • كنت مستسلما كما كنت ...

ثم جرّب هذا:

  • افصل هاتفك عند عدم العمل!

لقد فصلت هاتفي واتركته للراحة ليوم كامل. بطارية بلدي ارتدت قليلا. بعد ذلك ، أعدت الاتصال به وبدأت عملية التصحيح مرة أخرى. كل شيء سار على ما يرام هذه المرة! وأعني حقا حقا ، تماما كما كان من قبل.

هل من الممكن أن يكون هذا الخطأ بسبب بعض الاشياء المتعلقة بالبطارية ؟ لا يزال الأمر يبدو غريباً في التفكير بهذه الطريقة ، لكنني الآن أواصل فصل هاتفي بين الحين والآخر (وفي الليل) ولم تعد المشكلة.


الحل:

ترجمة كـ 2.1 دون android:installLocation="preferExternal" .

حسنا؟

ترجمة 2.2 بما في ذلك android:installLocation="preferExternal" .

سيظل هذا مثبتًا على إصدار SDK أقل من 8 (يتم تجاهل علامة XML).


جئت عبر نفس الخطأ عندما حاولت تثبيت التطبيقات حوالي 50 في دليل بطاقة SD باستخدام shell ADB بعد تحديث ROM كامل:

for x in *.apk; do pm install -r $x; done

تم تثبيت بعضها ، لكن العديد منها فشل مع الخطأ INSTALL_FAILED_INSUFFICIENT_STORAGE. جميع التطبيقات الفاشلة بها مساحة في اسمها. أعدت تسميتها ودفعت مرة أخرى. عملت كل هذا الوقت. لم أقم بإعادة التشغيل أو أي شيء. قد تكون هذه ليست المشكلة التي يواجهها الرجال ، ولكن هذا قد يساعد شخصًا ما يبحث عن المشكلة نفسها التي واجهتها.


هناك مشكلة ذات صلة على المحاكي عندما لا يوجد أي مساحة متبقية في قسم /data .

فمثلا،

% adb shell df

Filesystem             Size   Used   Free   Blksize
/dev                   252M    32K   252M   4096
/mnt/asec              252M     0K   252M   4096
/mnt/obb               252M     0K   252M   4096
/system                154M   154M     0K   4096
/data                   64M    57M     6M   4096
/cache                  64M     1M    62M   4096

في ما يلي نموذج للعرض لدليل /data/app :

% adb shell ls -l /data/app

-rw-r--r-- system   system      19949 2011-10-12 17:09 CubeLiveWallpapers.apk
-rw-r--r-- system   system      27670 2011-10-12 17:09 GestureBuilder.apk
-rw-r--r-- system   system      34341 2011-10-12 17:09 SoftKeyboard.apk
-rw-r--r-- system   system      20151 2011-10-12 17:09 WidgetPreview.apk

أزلت ملفات APK الإضافية. يبدو أنه عند كل تثبيت تحصل على ملف APK جديد. ما عليك سوى إزالة ملفات APK الإضافية.

فمثلا،

adb shell rm /data/app/com.brooklynmarathon.calendarapi2-1.apk

تأكد من عدم توصيل جهاز Android الخاص بك مع USB أثناء محاولة تشغيل المحاكي


لم أتمكن من الوصول إلى الجذر على هاتفي ، وأنا غير مستعد لتثبيتي على بطاقة SD. يتوفر 15 ميغابايت من المساحة على /data/ وتطبيقي أقل من 2 ميغابايت.

لفترة من الوقت ، تنظيف مشروع Eclipse's وإعادة تشغيل الهاتف ، ولكن في النهاية توقفت عن العمل (ربما بعد التحديث).

لقد حلت عملية تنظيف ذاكرة التخزين المؤقت للتطبيق المشكلة بالنسبة لي ولا تتطلب إعادة تشغيل الهاتف أو إزالة التطبيق.

هناك تطبيقات في السوق يمكنك استخدامها لمسح ذاكرة التخزين المؤقت لعدة تطبيقات دفعة واحدة. ابحث عن "نظيف".


حصلت على هذا الخطأ اليوم ، عند استخدام هاتفي للاختبار / التصحيح مع Eclipse.

كان خطئي أنني استخدمت الحرف الخاص النرويجي ("æ" ، "ø" ، "å") في اسم التطبيق. عندما أعيد تصميم اسم التطبيق (باستخدام "o" بدلاً من "ø") تم تثبيت التطبيق بشكل صحيح ..

ربما لا مشكلتك ، ولكن يمكن أن يلاحظ للآخرين الحصول على نفس الخطأ.


يعلن Samsung Galaxy Ace عن 158 ميغابايت من التخزين الداخلي في مواصفاته ، ولكن التطبيقات والخدمات الأساسية تستهلك حوالي 110 ميغابايت من ذلك (استخدمت مدير المهام على الجهاز لفحص ذلك). كان تطبيقي 52 ميغابايت ، نظرًا لوجود الكثير من الأصول. بمجرد أن أحذف بعضًا منها إلى 45 ميغابايت ، تمكن التطبيق من التثبيت بدون مشكلة. كان الجهاز لا يزال ينبهني إلى أن التخزين الداخلي كان ممتلئًا تقريبًا ، ويجب أن أقوم بإلغاء تثبيت بعض التطبيقات ، على الرغم من أنني قمت بتثبيت تطبيق واحد فقط.

بعد تثبيت نسخة إصدار حزمة .apk ثم إلغاء تثبيتها ، يعرض جهازي مساحة خالية قدرها 99 ميغابايت ، لذا قد يكون تصحيح الأخطاء في المعلومات أمرًا يزعج الجهاز بعد كل شيء. انظر إجابة لويس سمبرينى .


بعد تجربة كل شيء آخر في هذا الموضوع ، اكتشفت مشكلتي الخاصة لأن المسار إلى الملف .apk كان طويل جداً. لذا قمت بالبحث في الدليل حيث كان .apk وكان يفعل ذلك:

cd /Very/Long/Path/To/Package/
adb install mypackage.apk

بدلا من

adb install /Very/Long/Path/To/Package/mypackage.apk

وعملت ... مثبتة على ما يرام.

ظننت أن هذا قد يساعد شخصًا آخر.


لقد قمت بحلها من خلال تضمين android:installLocation="auto" داخل <manifest> في ملف AndroidManifest.xml.


إذا كنت تقوم بتشغيل التطبيق الخاص بك على محاكي ، وإذا استمرت هذه المشكلة ، تحقق من مدير الإعلام الخاص بك. إذا عرض لك رمزًا وإشعارًا حول "ذاكرة الهاتف ممتلئة" ، فهذا يعني أنك قمت بالفعل بتثبيت العديد من التطبيقات على المحاكي الخاص بك. قم بإلغاء تثبيت العديد من التطبيقات التي لا تريدها حاليًا من "الإعدادات >> إدارة التطبيق >> حدد التطبيق >> إلغاء التثبيت".
تلك المجموعة.
الآن إعادة تشغيل البرنامج.


صادفت هذا السؤال لأنني كنت أتلقى هذا الخطأ باستخدام Sideload Wonder Machine لتثبيت التطبيقات على هاتفي الفعلي. لقد وجدت أن المشكلة كانت لدي ملفات .apk متعددة في الدليل / الحمولة. اعتقدت أن هذا هو الشيء الذي كان مدعومًا ، ولكن عندما أزلت جميع ملفات apk. لكن ، اختفى الخطأ.


أنا أيضا واجهت نفس المشكلة ، وأنا فعلت "إعادة الضبط بيانات المصنع" ، وعملت بشكل جيد بعد ذلك.


لقد أضفت سطرًا إضافيًا إلى ملف بيان التطبيق ، وهو android:installLocation="preferExternal" . باستخدام هذا الخط ، يفرض عليك تثبيت التطبيق على وحدة التخزين الخارجية. انظر المثال أدناه ،

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nasir.phonegap"
    android:installLocation="preferExternal" >

إذا كنت تستخدم جهازًا حقيقيًا ، فقد نفدت الذاكرة الداخلية. ما عليك سوى الانتقال إلى إعدادات Android -> التطبيقات ، ونقل بعض التطبيقات إلى بطاقة SD أو إزالة بعض التطبيقات.

إذا كنت تستخدم المحاكي ، فاطلع على إجابة RacZo .


شكرا لنشر هذا السؤال. لدي بعض الأفكار الإضافية التي قد تساعد بعض المطورين.

أنا تصحيح التطبيق الخاص بي على جهاز (وليس المحاكي). يحتوي الجهاز على 21 ميغابايت على /data مجانية (كما هو موضح من قبل "df" عند القيام بـ "adb shell") ويبلغ تطبيقي 5 ميجابايت فقط. ومع ذلك ، وجدت أنه إذا حذفت تطبيقات أخرى على الجهاز (بدون إعادة تشغيل الهاتف أو إعادة تشغيل adbd) ، فإن INSTALL_FAILED_INSUFFICIENT_STORAGE سيذهب بعيدًا ثم يعود مرة أخرى.

لذا يبدو أن تصحيح التطبيق 5 ميغابايت يتطلب أكثر من 20 ميغابايت من المساحة في /data ، وبالإضافة إلى ذلك كان هناك تسرب في كل مرة أقوم بتشخيص تطبيقي.

لذلك فعلت "قذيفة adb" وأدرجت دليل /data كامل مع

cd /data
ls -a -l -R

ونظرت في إخراج 5000 خط لمعرفة أين كانت كل المساحة.

اكتشفت كميات هائلة من المساحة المهدورة على جهازي في دليل /data/klog في شكل ملفات سجل قديمة من جلسات تصحيح قديمة.

هذه لم تكن ملفات السجل الخاصة بي: تم إنشاؤها بواسطة جزء من بنية Android الأساسية.

قمت بحذفها وحفظت على الفور 58 ميغابايت والتي لم تُنسب في تطبيق الإعدادات إلى أي تطبيق معين. لدي جهاز صغير حتى 58 ميغابايت مهم جدا (حوالي 40 ٪).

حتى الآن ، لم أحصل على INSTALL_FAILED_INSUFFICIENT_STORAGE مرة أخرى بعد عدة عمليات. دعونا نأمل أن تكون هذه هي القضية الحقيقية ، على الرغم من أن OP يشير إلى أن جهازه لديه مساحة كبيرة (لكنه لم يذكر كم).

نأمل أن يتمكن بعضكم أيضًا من الفرار من INSTALL_FAILED_INSUFFICIENT_STORAGE عن طريق حذف /data/klog/* بشكل دوري.

أو ، على الأقل يمكنك القيام بـ ls -a -l -R في /data لمعرفة مكان كل المساحة الخاصة بك ، إذا كانت هناك بالفعل مشكلة مساحة (مخفية) بالفعل.


هذا مجرد حل مؤقت وليس إصلاحًا حقيقيًا.

بعد أن حدث هذا لي وليس راضيا عن الردود الحالية ذهبت للعمل في محاولة لمعرفة ذلك من مصدر AOSP. لقد وجدت حلا حقيقيا .

تفسير

أولاً ، قليلاً من الخلفية (المبسطة) حول كيفية تثبيت Android وتحديثه

أول مرة يتم فيها تثبيت التطبيق:

  1. يتم حفظ ملف APK باسم

    /data/app/-1.apk (1.apk)

عندما يتم تحديث التطبيق:

  1. يتم حفظ ملف APK المحدث على النحو التالي:

    /data/app/-2.apk (2.apk)

  2. يتم حذف الإصدار الأول (1.apk).

في التحديث التالي (ق):

  1. يتم حفظ APK الجديد باسم (1.apk) و (2.apk) يتم حذف (كرر للأبد).

تحدث المشكلة التي يواجهها معظمنا عند تحديث التطبيق ، ولكن يؤدي حذف ملف APK القديم إلى الفشل. وهذا بدوره لا يتسبب في فشل التحديث بعد ، ولكنه يؤدي إلى وجود ملفي APK في /data/app .

في المرة التالية التي تحاول فيها تحديث التطبيق ، يتعذر على النظام نقل ملفه المؤقت نظرًا لأنه لا (1.apk) ولا (2.apk) فارغان. نظرًا لأن File # renameTo (ملف) لا يلقي استثناءًا ولكنه يُرجع بدلاً من ذلك PackageManager منطقيًا ، فلا يوجد أي طريقة لمعرفة سبب قيامه بإرجاع INSTALL_FAILED_INSUFFICIENT_STORAGE على الرغم من أن الفشل لم يكن له علاقة بكمية المساحة الفارغة.

حل

يركض:

adb shell "pm uninstall <full.packge.name>"
adb shell "rm -rf /data/app/<full.package.name>-*"

أو

إلغاء تثبيت التطبيق

استخدم طريقتك المفضلة لحذف كل منهما :

/data/app/<full.package.name>-1.apk

/data/app/<full.package.name>-2.apk

تأكد من عدم وجود أي شيء آخر يمنع عمليات التثبيت المستقبلية بطريقة مماثلة. في حالتي كان لدي /data/app-lib/<full.package.name>-1 العالقة في جميع أنحاء! في هذه الحالة ، عمل تثبيت على بطاقة SD ، وتحرك لاحق إلى الذاكرة الداخلية أيضًا. (إنشاء /data/app-lib/<full.package.name> بدون نهاية -1 .)

لماذا "الحلول" الأخرى عملت

  • يختلف رمز التثبيت للتخزين الخارجي اختلافًا كبيرًا ليس له نفس المشكلات

  • يؤدي إلغاء تثبيت التطبيق إلى حذف إصدار واحد فقط من ملف APK في /data/app . هذا هو السبب في أنه يمكنك إعادة تثبيته مرة واحدة ، ولكن لا يمكنك تحديثه.

  • حجم المساحة الحرة في المحاكي غير ملائم حقًا عند حدوث هذا الخطأ


لقد واجهت هذه المشكلة مع جهاز Nexus 4 الجديد و APK تم إنشاؤه باستخدام Adobe AIR. لدي بالفعل android: installLocation = "preferExternal" في البيان الخاص بي. لاحظت أنني كنت أطلب أيضًا adb install باستخدام الخيار -s (تثبيت الحزمة على مساحة التخزين الكبيرة المشتركة مثل sdcard.) التي بدت مثل الإسراف.

أدت إزالة العلامة adb install من adb install المشكلة لي.


انتهى بي الأمر إلى إلغاء تثبيت التطبيق من الجهاز ثم إعادة تثبيته مرة أخرى في Eclipse. هذه مشكلة أحصل عليها طوال الوقت على جهازي من الاستخدام العادي ، ولكن اليوم حصلت على هذه الرسالة من التطوير.


في Eclipse ،

Run -- > Debug Configurations --> Select "target", وحدد هدف محاكي مفضل Run -- > Debug Configurations --> Select "target", .

ثم أسفل ذلك "خيارات سطر أوامر المحاكي الإضافي" ، أضف هذا:

- حجم 1024

ثم أغلق المحاكي وانقر على رمز تصحيح الأخطاء ، والذي سيطلق المحاكي المفضل الذي حددته.

آمل أن يساعد ...!


الإجابة على أول مشاركة لهذا الموضوع ...

الأعراض: لا يتم تثبيت بعض التطبيقات ، قائلين إنه لا توجد مساحة ، كما أن هناك مساحة كبيرة خالية على التخزين الداخلي والخارجي !!! الحل: تعطيل التثبيت الخارجي افتراضيًا.

ضبط التثبيت الخارجي بواسطة defaut مع هذا:

adb shell pm set-install-location 2

يجعل التثبيت مستحيلاً على العديد من التطبيقات التي لا يمكن تثبيتها خارجيًا (مثل adblock + أو نحو ذلك)

ثم الحل

adb shell pm set-install-location 0

أو

adb shell pm set-install-location 1

0: auto (if one is full - or irrelevant !!! - it select the other)
1: internal
2: external

لم أر هذا المنشور هنا ، ولكن يمكنك القيام به مع Pyside و Qt الآن أن Qt يعمل على Android بفضل Necessitas.

يبدو الأمر وكأنه مجرد كسلات في هذه اللحظة ولكن يمكن أن يكون طريقا قابلا للتطبيق في نهاية المطاف ...

http://qt-project.org/wiki/PySide_for_Android_guide





android installation android-sdcard