【问题标题】:How to Install the app twice without interference in android?如何在不干扰android的情况下安装应用程序两次?
【发布时间】:2013-05-30 15:27:47
【问题描述】:

我有一个 Android 应用程序(我们称为 X),我想创建第二个应用程序 X2,但基于另一个应用程序。所以我将清单应用程序名称属性更改为 X2 我也更改了包名称...但是当我安装 X2 时,应用程序 X 被删除了!

我应该更改哪些属性,以便我可以在一台设备上独立安装这两个应用程序。我正在研究 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" >

更改后。

<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" >

【问题讨论】:

  • +1 这是一个合理的问题。
  • 这很奇怪。如果包名称不同,Android 应该允许您安装这两个应用程序。能否请您发布(开头)这两个清单文件?
  • 我更改了清单中的应用程序名称和标签,但这没有效果!安装后的应用程序具有相同的旧名称。

标签: android installation android-manifest


【解决方案1】:

它可以在其他具有更新平台的设备上运行!无论如何,正确的响应是您只需要更改应用程序的名称和包。

编辑 1: 现在,如果您使用的是 Android Studio,请使用 applicationIdSuffix 为每种风格创建一个应用。

debug {
        applicationIdSuffix ".debug"
    }

在此处阅读更多信息developer.android.com

【讨论】:

  • 是的,我更改了应用程序的包和名称,但仍然出现错误应用程序未安装。'
  • 如果您使用的是 AndroidStudio,请检查 @Arpit Srivastava 响应。
【解决方案2】:

还可以更改 gradle 脚本 build.gradle 模块中的 package 名称,它会起作用

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

【讨论】:

    【解决方案3】:

    第 1 步:选择(单击)您的应用程序主包,然后单击 Shift+f6 并更改包名

    第 2 步:转到 build.gradle 并将 applicationId 更改为新的包名称,如下所示 默认配置 {

        applicationId "com.sample.main"//give your new package name
    
        minSdkVersion 15
    
        targetSdkVersion 25
    
    }
    

    第 3 步:清理项目

    第 4 步:运行项目并确保它可以正常工作

    快乐编码.....

    【讨论】:

      【解决方案4】:

      我需要这样的工具,因为客户希望能够同时使用应用程序的测试版和发布版。 我正在更改 APK 的主命名空间以使用 apktool 实现此目的。

      我遵循以下步骤:

      • 使用apktool反编译apk java -jar apktool.jar d -o out -f my-app.apk
      • 将 out 目录中所有文件中的 com.mainnamespace 替换为 com.mainnamespacebeta
      • 将目录 out/smali/com/mainnamespace 重命名为 out/smali/com/mainnamespacebeta
      • 再次编译apk java -jar apktool.jar b -o ./debug.apk -f ./out
      • 使用 jarsigner 使用新密钥对 apk 进行签名。 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore key.keystore ./debug.apk "password" -storepass "password" -keypass "password"

      这里是如何签署 apk 以获取 key.keystore 的手册 - http://developer.android.com/tools/publishing/app-signing.html

      我还为 linux 创建了简单的脚本 - https://gist.github.com/vavrecan/8596303

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        • 1970-01-01
        • 2021-11-20
        • 2017-08-28
        相关资源
        最近更新 更多