Возможны ли два пакета в одном APK?

1

Я пытаюсь реализовать эту замечательную технику об общих предпочтениях в двух разных приложениях, пока MODE_PRIVATE.

Моя проблема в том, что первое приложение не может предположить, что первое приложение установлено (и наоборот) и так:

 Context c = createPackageContext("com.app.first", MODE_PRIVATE);

Необходимо заменить на:

 Context c = createPackageContext("com.app.shared", MODE_PRIVATE);

Но для этого требуется добавить, что com.app.shared для реального, что переводится во второй APK?

Другими словами, существует только один AndroidManifest.xml для APK и только один <manifest package= > для файла манифеста. Поэтому только один фактический пакет на APK?

Я не хочу использовать 2 APK для каждого приложения, мне нужен только один APK для каждого приложения.

Есть ли способ достичь этого?

Теги:
android-manifest
android-package-managers
apk

1 ответ

2
Лучший ответ

Я пытаюсь реализовать эту замечательную технику распределения предпочтений в двух разных приложениях, пока MODE_PRIVATE.

Собственно, это такая анти-великая техника, что я просто удалил свой ответ. Использование android:sharedUserId является рискованным и совершенно невозможным для уже развернутых приложений. Я узнал об ошибках моих путей за два года с тех пор, как я отправил там свой ответ.

Кроме того, этот метод не работает надежно, потому что у вас нет контроля над тем, какие приложения пользователь устанавливает... и удаляет. Если приложения A и App B разделяют предпочтения посредством использования копии приложения A, тогда, когда пользователь удаляет приложение А, приложение B закрывается.

Следовательно, только один фактический пакет на APK?

Правильно.

Я не хочу использовать 2 APK для каждого приложения, мне нужен только один APK для каждого приложения.

Для двух приложений у вас есть два файла APK, каждый из которых имеет собственное имя пакета.

  • 0
    Спасибо за спасение от катастрофического подхода. Теперь я понимаю, что, несмотря на «объявленную» доступность «общих» предпочтений, требуется так много обходных путей и уловок, что это должно быть несколько небезопасно. Теперь я считаю, что правильный подход к обмену информацией между приложениями - через контент-провайдеров . Я в правильном направлении?
  • 2
    @ ef2011: существует много способов обмена информацией между приложениями - ContentProvider - одна из возможностей. Лично в этом случае я бы отправлял трансляции с разрешением при изменении настроек приложения, чтобы их можно было подхватить другим приложением и применить к собственной копии. Таким образом, с обоими приложениями, отражающими настройки, вам не нужно беспокоиться о том, что одно приложение будет удалено и что настройки обоих приложений будут с ним. Кроме того, вам все равно, какое приложение будет установлено первым. И, как побочный эффект, он беспрепятственно распространяется на три или более приложений в случае необходимости.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню