Gradle Generated APK名称始终具有" app"而不是我的应用名称

时间:2016-07-04 00:17:22

标签: android gradle

以下构建脚本会生成三个APK,但似乎不包含应用程序的名称。

buildTypes {
  release {
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    applicationVariants.all { variant ->
        appendVersionNameVersionCode(variant, defaultConfig)
    }
  }
}

def appendVersionNameVersionCode(variant, defaultConfig) {
  variant.outputs.each { output ->
    if (output.zipAlign) {
      def file = output.outputFile
      def fileName = file.name.replace(".apk", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk")
      output.outputFile = new File(file.parent, fileName)
    }

    def file = output.packageApplication.outputFile
    def fileName = file.name.replace(".apk", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk")
    output.packageApplication.outputFile = new File(file.parent, fileName)
  }
}

这会产生:

app-development-release-null-1.apk
app-live-release-null-1.apk

如何删除" null"并取代" app"用我的应用程序的实际名称?

更新
我通过在gradle文件的顶部添加一个versionName来修复null。出于某种原因,它不见了,但仍然无法修复" app"字符串并将其替换为我的应用程序名称。

2 个答案:

答案 0 :(得分:0)

settings.gradle:

rootProject.name = 'appName'

答案 1 :(得分:0)

这是我的方法,这应该给你一些提示。

我在root build.gradle中添加了应用名称:

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:2.1.2'
    // other class path.

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
  }
}

allprojects {
  repositories {
    jcenter()
    mavenCentral()
  }

 ext {
    androidApplicationId = 'com.sample.myproject'
    androidVersionCode = 1
    androidVersionName = "1.0"
    androidAppName= 'myproject'
  }
}

然后在应用project build gradle中添加def baseName

android {

  compileSdkVersion 23
  buildToolsVersion "23.0.3"

  defaultConfig {
    minSdkVersion 15
    targetSdkVersion 23
    applicationId globalConfiguration.getAt("androidApplicationId")
    versionCode globalConfiguration.getAt("androidVersionCode")
    versionName globalConfiguration.getAt("androidVersionName")

    def baseName = globalConfiguration.getAt("androidAppName")
    project.ext.set("archivesBaseName", baseName + "-" + defaultConfig.versionName);
  }
...

您将获得生成的apk,其应用名称如下:

myproject-1.0-debug.apk