Android Studio同一工程生成不同的app名,包名,图标分别设置,路径和文件名

修改app的build.gradle文件

android {
    ...
    productFlavors {

        app1 {
            applicationId "com.johan.demo"
            // 生成@string/app_name为demo 要把@string/app_name清掉
            resValue "string","app_name","demo"
            // 定义app_icon字段,在AndroidManifest.xml文件中用到 
            manifestPlaceholders = [app_icon : "@mipmap/ic_launcher"]
        }

        app2 {
            applicationId "com.johan.demo1"
            resValue "string","app_name","demo1"
            manifestPlaceholders = [app_icon : "@mipmap/ic_launcher1"]
        }
    }
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
}

出现Error:All flavors must now belong to a named flavor dimension. Learn more at
必须要所有的flavor 都属于同一个维度

defaultConfig {
	 targetSdkVersion:***
	minSdkVersion :***
	versionCode:***
	 versionName :***
	//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
	flavorDimensions "versionCode"
}

修改AndroidManifest.xml文件



    
        
            
                
                
            
        
    


这样就会生成两个apk分别在文件夹app1和app2中
修改生成的名字和路径
Gradle3.3 以上的方法 修改app的build.gradle文件
加入:

android {
    ...
	applicationVariants.all { variant ->
	 if (variant.buildType.name != "debug") {
	     variant.getPackageApplicationProvider().get().outputDirectory = new File(project.rootDir.absolutePath + "/apk")
	 }
	 variant.getPackageApplicationProvider().get().outputScope.apkDatas.forEach { apkData ->
	     apkData.outputFileName = ((project.name != "app") ? project.name : rootProject.name) + "-" +
	             variant.versionName + "_" +
	             variant.flavorName + "_" +
	             variant.buildType.name + "_" +
	             ".apk"
	 }
	}
}

这个是全局的,所有生成的都会被设置到同一个文件夹,以文件名 variant.flavorName 区别.

你可能感兴趣的:(Android Studio同一工程生成不同的app名,包名,图标分别设置,路径和文件名)