web-dev-qa-db-fra.com

Comment installer l'application deux fois sans interférence dans Android?

J'ai une application Android (appelons X), je veux créer une deuxième application X2 mais basée sur l'autre application. J'ai donc changé la propriété du nom de l'application manifeste en X2 et j'ai également changé le nom du paquet ... mais quand j'installe X2, l'application X est effacée!

Quelles propriétés dois-je modifier pour pouvoir installer les deux applications indépendamment sur un seul appareil? Je travaille sur eclispe.

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.company.app1"
    Android:versionCode="1"
    Android:versionName="1.0" >

    <application
        Android:allowBackup="true"
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name1"
        Android:theme="@style/AppTheme" >

après le changement.

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.company.app2"
Android:versionCode="1"
Android:versionName="1.0" >

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name2"
    Android:theme="@style/AppTheme" >
19
M'hamed

Eh bien, cela a fonctionné sur un autre appareil avec une plateforme plus récente! Quoi qu'il en soit, la bonne réponse sera de changer le nom et le package de l'application.

EDIT 1: Maintenant, si vous utilisez Android Studio, utilisez applicationIdSuffix pour avoir une application pour chaque type.

debug {
        applicationIdSuffix ".debug"
    }

Lire la suite ici developer.Android.com

2
M'hamed

changez également le nom du paquet dans le module gradle de script build.gradle cela fonctionnera

defaultConfig {
    applicationId "com.me.mesurvey" //put your package name here//
    minSdkVersion 14
    targetSdkVersion 19
}
3
Arpit Srivastava

J'avais besoin d'un tel outil parce que le client voulait pouvoir utiliser la version bêta et la version finale de l'application en même temps. Je change d'espace de noms principal de l'APK pour y parvenir à l'aide d'apktool. 

Je suis ces étapes:

  • decompile apk en utilisant apktool Java -jar apktool.jar d -o out -f my-app.apk
  • remplacer com.mainnamespace à com.mainnamespacebeta dans tous les fichiers du répertoire out
  • renommer le répertoire out/smali/com/mainnamespace à out/smali/com/mainnamespacebeta
  • compiler à nouveau apk Java -jar apktool.jar b -o ./debug.apk -f ./out
  • signer l'apk avec la nouvelle clé en utilisant jarsigner. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore key.keystore ./debug.apk "mot de passe" -storepass "mot de passe" -keypass "mot de passe"

Voici le manuel comment signer l'apk pour obtenir key.keystore - http://developer.Android.com/tools/publishing/app-signing.html

J'ai également créé un script simple pour linux - https://Gist.github.com/vavrecan/8596303

0
Marek Vavrečan

étape 1: sélectionnez (donnez un clic sur) le package principal de votre application, cliquez sur Maj + f6 et modifiez le nom du package. 

Étape 2: allez à build.gradle et remplacez l’applicationId par le nouveau nom du package, comme indiqué ci-dessous DefaultConfig {

    applicationId "com.sample.main"//give your new package name

    minSdkVersion 15

    targetSdkVersion 25

}

Étape 3: Nettoyer le projet

Étape 4: Exécutez le projet et vérifiez qu'il fonctionnera à coup sûr

Bonne codage .....

0