2013-07-05 2 views
6

Я уже опубликовал приложение com.mycompany.mygame в google play.Google Play говорит: «Вам нужно использовать другое имя пакета» - почему?

Затем я решил опубликовать бесплатную версию этого объявления. Я не изменил имя пакета в eclipse, потому что заметил, что в процессе «экспорта» у вас есть возможность установить конечный apk как что угодно. Поэтому я установил его там как com.mycompany.mygameaf - обратите внимание на дополнительный «af» в конце. Но потом, когда пытался загрузить его на рынок, Google сказал:

Вы должны использовать другое имя пакета «com.mycompany.mygame» уже используется один из ваших других приложений

So теперь я смущен. Является ли жалоба, потому что мне не разрешено иметь apk, это имя, которое является и расширением предыдущего приложения? Или заключительный apk каким-то образом знает, что такое первоначальное имя?

Что является самым простым способом решить эту проблему?

+0

возможно дубликат [мне нужно изменить имя пакета для бесплатной версии моего приложения делать?] (Http://stackoverflow.com/questions/5195595/do-i-need-to-change- заместитель имя пакета-для-свободной версии-в-моем-приложение) –

ответ

3

Независимо от имени файла .apk имя пакета содержимого приложения внутри него должно быть уникальным.

Вы можете использовать рефакторинг-переименование, чтобы изменить это, однако, убедитесь, что изменение проникает в файл манифеста, конфигурация ProGuard и т.д.

0

Имя пакета манифеста используется для идентификации приложения в пределах Android и в Google Play. Поэтому разные приложения нуждаются в разных именах.

Простейшим обходным решением может быть просто создание нового пакета без кода в нем и использование его в качестве имени пакета приложения в манифесте.

Что я сделал для решения моей проблемы с множеством приложений из одного кода, ставится весь код приложения в проект библиотеки, а затем у меня есть несколько проектов приложений, которые используют эту библиотеку. Проекты приложений не содержат кода, а только манифеста и пользовательских ресурсов.

0

Имя файла АПК не имеет значения, имя пакета вашего приложения используется в качестве уникального идентификатора - это в корневом элементе в AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.packagename" 
    android:versionCode="1" 
    android:versionName="1.0" > 

При первоначальном создании проекта в Eclipse создает фактическую структуру пакета, которая соответствует этому имени пакета для размещения исходных файлов.

Вы можете на самом деле изменить имя своего пакета, изменив это значение манифеста, и вы можете просто сохранить структуру папок/пакетов как есть - он не должен соответствовать вашему фактическому имени пакета приложений.

В качестве альтернативы, щелкните правой кнопкой мыши проект в Eclipse, перейдите в раздел «Android Tools», а затем выберите «Переименовать пакет приложения»

После этого вы должны быть в состоянии представить ваш бинарный

0

Как уже упоминалось в другие ответы, вы разрабатываете, было бы проще, если бы вы поместили весь общий код и активы в общий проект библиотеки, который является зависимостью ваших платных и бесплатных версий.

Возможно, вы также захотите поиграть с новой системой сборки Gradle (в Android Studio), которая позволяет динамически устанавливать такие вещи, как имя пакета во время выполнения.Он также позволяет вам переключать ресурсы во время сборки, что чрезвычайно удобно; У вас может быть boolean resource, представляющий, является ли текущее приложение платной версией. Это позволяет включать/отключать функции приложения на основе проверки этого значения.

1

Имя APK не имеет значения, это имя пакета в файле AndroidManifest, который учитывается.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.yourcompany.yourapp" 

Там может быть только одно приложение на рынке с этим именем пакета так, чтобы опубликовать объявление бесплатную версию вы бы изменить имя пакета в файле манифеста, например, добавьте af в конец имени пакета внутри вашего манифеста.

2

Помимо исправления имени приложения в манифесте, я также должен был изменить applicationId в файле gradle.build приложения.

defaultConfig { 
    applicationId "com.example.changednameofmyapp" 
    ... 
}