我在计算这个过程中获得了很多乐趣。下面是我的演练。
如何在IntelliJ中创建gradle构建文件(v.13.1.4)
本演练假设您知道如何生成密钥存储库文件。
为了本教程的工作,你需要你的keystore文件位于你的应用文件夹,你需要有你的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'
}
You can build part of this build file (above) from menu option: File/Project Structure
From here select Facets and click 'Android-Gradle(App).
From here you will see tabs: 'Properties', 'Signing', 'Flavors', 'Build Types' and 'Dependencies' for this walk-through we will just be using 'Signing' and 'Build Types'.
Under 'Build Types' (in the name section) enter any name that you wish to identify your build type configuration and in the other 4 fields enter your keystore information (setting the keystore path the the one under your app folder).
在“构建类型”下,在名称字段中输入值“assemblerrelease”,“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菜单中构建依赖项容器,选择:File/Project Structure。再次选择Facets,然后选择Android-Gradle(app)。您将看到与上述相同的5个选项卡。选择“Dependencies”选项卡并添加所需的依赖项。
所有这些都完成后,您应该会看到一个Gradle构建文件,类似于本演练开头的文件。
要构建你签名的zip对齐版本,你需要打开Gradle任务。你可以通过选择视图/工具窗口/Gradle来进入这个窗口。
在这里你可以双击' assembleassemblerrelease '。这将生成可部署的APK。
编译你的版本时可能出现的潜在问题有(但不限于):你的Gradle构建文件在错误的位置。有两个Gradle构建文件;一个在应用程序根文件夹中,另一个在应用程序根下的应用程序文件夹中。你必须使用后者。
你也可能有棉绒问题。(注意:Android Developer Studio在发现Lint问题方面比IntelliJ要好得多,当你试图从菜单选项中生成签名APK时,你会注意到这一点)
为了解决lint问题,你需要把下面的DSL容器放入android容器中(在顶部):
android {
....
lintOptions {
abortOnError false
}
....
}
putting this inside your android DSL container will cause an error file to be generated in the build folder (directly under your app folder) the file name should be something like 'lint-results-release-fatal.html' this file will tell you the the class where the error occurred. Another file that will be generated is an XML file that contains the 'issue ID' associated with the lint error. The file name should be something like 'lint-results-release-fatal.xml'. Somewhere near the top of the file you will see a node 'issue' inside which you will see something similar to 'id="IDOfYourLintProblem"'
要纠正此问题,打开项目中'lint-results- assemblerrelease -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-Root\sdk
完成后,返回Gradle任务窗口,双击assembleassemblerrelease。
如果一切都成功了,你应该能够进入app\build\apk文件夹并找到你的可部署apk文件。