如何设置gradle和android studio做发布构建?


76

我想构建android应用并开始对其进行签名。为此,我需要发布apk的发行版。Google文档仅建议使用Eclipse和蚂蚁发布版本的方法:http : //developer.android.com/tools/publishing/app-signing.html#releasecompile

但是我找不到如何强制gradle build发行版本的apk。build.gradle也没有给出任何提示。gradlew tasks建议没有安装发布版本的配置,但存在卸载版本:

Install tasks
-------------
installDebug - Installs the Debug build
installTest - Installs the Test build for the Debug build
uninstallAll - Uninstall all applications.
uninstallDebug - Uninstalls the Debug build
uninstallRelease - Uninstalls the Release build
uninstallTest - Uninstalls the Test build for the Debug build

我的build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile files('libs/android-support-v4.jar')
    compile project(":libraries:ActionBarSherlock")
    compile project(":libraries:CollabsibleSearchMenu")
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}

我缺少什么?


我目前在Android Studio中不使用Gradle,但是使用原始Ant版本进行操作的方法是简单地使用菜单中的Build-> Generate Signed APK
2013年

谢谢,我错过了,它将成功。但是我仍然想知道如何分别生成未签名软件包的发行版,然后进行签名以及我想要的任何东西。
IBr

您应该根据自己的构建变体自动获得发布和调试版本。如果您想要未签名的软件包,请告诉我。

Answers:


43

在最新版本的android studio中,您可以执行以下操作:

./gradlew assembleRelease

aR简称。这将产生一个未签名的发布apk。构建签名的apk可以类似地完成,也可以在Android Studio中使用Build-> Generate Signed Apk。

在这里查看文档

这是我的build.gradle供参考:

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:0.5.+'
  }
}
apply plugin: 'android'

dependencies {
  compile fileTree(dir: 'libs', include: '*.jar')
}

android {
compileSdkVersion 17
buildToolsVersion "17.0.0"

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }

    // Move the tests to tests/java, tests/res, etc...
    instrumentTest.setRoot('tests')

    // Move the build types to build-types/<type>
    // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
    // This moves them out of them default location under src/<type>/... which would
    // conflict with src/ being used by the main source set.
    // Adding new build types or product flavors should be accompanied
    // by a similar customization.
    debug.setRoot('build-types/debug')
    release.setRoot('build-types/release')

}

buildTypes {
    release {

    }
}

3
在最新版本的Android Studio(0.2.11)中,“生成签名的Apk”不再起作用。您将被引导在gradle.bundle文件中设置一个签名配置,除非您愿意在那里加密

13
为什么Android Studio越新,使用起来就越困难?
Bagusflyer

119
  1. 打开Build Variants窗格,该窗格通常位于窗口的左下角

构建变体

  1. 设置debugrelease
  2. shift+f10 跑!!

然后,Android Studio将执行assembleRelease任务并将xx-release.apk安装到您的设备上。


5
如何打开构建变体?我可以在Android Studio中执行此操作吗?
Lou Morda

17
构建变体位于左侧,请参见附件的屏幕截图,以获取更好的位置信息:)屏幕截图
Jake Zachariah Nixon

7
试过这个。但是出现错误:“ app-release-unsigned.apk未签名。请使用“项目结构”对话框配置所选风味的签名信息。打开项目结构对话框”
jrhamza

2
@jrhamza跟随它提示您添加释放密钥。
ipcjs

2
如果您从未打开过Build Variants窗口,那么这个简单的开关隐藏得多么惊人!
aardvarkk

31

无需更新gradle即可在Android Studio中制作发布应用。如果您是日食用户,那么它对您来说是如此简单。如果您是新手,请按照以下步骤操作

1:转到工具栏部分的“构建”。2:选择“生成签名的APK ...”选项。 在此处输入图片说明

3:填写打开的表格并继续下一步4:如果您已经拥有.keystore或.jks,则选择该文件,输入您的密码,别名和相应的密码。5:或者没有.keystore或.jks文件,然后单击“创建新...”按钮,如图1所示,然后填写表格。在此处输入图片说明

以上过程是手动进行构建。如果您希望android studio自动对您的应用进行签名

在Android Studio中,您可以将项目配置为在构建过程中自动对发布APK进行签名:

在项目浏览器上,右键单击您的应用程序,然后选择“打开模块设置”。在“项目结构”窗口中,在“模块”下选择应用程序的模块。单击签名选项卡。选择密钥库文件,输入此签名配置的名称(您可能会创建多个),然后输入所需的信息。 在此处输入图片说明 图4.在Android Studio中创建签名配置。

单击“构建类型”选项卡。选择发布版本。在“签名配置”下,选择刚创建的签名配置。 在此处输入图片说明 图5.在Android Studio中选择一个签名配置。

4:最重要的事情是在调试时使debuggable = false。

    buildTypes {
        release {
           minifyEnabled false
          proguardFiles getDefaultProguardFile('proguard-  android.txt'), 'proguard-rules.txt'
        debuggable false
        jniDebuggable false
        renderscriptDebuggable false
        zipAlignEnabled true
       }
     }

欲了解更多信息,请访问developer.android.com


1
你是救命兄弟。
Jigar'9

20

要激活installRelease任务,您只需要一个signingConfig。就这些。

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks中

最后,该插件会为所有构建类型(调试,发布,测试)创建安装/卸载任务,只要它们可以安装(需要签名)即可。

这是您想要的:

Install tasks
-------------
installDebug - Installs the Debug build
installDebugTest - Installs the Test build for the Debug build
installRelease - Installs the Release build
uninstallAll - Uninstall all applications.
uninstallDebug - Uninstalls the Debug build
uninstallDebugTest - Uninstalls the Test build for the Debug build
uninstallRelease - Uninstalls the Release build   <--- release

这是获取installRelease任务的方法:

范例build.gradle

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
}

apply plugin: 'com.android.application'

android {
  compileSdkVersion 22
  buildToolsVersion '22.0.1'

  defaultConfig {
    applicationId 'demo'
    minSdkVersion 15
    targetSdkVersion 22
    versionCode 1
    versionName '1.0'
  }

  signingConfigs {
      release {
          storeFile <file>
          storePassword <password>
          keyAlias <alias>
          keyPassword <password>
      }
  }

  buildTypes {
    release {
        signingConfig signingConfigs.release
    }
  }
}

这是否意味着我们将密码保持为可读格式?如何对公共存储库中的项目进行处理,以使密码保密?
sivag1 2016年

2
您可以放入本地gradle.properties或将其存储在CI中。
Jared Burrows

1
找不到方法storeFile()
hiddeneyes02 '18

storeFile file(filename)
诺列霍夫

生成类型中的signingConfig signingConfigs.release对我来说有所不同!
paul_f

7

这是配置运行发行版的过程

1-将构建变体更改为发行版本。

在此处输入图片说明

2-开放的项目结构。 在此处输入图片说明

3-将默认配置更改为$ signingConfigs.release 在此处输入图片说明


1
你是男人中的神
米奇

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.