2015-02-14 13 views
6

के लिए कोड पर हस्ताक्षर नहीं करता है एंड्रॉइड स्टूडियो डीबग बिल्ड के लिए मेरे कोड पर हस्ताक्षर करने से इंकार कर देता है।एंड्रॉइड स्टूडियो डीबग बिल्ड

मेरे पास एक पुरानी प्रोजेक्ट है जिसमें build.gradle में कोई हस्ताक्षर निर्देश नहीं थे, इसलिए मैंने इन Android gradle signingConfig error और अन्य पोस्ट के अनुसार इन्हें जोड़ा। मॉड्यूल स्तर (केवल मॉड्यूल) पर

मेरे build.gradle फ़ाइल इस (अंश) की तरह दिखता है:

android { 
    compileSdkVersion 21 
    buildToolsVersion '21.1.2' 
    defaultConfig { 
     applicationId "cc.appname.android" 
     minSdkVersion 11 
     targetSdkVersion 21 
     versionCode 1 
     versionName '1.0' 
    } 
    signingConfigs { 
     debug { 
      storeFile file('../../../.android/debug.keystore') 
      keyAlias 'androiddebugkey' 
      keyPassword 'android' 
      storePassword 'android' 
     } 
    } 
    buildTypes { 
     debug { 
      signingConfig signingConfigs.debug 
     } 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
    productFlavors { 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 
} 

storeFile, पाया जा सकता है क्योंकि जब मैं पथ बदल मैं एक संकलन त्रुटि मिलती है। जब पथ सही होता है, तो यह संकलित होता है, लेकिन जब मैं अपने ऐप के भीतर फेसबुक एसडीके का उपयोग करने की कोशिश करता हूं, तो यह एक गलत कीशैश की रिपोर्ट करता है।

मैंने देखा है कि signingConfigs

signingConfig signingConfigs.debug 

त्रुटि संदेश के साथ रेखांकित किया है "तर्क प्रकार इसका अनुमान नहीं लगा सकते हैं ..."

तो मैं UI में परियोजना सेटिंग्स, हटाया हस्ताक्षर करने और के लिए चला गया निर्माण और हस्ताक्षर के बीच संबंध, इसे बचाया, और इसे वापस जोड़ा। एक ही समस्या है।

मुझे यकीन है कि यह बहुत छोटा है जिसे मैंने अभी अनदेखा किया है, या Google ने संस्करणों के बीच कमांड का नाम बदल दिया है।

क्या कोई मदद कर सकता है?

उत्तर

9

debug.keystore मानते हुए कई चीजें ~/.android फ़ोल्डर में से एक है।

बदलें इस:

debug { 
     storeFile file('../../../.android/debug.keystore') 
     keyAlias 'androiddebugkey' 
     keyPassword 'android' 
     storePassword 'android' 
    } 
इस (रूट परियोजना में debug.keystore की दुकान) को

:

debug { 
     storeFile rootProject.file('debug.keystore') 
     keyAlias 'androiddebugkey' 
     keyPassword 'android' 
     storePassword 'android' 
    } 

आप debugBuildType ओवरराइड करने के लिए की जरूरत नहीं है, यह स्वाभाविक रूप से debug कुंजी के साथ संकेत वैसे भी, आप हटा सकते हैं:

debug { 
     signingConfig signingConfigs.debug 
    } 

अंतिम build.gradle:

android { 
    compileSdkVersion 21 
    buildToolsVersion '21.1.2' 
    defaultConfig { 
     applicationId "cc.appname.android" 
     minSdkVersion 11 
     targetSdkVersion 21 
     versionCode 1 
     versionName '1.0' 
    } 
    signingConfigs { 
     debug { 
      storeFile rootProject.file('debug.keystore') 
      keyAlias 'androiddebugkey' 
      keyPassword 'android' 
      storePassword 'android' 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
    productFlavors { 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 
} 
+0

धन्यवाद जेरेड, यह अब संकेत करता है। मजाकिया बात यह है कि जब मैं यूआई में जाता हूं तो यह गलत 'हस्ताक्षर कॉन्फ़िगर करें कॉन्फिग.डेबग' स्वयं को जोड़ता है। मेरा मानना ​​है कि या तो एक बग या लापता निर्भरता है। कम से कम यह अब काम करता है। –

+0

'rootProject.file ('debug.keystore') के बारे में' - टिप के लिए धन्यवाद, लेकिन सापेक्ष पथ अभी भी प्रोजेक्ट रूट पर शुरू होता है। चूंकि डीबग कीस्टोर पथ को ऊपर ले जाता है, मुझे अभी भी 'rootProject.file' ('../../। Android/debug.keystore') वापस सीडी करने की आवश्यकता है। तो या तो डीबग कीस्टोर गलत स्थिति में है (परियोजना रूट के भीतर नहीं), या यह बिल्ड सिस्टम के उद्देश्य और सम्मेलन पर है, लेकिन फिर इसे build.gradle के भीतर से संदर्भित करने की आवश्यकता नहीं है। –

+0

@ ओलिवरहौस्लर यह अच्छा है कि आपने इसे समझ लिया! –

0

नई gradle experimental plugin वाक्य रचना के बाद से के लिए एक जवाब जोड़ना अलग है:

model { 
    android { 
     buildTypes { 
      release { 
       signingConfig = $("android.signingConfigs.myConfig") 
       ... 
      } 
     } 
    } 
    android.signingConfigs { 
     create("myConfig") { 
      keyAlias = 'androiddebugkey' 
      keyPassword = 'android' 
      storeFile = new File("${System.properties['user.home']}/.android/debug.keystore") 
      storePassword = 'android' 
      storeType = "jks" 
     } 
    } 
} 

नोट: android.signingConfigs ब्लॉक android ब्लॉक के बाहर रखा जाना चाहिए।

संबंधित मुद्दे