在同一台Android设备上,是否可以同时安装多个同一项目的APK?

访客 189 0

前言

通常情况下,当我们在一台Android设备上安装具有相同包名的APK应用时,只能安装一个应用。如果设备上已经安装了一个APK,再次安装该APK将会覆盖之前的应用。如果想要在同一台设备上安装多个相同包名的APK,唯一的解决办法就是修改包名。对于简单的项目来说还好,但当一个项目中有许多类时,手动更改包名绝对不是可取的方式。那么是否存在某种简便方法来解决这个问题呢?

应对策略:

请在app的build.gradle文件中添加以下代码:

buildTypes { // 在这里添加你的自定义构建类型 }

发布 {

禁用代码压缩

proguardFiles(getDefaultProguardFile(proguard-android.txt), proguard-rules.pro)

}

修复 {

将“applicationIdSuffix ".free"”改写为“应用程序ID后缀为“.free””。

}

}

}

没错,你可以看到将“applicationIdSuffix ".free"”改写为“应用程序ID后缀为“.free””。这一行关键的代码。就是这一句代码,使得我们的包名变成了packageName.free,比如:我们包名是com.myApp,加上这句后,生成的apk的包名就会变成com.myApp.free,这里的free可以根据自己的打包用途来命名。

上这种方式就是BuildTypes,可以在下面的图中看到:

在同一台Android设备上,是否可以同时安装多个同一项目的APK?-第1张图片-谷歌商店上架

在这里插入图片描述

另一种方式:风味多样

productFlavors { }

pro{

applicationIdSuffix '.pro'

}

免费 {

将“applicationIdSuffix ".free"”改写为“应用程序ID后缀为“.free””。

}

}

或者:

productFlavors { }

专业 {

applicationId = com.myApp.pro

}

免费 {

applicationId = com.myApp.free

}

}

在同一台Android设备上,是否可以同时安装多个同一项目的APK?-第1张图片-谷歌商店上架

在这里插入图片描述

在这种情况下,您可以利用Build Variants来选择所需打包版本。

下面是我生成的apk

手机上安装的应用有:

这三个应用都属于同一个项目,经过处理后可以在同一台设备上安装(因为它们的包名不相同)。

需要注意的是:

productFlavors { }

专业 {

applicationId = com.myApp.pro

}

免费 {

applicationId = com.myApp.free

}

}

buildTypes { // 在这里添加你的自定义构建类型 }

发布 {

禁用代码压缩

proguardFiles(getDefaultProguardFile(proguard-android.txt), proguard-rules.pro)

}

修复 {

将“applicationIdSuffix ".test"”改写为“应用程序ID后缀为“.test””。

}

}

当使用两种方式同时时,buildTypes中的设置后缀将会紧跟在productFlavors中设置的包名后面。因此,包名将变为com.myApp.pro.test和com.myApp.free.test。

好的,现在我们可以在同一台设备上安装多个相同项目的apk了。

总结:

在Android Studio的build.gradle文件中,Application ID是指Android项目的唯一标识,它是不可更改的。具体如下所示:

android {

使用编译SDK版本25

buildToolsVersion '25.0.2'

defaultConfig { }

applicationId "com.myApp"

最低支持版本为15

目标SDK版本为25。

版本号为1

versionName "1.0"

testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'

}

并且Application ID和package的属性值不一样的,虽然不一样,但是当我们在构建项目的时候,会复制Application ID给package的属性值,并且这个属性值是唯一的,package属性才是真正作为您应用程序唯一身份凭证。

当我们浏览apk文件中的AndroidMainifest.xml时,会发现package名称与我们所设定的完全一致。

这就是为何可以在同一设备上安装的原因。

一旦我们的apk发布,该项目的包名将无法更改。然而,通常情况下我们也不会轻易修改包名。

标签: 设备 项目 属性 方式

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~