弄清楚这一点,我有很多乐趣。这是我的演练。
关于如何在IntelliJ中创建gradle构建文件的A至Z演练(v.13.1.4)此演练假定您知道如何制作密钥库文件。为了使本教程正常工作,您需要将密钥库文件放在应用程序文件夹中,并且需要将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个字段中输入密钥库信息(将密钥库路径设置为app文件夹下的密钥库路径)。
在“构建类型”下的名称字段中输入值“ 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任务。您可以通过选择视图/工具窗口/渐变进入此窗口。在这里,您可以双击'assembleAssembleRelease。这应该会生成可部署的APK。
编译发行版时可能发生的潜在问题是(但不限于):您的Gradle构建文件放置在错误的位置。有两个Gradle构建文件;一个在您的应用程序根文件夹中,另一个在应用程序根目录下的应用程序文件夹中。您必须使用后者。
您可能还会遇到皮棉问题。(注意:与IntelliJ相比,Android Developer Studio在发现Lint问题上要好得多,当您尝试从菜单选项生成签名的APK时会注意到这一点)
为了解决棉绒问题,您需要将以下DSL容器放入android容器中(顶部):
android {
....
lintOptions {
abortOnError false
}
....
}
将其放入您的android DSL容器中将导致在build文件夹(直接在您的应用文件夹下)中生成错误文件,该文件名应类似于'lint-results-release-fatal.html',该文件将告诉您发生错误的类。将生成的另一个文件是一个XML文件,其中包含与棉绒错误相关的“问题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}
请注意,抑制棉绒错误并不总是最好的IDEA,您最好更改导致棉绒错误的代码。
可能发生的另一个问题是,如果尚未为Gradle HOME环境变量设置环境变量。此变量名为“ GRADLE_HOME”,应将其设置为gradle主目录的路径,例如“ C:\ gradle-1.12”。有时,您可能还希望将“ ANDROID_HOME”的环境变量设置为“ YOUR- SDK-Root \ sdk'
完成此操作后,请返回Gradle任务窗口,然后双击assembleAssembleRelease。
如果一切成功,则应该能够转到文件夹app \ build \ apk并找到可部署的APK文件。