ข้อผิดพลาด: ไม่พบการกำหนดค่าด้วยชื่อ "ค่าเริ่มต้น" ใน Android Studio


117

ฉันใช้คลังวอลเลย์เพื่อดำเนินการเครือข่ายใน Android ดังนั้นฉันจึงพยายามเพิ่มไลบรารีนี้ในโปรเจ็กต์ของฉันซึ่งสร้างใน Android Studio และระบบ gradle

ฉันเพิ่มคลังวอลเลย์ในโครงการของฉัน แต่เมื่อฉันซิงค์กับ gradle ฉันก็ได้รับข้อความแสดงข้อผิดพลาด ฉันลองใช้คำตอบทั้งหมดที่ฉันเห็นที่นี่ แต่ไม่มีอะไรได้ผลสำหรับฉัน

ข้อความแสดงข้อผิดพลาด : ไม่พบการกำหนดค่าด้วยชื่อ 'ค่าเริ่มต้น' ใน Android Studio

วอลเล่ย์ / build.gradle

apply plugin: 'android-library'

android {

    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    sourceSets {
        defaultConfig {
            minSdkVersion 8
            targetSdkVersion 19
        }

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

        }
    }
}

app / build.gradle

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile project(':library:volley')
}

ราก / build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.1'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

settings.gradle

include ':app'
include ':library:volley'

คุณได้เพิ่มโฟลเดอร์ไลบรารีในตำแหน่งที่ถูกต้องเช่นชื่อโครงการ / ไลบรารีหรือไม่?
Ajay S

ฉันเพิ่มไดเร็กทอรีไลบรารีในไดเรกทอรีแอพ
บอท



1
ในกรณีของฉันหนึ่งในไฟล์คอนฟิกูเรชัน gradle ของฉันหายไปมันดันไม่ถูกต้อง
Zar E Ahmer

คำตอบ:


68

เพิ่มโฟลเดอร์ไลบรารีของคุณในตำแหน่งรูทของโปรเจ็กต์ของคุณและคัดลอกไฟล์ไลบรารีทั้งหมดที่นั่น สำหรับอดีต YourProject / ไลบรารีให้ซิงค์และสิ่งที่เหลือดูเหมือนว่าฉันจะโอเค


5
นอกจากนี้ยังอาจหมายความว่าไฟล์ build.gradle หรือไฟล์. img หายไปในไดเร็กทอรีไลบรารี
WKS

7
@aleb ./gradlew assembleDebugจะได้รับข้อความแสดงข้อผิดพลาดเต็มคุณเพียงแค่ต้องเรียกใช้คำสั่งสถานี: คุณสามารถทำได้จากAndroid Studioหรือแอปเทอร์มินัลภายนอก
สิบเอ็ด

คุณสามารถโพสต์ตัวอย่างและภาพถ่ายได้หรือไม่? ขอบคุณเพราะวิธีนี้ใช้ไม่ได้

ขอบคุณเพื่อนที่บันทึกวันของฉัน ขอบคุณ <3
Gufran Khurshid

1
สิ่งนี้ทำให้ฉันรู้ว่าฉันขาดโมดูลย่อยของฉันซึ่งขยายให้ชัดเจนยิ่งขึ้นโดยคำตอบของ @ ViliusK
Ionoclast Brigham

96

ลอง:

git submodule init
git submodule update

1
สิ่งนี้ใช้ได้กับไลบรารีที่เพิ่มเป็นโมดูลย่อยอย่างแน่นอนขอบคุณ!
Arne

@Vilius ฉันเรียกใช้สิ่งนี้ใน Terminal จากไดเร็กทอรีใด ผมพยายามที่จะทำงานในไดเรกทอรีโครงการของฉัน Not a git repository (or any of the parent directories)แต่มันบอกว่า ฉันมีแอปตัวอย่างที่พยายามจะนำเข้า แต่แอปนั้นไม่ได้ตั้งค่าสำหรับการไล่ระดับดังนั้นพวกเขาจึงรวมแอปไว้ ฉันสงสัยว่านั่นเป็นส่วนหนึ่งของปัญหาหรือไม่ อันที่จริงฉันไม่มีsettings.gradleไฟล์ด้วยซ้ำ เท่านั้นbuild.gradleและอื่น ๆ
Azurespot

2
คุณควรเรียกใช้จาก root dir ของโครงการ ควรเป็นโครงการจาก git repo และควรเป็นโครงการที่มีโครงการย่อย ดูในbuild.gradleไฟล์เช่นcompile project(':libs:my-custom:library')
ViliusK

