ฉันสนุกมากกับการหาอันนี้ นี่คือการเดินผ่านของฉัน
A ถึง Z walk-through เกี่ยวกับวิธีสร้างไฟล์ gradle build ใน IntelliJ (v.13.1.4) walk-through นี้จะถือว่าคุณรู้วิธีสร้างไฟล์ keystore เพื่อให้บทเรียนนี้ทำงานได้คุณจะต้องวางไฟล์ keystore ของคุณในโฟลเดอร์แอพของคุณและคุณจะต้องมีไฟล์ zipalign.exe ของคุณอยู่ใน 'SDK-ROOT \ tools' ไฟล์นี้มักจะพบใน 'SDK-ROOT \ build-tools' และภายใต้โฟลเดอร์นี้มันจะอยู่ในโฟลเดอร์ api ที่สูงที่สุด (อัลฟ่าหรือเบต้าฉันแนะนำรุ่นอัลฟ่า)
สำหรับผู้ที่ต้องการข้ามไปที่นี่คือไฟล์ build 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' ควรถูกตั้งค่าเป็นเท็จ 'Jni Debug Build' ควรเป็นเท็จตั้ง 'Run Proguard' เป็นจริงและ 'Zip Align' เป็นจริง สิ่งนี้จะสร้างไฟล์บิลด์ แต่ไม่ได้อธิบายไว้ข้างต้นคุณจะต้องเพิ่มบางสิ่งลงในไฟล์บิลด์หลังจากนั้น ตำแหน่งไฟล์ ProGuard ที่นี่จะถูกตั้งค่าด้วยตนเองในไฟล์ build 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 ด้านบนนี้ ('การอ้างอิง') ควรอยู่ที่ด้านล่างของไฟล์กำหนดค่า แต่ไม่อยู่ในคอนเทนเนอร์ DSL ของ Android ในการสร้างคอนเทนเนอร์อ้างอิงจากเมนู IntelliJ ให้เลือก: โครงสร้างไฟล์ / โครงการ จากนั้นเลือก Facets อีกครั้งจากนั้น Android-Gradle (แอพ) คุณจะเห็นแท็บ 5 แท็บเหมือนที่กล่าวไว้ข้างต้น เลือกแท็บ 'การพึ่งพา' และเพิ่มการอ้างอิงที่คุณต้องการ
หลังจากทั้งหมดนี้เสร็จสิ้นคุณจะเห็นไฟล์ build แบบ Gradle คล้ายกับไฟล์ที่ด้านบนของ walk-through นี้ ในการสร้างการวางแนวซิปที่มีการเซ็นชื่อคุณจะต้องเปิดงาน Gradle คุณสามารถไปที่หน้าต่างนี้ได้โดยเลือก View / Tool Windows / Gradle จากที่นี่คุณสามารถดับเบิลคลิก 'assembleAssembleRelease สิ่งนี้จะสร้าง APK ที่สามารถติดตั้งได้ของคุณ
ปัญหาที่อาจเกิดขึ้นเมื่อทำการคอมไพล์รีลีสของคุณคือ (แต่ไม่ จำกัด เฉพาะ): ไฟล์บิลเดอร์ Gradle ของคุณอยู่ผิดที่ มีไฟล์ Gradle build สองไฟล์; หนึ่งอันในโฟลเดอร์รูทแอปพลิเคชันของคุณและอีกอันในโฟลเดอร์แอปภายใต้รูทแอปพลิเคชัน คุณต้องผู้ใช้หลัง
คุณอาจมีปัญหาที่เป็นขุย (หมายเหตุ: Android Developer Studio ดีกว่าในการตรวจพบปัญหาผ้าสำลีมากกว่า IntelliJ คุณจะสังเกตเห็นสิ่งนี้เมื่อพยายามสร้าง APK ที่ลงชื่อจากตัวเลือกเมนู)
หากต้องการแก้ไขปัญหาเกี่ยวกับผ้าสำลีคุณจะต้องวางคอนเทนเนอร์ DSL ต่อไปนี้ไว้ในคอนเทนเนอร์ Android (ที่ด้านบน):
android {
....
lintOptions {
abortOnError false
}
....
}
การวางสิ่งนี้ไว้ในคอนเทนเนอร์ DSL ของ Android จะทำให้เกิดไฟล์ข้อผิดพลาดในโฟลเดอร์บิลด์ (ใต้โฟลเดอร์แอพของคุณโดยตรง) ชื่อไฟล์ควรเป็นชื่ออย่างเช่น 'lint-results-release-fatal.html' ไฟล์นี้จะบอกคุณ ชั้นเรียนที่ข้อผิดพลาดเกิดขึ้น ไฟล์อื่นที่จะสร้างขึ้นคือไฟล์ XML ที่มี 'รหัสปัญหา' ที่เกี่ยวข้องกับข้อผิดพลาดที่เป็นขุย ชื่อไฟล์ควรเป็น 'lint-results-release-fatal.xml' บางแห่งใกล้ด้านบนของไฟล์คุณจะเห็นโหนด 'ปัญหา' ซึ่งคุณจะเห็นบางสิ่งที่คล้ายกับ 'id = "IDOfYourLintProblem"'
เพื่อแก้ไขปัญหานี้ให้เปิดไฟล์ในโครงการของคุณที่ระบุไว้ในไฟล์ 'lint-results-assembleRelease-fatal.html' และป้อนบรรทัดของรหัสต่อไปนี้ในไฟล์ Java Class เหนือชื่อคลาส: @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 ราก \ SDK'
หลังจากเสร็จสิ้นให้กลับไปที่หน้าต่างงาน Gradle และดับเบิลคลิกที่ assembleAssembleRelease
หากประสบความสำเร็จคุณควรไปที่โฟลเดอร์แอพ \ build \ apk และค้นหาไฟล์ APK ที่ปรับใช้ได้ของคุณ