que - ¿Cómo instalar la aplicación dos veces sin interferencias en Android?
permisos android manifest (4)
Tengo una aplicación para Android (llamémosla X), quiero crear una segunda aplicación X2 pero basada en la otra aplicación. Así que cambié la propiedad del nombre de la aplicación de manifiesto a X2, también cambié el nombre del paquete ... pero aún cuando instalo X2, ¡la aplicación X se borra!
¿Qué propiedades debo cambiar para poder instalar las dos aplicaciones de forma independiente en un dispositivo? Estoy trabajando en 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" >
despues del cambio
<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" >
Necesitaba esa herramienta porque el cliente quería poder usar la versión beta y la versión de lanzamiento de la aplicación al mismo tiempo. Estoy cambiando el espacio de nombres principal de la APK para lograr esto usando apktool.
Sigo estos pasos:
- descompilar apk usando apktool java -jar apktool.jar d -o out -f my-app.apk
- Reemplace com.mainnamespace por com.mainnamespacebeta en todos los archivos en el directorio out
- renombra el directorio out / smali / com / mainnamespace a out / smali / com / mainnamespacebeta
- compilar apk de nuevo java -jar apktool.jar b -o ./debug.apk -f ./out
- firma el apk con la nueva clave usando jarsigner. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore key.keystore ./debug.apk "contraseña" -storepass "contraseña" -keypass "contraseña"
Aquí está el manual de cómo firmar el apk para obtener key.keystore - http://developer.android.com/tools/publishing/app-signing.html
También he creado un script simple para Linux - https://gist.github.com/vavrecan/8596303
Pues funcionó en otro dispositivo con plataforma más reciente! De todos modos la respuesta correcta será que solo hay que cambiar el nombre y el paquete de la aplicación.
EDITAR 1: Ahora, si está utilizando Android Studio, use applicationIdSuffix para tener una aplicación para cada versión.
debug {
applicationIdSuffix ".debug"
}
Lea más aquí developer.android.com
paso 1: seleccione (haga clic en) el paquete principal de su aplicación y haga clic en Shift + f6 y cambie el nombre del paquete
Paso 2: vaya a build.gradle y cambie el ID de aplicación al nuevo nombre del paquete como se muestra a continuación por defectoConfig {
applicationId "com.sample.main"//give your new package name
minSdkVersion 15
targetSdkVersion 25
}
Paso 3: limpiar el proyecto
Paso 4: Ejecute el proyecto y vea que funcionará seguro
Feliz codificación .....
también cambiará el nombre del paquete en el módulo de gradle script build.gradle funcionará
defaultConfig {
applicationId "com.me.mesurvey" //put your package name here//
minSdkVersion 14
targetSdkVersion 19
}