1
> โมดูลย่อยช่วยให้คุณเก็บที่เก็บ Git อื่นไว้ในไดเร็กทอรีย่อยของที่เก็บของคุณ ที่เก็บอื่นมีประวัติของตัวเองซึ่งไม่รบกวนประวัติของที่เก็บปัจจุบัน สิ่งนี้สามารถใช้เพื่อให้มีการอ้างอิงภายนอกเช่นไลบรารีของบุคคลที่สามเป็นต้น ที่มา
ViliusK

3
git submodule เกี่ยวข้องกับข้อผิดพลาดของ gradle build อย่างไร
teddy

22

นี่อาจเป็นกรณีที่หายาก แต่สำหรับฉันแล้วห้องสมุดที่รวมอยู่ในการตั้งค่าไม่มีการปรับระดับ

เช่นฉันมี: include ':libraries:Android-RateThisApp:library'ใน settings.gradle ของฉัน

แต่โฟลเดอร์ Android-RateThisApp ว่างเปล่า ทันทีที่ฉันตรวจสอบโมดูลย่อยนี้การซิงโครไนซ์ระดับชั้นสำเร็จ


ใช่คุณอาจต้องและgit submodule init git submodule updateเป็นกรณีปกติเมื่อตรวจสอบโครงการที่มีโมดูลย่อย
ViliusK

ไม่ได้หายากเลย .... นี่เป็นกรณีของฉันที่มีข้อผิดพลาด sorta .. หลายครั้ง
sirvon

นี่เป็นกรณีของฉัน! อัปเดต react-native-maps และเปลี่ยนเส้นทางไปยังไดเรกทอรี Android
cbartondock

14

หากคุณต้องการใช้โฟลเดอร์ไลบรารีเดียวกันสำหรับหลายโปรเจ็กต์คุณสามารถอ้างอิงในการไล่ระดับไปยังตำแหน่งภายนอกได้ดังนี้:

settings.gradle:

include 'app', ':volley'
project(':volley').projectDir = new File('../libraries/volley')

ในแอป build.gradle ของคุณ

dependencies {
    ...
    compile project(':volley')
...}

สิ่งนี้ใช้ได้ผลสำหรับฉันเมื่อฉันมีโครงการทั้งหมดเป็นโมดูลย่อย แต่ฉันต้องการใช้โมดูลไลบรารีของโครงการนั้นเท่านั้น (และไม่รวมแอปตัวอย่าง)
phreakhead

6

ฉันประสบปัญหานี้เช่นกัน แต่ฉันทำตามขั้นตอนต่อไปนี้: - 1) ฉันเพิ่มโมดูล (ไลบรารี) ให้กับชื่อโฟลเดอร์เฉพาะ ThirdPartyLib

ในการแก้ไขปัญหานี้ฉันไปที่settings.gradleมากกว่าแค่เพิ่ม follwing: -

โครงการ (':'). projectDir = ไฟล์ใหม่ ('ThirdPartyLib /')

: - คือชื่อโมดูล ...


3

หากต้องการวินิจฉัยข้อผิดพลาดนี้อย่างรวดเร็วให้ไปที่เทอร์มินัลหรือใช้เทอร์มินัลที่มีอยู่ใน Android Studio (เข้าถึงได้ในแถบสถานะด้านล่าง) เปลี่ยนเป็นไดเร็กทอรีหลักสำหรับ PROJECT ของคุณ (ที่settings.gradleตั้ง)

1. ) ตรวจสอบให้แน่ใจว่าของคุณsettings.gradleมีโครงการย่อย อะไรทำนองนี้. สิ่งนี้ช่วยให้แน่ใจว่าบิลด์หลายโปรเจ็กต์ของคุณรู้เกี่ยวกับโปรเจ็กต์ย่อยไลบรารีของคุณ

include ':apps:App1', ':apps:App2', ':library:Lib1'

โดยข้อความระหว่างโคลอนเป็นไดเร็กทอรีย่อย

2. ) เรียกใช้คำสั่ง gradle ต่อไปนี้เพียงแค่ดูว่า Gradle สามารถให้รายการงานสำหรับไลบรารีได้หรือไม่ ใช้คุณสมบัติเดียวกันในsettings.gradleคำจำกัดความ สิ่งนี้จะเปิดเผยปัญหาเกี่ยวกับสคริปต์การสร้างไลบรารีที่แยกออกจากกัน

./gradlew :library:Lib1:tasks --info

