弄清楚这一点我玩得很开心。这是我的演练。
关于如何在 IntelliJ (v.13.1.4) 中创建 gradle 构建文件的 A 到 Z 演练本演练假设您知道如何制作密钥库文件。要使本教程正常工作,您需要将密钥库文件放在 app 文件夹中,并且需要将 zipalign.exe 文件放在“SDK-ROOT\tools”中。该文件通常位于“SDK-ROOT\build-tools”中,在此文件夹下,它将位于最高的 api 文件夹中(alpha 或 beta,我推荐 alpha 版本)。
对于那些希望直接进入这里的人来说,是 gradle 构建文件。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
signingConfigs {
playstore {
keyAlias 'developers4u'
keyPassword 'thisIsNotMyRealPassword'
storeFile file('developers4u.keystore')
storePassword 'realyItIsNot'
}
}
buildTypes {
assembleRelease {
debuggable false
jniDebugBuild false
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
zipAlign true
signingConfig signingConfigs.playstore
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:support-v4:20.0.0'
implementation 'com.android.support:appcompat-v7:20.0.0'
}
您可以从菜单选项构建此构建文件的一部分(上图):文件/项目结构从这里选择 Facets 并单击“Android-Gradle(App)。从这里您将看到选项卡:“属性”、“签名”、“风味”、“构建类型”和“依赖项”,在本演练中,我们将只使用“签名”和“构建类型”。在“构建类型”下(在名称部分)输入您希望识别构建类型配置的任何名称,并在其他 4 个字段中输入您的密钥库信息(将密钥库路径设置为您的应用程序文件夹下的那个)。
在“构建类型”下,在名称字段中输入值“assembleRelease”,“Debuggable”应设置为 false,“Jni Debug Build”应为 false,将“Run Proguard”设置为 true,“Zip Align”设置为 true。这将生成构建文件,但不像上面描述的那样,之后您必须在构建文件中添加一些东西。此处的 ProGuard 文件位置将在 gradle 构建文件中手动设置。(如上图所示)
之后您必须添加的 DSL 容器如下:
android {
....
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
....
}
您还必须添加:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:support-v4:20.0.0'
implementation 'com.android.support:appcompat-v7:20.0.0'
}
请注意,上面的这个 DSL 容器('dependencies')应该在配置文件的底部,而不是在 android DSL 容器内。为了从 IntelliJ 菜单构建依赖项容器,请选择:文件/项目结构。从那里再次选择 Facets,然后选择 Android-Gradle(app)。您将看到与上述相同的 5 个选项卡。选择“依赖项”选项卡并添加所需的依赖项。
完成所有这些操作后,您应该会看到一个类似于本演练顶部的文件的 Gradle 构建文件。要构建签名的 zip 对齐版本,您需要打开 Gradle 任务。您可以通过选择 View/Tool Windows/Gradle 进入此窗口。从这里你可以双击'assembleAssembleRelease. 这应该会生成您的可部署 APK。
编译您的版本时可能出现的潜在问题是(但不限于): 您的 Gradle 构建文件位于错误的位置。有两个 Gradle 构建文件;一个在您的应用程序根文件夹中,另一个在应用程序根目录下的 app 文件夹中。您必须使用后者。
您可能还会遇到棉绒问题。(注意:Android Developer Studio 在发现 Lint 问题方面比 IntelliJ 好得多,当您尝试从菜单选项生成签名 APK 时会注意到这一点)
要解决 lint 问题,您需要将以下 DSL 容器放入 android 容器中(在顶部):
android {
....
lintOptions {
abortOnError false
}
....
}
把它放在你的 android DSL 容器中会导致在构建文件夹中生成一个错误文件(直接在你的应用程序文件夹下)文件名应该类似于“lint-results-release-fatal.html”这个文件会告诉你发生错误的类。将生成的另一个文件是一个 XML 文件,其中包含与 lint 错误关联的“问题 ID”。文件名应该类似于“lint-results-release-fatal.xml”。在文件顶部附近的某处,您会看到一个节点“问题”,在该节点中您会看到类似于“id="IDOfYourLintProblem"”的内容
要更正此问题,请在项目中打开 'lint-results-assembleRelease-fatal.html' 文件中列出的文件,然后在 Java 类文件中的类名上方输入以下代码行:@SuppressLint("IDOfYourLintProblem ”)。您可能必须导入 'android.annotation.SuppressLint;'
因此,您的 java 类文件应如下所示:
package com.WarwickWestonWright.developers4u.app.CandidateArea;
import android.annotation.SuppressLint;
... other imports
@SuppressLint("IDOfYourLintProblem")
public class SearchForJobsFragment extends Fragment {... rest of your class definition}
请注意,抑制 lint 错误并不总是最好的想法,您最好更改导致 lint 错误的代码。
另一个可能发生的问题是,如果您没有为 Gradle HOME 环境变量设置环境变量。此变量名为“GRADLE_HOME”,应设置 gradle 主目录的路径,例如“C:\gradle-1.12”有时您可能还想为“ANDROID_HOME”设置环境变量,将其设置为“YOUR- SDK-根\sdk'
完成后返回 Gradle 任务窗口并双击 assembleAssembleRelease。
如果一切顺利,您应该能够转到文件夹 app\build\apk 并找到可部署的 APK 文件。