如何从相同的android源代码创建两个不同的应用程序

如何从相同的android源代码创建两个不同的应用程序,android,android-manifest,Android,Android Manifest,我想创建两个不同版本的应用程序,以便它们都可以驻留在同一台设备上,我需要以某种方式欺骗apk安装程序,使其认为这些应用程序不一样,并允许我同时安装这两个应用程序 如何做到这一点?您必须更改其中一个应用程序的AndroidManifest.xml中的包名;这是Android用来识别应用程序的关键 虽然可以在APK生成后修改其清单,但并不总是可靠的。您必须更改其中一个应用程序的AndroidManifest.xml中的包名;这是Android用来识别应用程序的关键 虽然可以在构建APK后修改其清单,

我想创建两个不同版本的应用程序,以便它们都可以驻留在同一台设备上,我需要以某种方式欺骗apk安装程序,使其认为这些应用程序不一样,并允许我同时安装这两个应用程序


如何做到这一点?

您必须更改其中一个应用程序的AndroidManifest.xml中的包名;这是Android用来识别应用程序的关键


虽然可以在APK生成后修改其清单,但并不总是可靠的。

您必须更改其中一个应用程序的AndroidManifest.xml中的包名;这是Android用来识别应用程序的关键


虽然可以在构建APK后修改其清单,但并不总是可靠的。

您可以使用Gradle来构建和管理依赖关系。您可以创建应用程序的风格(例如,具有不同配置的不同版本)

在build.gradle中:

android {
    defaultConfig {
        minSdkVersion 8
        versionCode 10
    }

    productFlavors {
        flavor1 {
            packageName "com.example.flavor1"
            versionCode 20
        }

        flavor2 {
            packageName "com.example.flavor2"
            minSdkVersion 14
        }
    }
}
更多信息:

您可以使用Gradle构建和管理依赖关系。您可以创建应用程序的风格(例如,具有不同配置的不同版本)

在build.gradle中:

android {
    defaultConfig {
        minSdkVersion 8
        versionCode 10
    }

    productFlavors {
        flavor1 {
            packageName "com.example.flavor1"
            versionCode 20
        }

        flavor2 {
            packageName "com.example.flavor2"
            minSdkVersion 14
        }
    }
}
更多信息:

但是我必须更改我所有的软件包前缀,对吗?在这种情况下,“软件包”一词有点过多,所以不清楚你在问什么。如果您指的是Java源代码包,那么不,它们根本不需要更改。Android使用AndroidManifest中定义的包来确定apk的唯一性;这必须改变。如果您认为由于引用您的活动/等而需要更改Java包名称,请知道清单可以通过它们的(固定的)完全限定名来引用它们,而不仅仅是它们的后缀,让你不再需要更改它们才能继续正常工作。但是我必须更改我所有的包前缀,对吗?在这种情况下,“包”这个词有点过多,所以不清楚你在问什么。如果您指的是Java源代码包,那么不,它们根本不需要更改。Android使用AndroidManifest中定义的包来确定apk的唯一性;这必须改变。如果您认为由于引用您的活动/等而需要更改Java包名称,请知道清单可以通过它们的(固定的)完全限定名称来引用它们,而不仅仅是它们的后缀,这样您就无需更改它们以继续正常工作。