3. ) ตรวจสอบให้แน่ใจว่าผลลัพธ์จากขั้นตอนสุดท้ายแสดงรายการงาน "AssembleDefault" ถ้ามันไม่ได้ทำให้แน่ใจว่าห้องสมุดรวมทั้งห้องสมุด Android build.gradleปลั๊กอินใน ชอบตรงนี้ที่สุด.

apply plugin: 'com.android.library'

ฉันรู้ว่ามีการตอบคำถามของผู้โพสต์ต้นฉบับ แต่ฉันเชื่อว่าคำตอบมีการพัฒนาในช่วงปีที่ผ่านมาและฉันคิดว่ามีสาเหตุหลายประการสำหรับข้อผิดพลาด ฉันคิดว่าขั้นตอนการแก้ปัญหานี้ควรช่วยผู้ที่ประสบปัญหาต่างๆ


3

ตรวจสอบsettings.gradleไฟล์ โมดูลที่รวมอยู่อาจหายไปหรืออยู่ในไดเร็กทอรีอื่น ตัวอย่างเช่นด้วยบรรทัดด้านล่างโมดูลsettings.gradleการค้นหา gradle common-libภายในไดเร็กทอรีโครงการของคุณ:

include ':common-lib'

หากไม่มีคุณสามารถค้นหาและคัดลอกโมดูลนี้ไปยังโครงการของคุณหรืออ้างอิงเส้นทางในsettings.gradleไฟล์:

include ':common-lib'
project(':common-lib').projectDir = new File('<path to your module i.e. C://Libraries/common-lib>') // 

0

สำหรับฉัน (ตามความคิดเห็นบางส่วนที่ฉันเห็น) ปัญหาคือ gradle ไม่พบ build.gradle สำหรับไลบรารีที่นำเข้า การกำหนดค่านี้ตรงไปตรงมา แต่ข้อความแสดงข้อผิดพลาดค่อนข้างคลุมเครือ ตัวอย่างเช่นฉันใช้โครงการ android-map-utils และต้องรวมไว้ใน settings.gradle ของฉันโดยต่อท้าย 2 บรรทัดนี้เช่นนี้

include ':android-map-utils'
project(':android-map-utils').projectDir = new File(settingsDir, '..\\..\\modules\\android-maps-utils-master\\library')

เส้นทางของไลบรารีสัมพันธ์กับไฟล์ settings.gradle ของโครงการของฉัน จากนั้นฉันก็อ้างอิงมันในการอ้างอิงของไฟล์ build.gradle ของแอพของฉันแบบนี้

...

    dependencies {
    ....
        compile project(':android-map-utils')
    ....

    }

ฉันขอแนะนำให้นำเข้าทีละโมดูลรวบรวมและตรวจสอบ


0

หากสมมติว่าคุณเห็นข้อผิดพลาดนี้หลังจากลบโมดูลโหนดบางตัวไม่ควรนำเสนอไลบรารีภายใต้ build.gradle (Module: app) สามารถลบได้ด้วยตนเองและซิงค์โครงการอีกครั้ง


0

ฉันก็ประสบปัญหาเดียวกันและปัญหาคือไลบรารีหายไปในไฟล์บางไฟล์ต่อไปนี้

settings.gradle, app / build.gradle, package.json, MainApplication.java

สมมติว่าไลบรารีเป็น react-native-vector-icons ควรกล่าวถึงในไฟล์ต่อไปนี้

ในไฟล์ app / build.gradle ภายใต้ส่วนการอ้างอิงเพิ่ม:

โครงการคอมไพล์ (': react-native-vector-icons')

ในไฟล์ settings.gradle ภายใต้โฟลเดอร์ android ให้เพิ่มสิ่งต่อไปนี้:

รวม ': react-native-vector-icons' project (': react-native-vector-icons'). projectDir = ไฟล์ใหม่ (rootProject.projectDir, '../node_modules/react-native-vector-icons/android' )

ใน MainApplication.java ให้เพิ่มสิ่งต่อไปนี้:

นำเข้าการอ้างอิง: import com.oblador.vectoricons.VectorIconsPackage;

แล้วเพิ่ม: VectorIconsPackage () ใหม่ในเมธอด getPackages ()


0

การลบการอ้างอิงพื้นเมืองที่ตอบสนองเพียงไม่กี่รายการช่วยแก้ปัญหาได้

การลบบรรทัดเหล่านี้ปัญหาจะได้รับการแก้ไข บรรทัดนี้สร้างขึ้นโดย rnpm link แต่เป็นบั๊ก

compile project(':react-native-gps')
compile project(':react-native-maps')
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.