سؤال

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

هل كانت مفيدة؟

المحلول

حزمة اثنين = اثنين من تطبيقات مختلفة في السوق. بمجرد تحميل تطبيق واحد ، يجب أن تكون الحزمة نفسها. أيضا ، يجب أن يكون المفتاح هو نفسه.

نصائح أخرى

لا يهتم سوق Android إلا باسم الحزمة في بيانك ، وليس اسم الحزم الفعلي في المصدر.

يمكنك محاولة إعطاء اسم الحزمة القديم في سمة البيان ، ثم للأنشطة إعطاء اسم الحزمة الجديد بدلاً من النسبية (أي .MainActivity)

مثله:

<manifest package="your.old.package" ...>
   ...
   <application android:name="your.new.package.MainActivity" ...>

يمكن أن تعمل..

أخطط لخدمة نسختين من تطبيقي (مدفوع/مجاني) بهذه الطريقة واستخدام نفس المشروع والرمز.

إذا قمت بتغيير اسم الحزمة ، فسيتم التعامل معها كتطبيق منفصل - ليس فقط في السوق ، ولكن APK بشكل عام ستبدل فقط "اسم الحزمة نفسه (وفقط إذا تم توقيعهما بنفس المفتاح).

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

أفضل ما يمكن القيام به هو:

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

ملاحظة عادة ما يتم الاحتفاظ ببيانات التطبيق هنا:

/data/data/pac.kage.name/

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top