2013-07-05 21 views
6

Ho già pubblicato un'app chiamata com.mycompany.mygame su Google Play.Google Play dice: "È necessario utilizzare un nome di pacchetto diverso" - perché?

Ho quindi deciso di pubblicare una versione pubblicitaria gratuita di esso. Non ho cambiato il nome del pacchetto in eclissi perché ho notato che nel processo di "esportazione" hai la possibilità di impostare l'apk finale come qualcosa che ti piace. Così l'ho impostato come com.mycompany.mygameaf - nota l'ulteriore "af" alla fine. Ma poi, quando ha cercato di caricarlo sul mercato, Google ha detto:

È necessario utilizzare un nome di un pacchetto diverso perché "com.mycompany.mygame" è già utilizzato da uno dei vostri altre applicazioni

Così ora sono confuso. La denuncia è perché non sono autorizzato ad avere un apk che è un nome ed è un'estensione di un'app precedente? O l'apk finale in qualche modo ha la conoscenza di quale fosse il nome originale?

Qual è il modo più semplice per risolvere questo problema?

+0

possibile duplicato del [Devo cambiare il nome del pacchetto per la versione gratuita di mia app?] (Http://stackoverflow.com/questions/5195595/do-i-need-to-change- the-package-name-per-il-libera-versione-di-my-app) –

risposta

3

Indipendentemente dal nome del file .apk, il nome del pacchetto dei contenuti dell'applicazione al suo interno deve essere univoco.

È possibile utilizzare refactoring-Rinomina per cambiare questo, però assicurarsi che il cambiamento penetra per il file manifesto, la configurazione Proguard, ecc

0

Il nome del pacchetto nel manifesto viene utilizzato per identificare l'applicazione all'interno di Android e all'interno di Google Play. Quindi le diverse app hanno bisogno di nomi diversi.

La soluzione più semplice potrebbe essere quella di creare un nuovo pacchetto senza codice e utilizzarlo come nome del pacchetto dell'app nel file manifest.

Quello che ho fatto per risolvere il mio problema di molte app-da-uno-codice-base è inserire il codice di tutte le app in un progetto di libreria, e poi ho diversi progetti di app che usano quella libreria. I progetti dell'app non contengono codice, ma solo risorse manifest e personalizzate.

0

Il nome del file APK è irrilevante, il nome del pacchetto della tua app è usato come un identificatore univoco - è nell'elemento radice nella 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" > 

Quando si crea inizialmente il progetto in Eclipse crea una vera e propria struttura del pacchetto che corrisponde al nome di questo pacchetto in cui inserire i file sorgente.

In realtà puoi modificare il nome del pacchetto modificando questo valore manifest e puoi semplicemente mantenere la struttura della cartella/pacchetto così com'è - non è necessario che corrisponda al nome del pacchetto dell'applicazione reale.

In alternativa, fare clic destro del progetto in Eclipse, andare su "Strumenti di Android" e poi selezionare "Rinomina pacchetto di applicazioni"

Dopo aver fatto questo si dovrebbe essere in grado di presentare il vostro binario

0

Come accennato in altre risposte, lo sviluppo è più semplice se si mettono tutto il codice e le risorse condivise in un progetto di libreria comune che è una dipendenza delle versioni a pagamento e gratuite.

Si potrebbe anche voler giocare con il nuovo sistema di build Gradle (in Android Studio) che consente di impostare dinamicamente cose come il nome del pacchetto in fase di esecuzione.Permette anche di cambiare risorse durante il tempo di costruzione, il che è estremamente conveniente; Potresti avere un boolean resource che rappresenta se l'app corrente è la versione a pagamento. Ciò consente di abilitare/disabilitare le funzionalità dell'app in base a un controllo su tale valore.

1

Il nome dell'APK non ha importanza, è il nome del pacchetto all'interno del file AndroidManifest che conta.

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

Non ci può essere una sola applicazione sul mercato con quel nome pacchetto in modo al fine di pubblicare il tuo annuncio versione gratuita che avrebbe dovuto cambiare il nome del pacchetto nel file manifesto, ad esempio, aggiungi l'af alla fine del nome del pacchetto all'interno del tuo manifest.

2

Oltre a correggere il nome dell'app nel Manifesto, ho dovuto anche modificare applicationId nel file gradle.build dell'app.

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