2013-09-30 8 views
6

मैं अपने एंड्रॉइड लाइब्रेरी के रिलीज बिल्ड पर ProGuard चलाने के लिए चाहता हूं। नीचे मेरी परियोजना के भीतर मेरी build.gradle फ़ाइल है।एंड्रॉइड-लाइब्रेरी ग्रैडल प्लगइन के लिए runProguard काम कैसे करें?

> Could not find method buildTypes() for arguments [[email protected]d] on project

ऐसा नहीं है कि प्लगइन android-librarybuildTypes विधि याद आ रही है लगता है:

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

apply plugin: 'android-library' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.1" 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 18 
    } 

    sourceSets { 
     main { 
      java { 
       srcDir 'src/main/java' 
      } 
      resources { 
       srcDir 'src/../lib' 
      } 
     } 
    } 

    buildTypes { 
     release { 
      runProguard true 
      proguardFile getDefaultProguardFile('proguard-android.txt') 
     } 
    } 
} 

gradlew clean या gradlew build रिटर्न निम्न त्रुटि चल रहा है। अगर मैं apply plugin से android बदलता हूं, gradlew सफलतापूर्वक चलाता है। हालांकि, यह एक पुस्तकालय परियोजना है और मैं इसे ऐसा रखना चाहता हूं। अन्य हिस्सों में मेरे gradle.build (यहां उल्लेखित नहीं) परियोजना पर एक पुस्तकालय होने पर भरोसा करते हैं।

क्या android-library प्लगइन चलाने के लिए ProGuard बनाने का कोई तरीका है?

+0

मुझे लगता है कि अंतिम कोड शामिल सभी कोड के लिए ProGuard चलाने का विचार है, प्रत्येक लाइब्रेरी के लिए व्यक्तिगत रूप से नहीं। –

+0

मैं वितरण के लिए एक एसडीके जार बना रहा हूं। मैं सार्वजनिक कार्यों को दिखाना चाहता हूं, लेकिन निजी चर और कार्य दिखाई नहीं दे सकते हैं। – BVB

उत्तर

2

तो जैसे buildTypes से बाहर release लेने के द्वारा अपनी समस्या हल:

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

apply plugin: 'android-library' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.1" 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 18 
    } 

    sourceSets { 
     main { 
      java { 
       srcDir 'src/main/java' 
      } 
      resources { 
       srcDir 'src/../lib' 
      } 
     } 
    } 

    release { 
     runProguard true 
     proguardFile getDefaultProguardFile('proguard-android.txt') 
     proguardFile 'proguard-android.txt' 
    } 
} 

भी ध्यान रखें कि मैं release के तहत एक और proguardFile गयी। यह प्रारंभिक buildTypes समस्या को हल करने के बाद मेरे पास एक और मुद्दा तय किया गया था।

+0

क्या आप इस बारे में अधिक विशिष्ट हो सकते हैं कि आपने अन्य प्रोग्रार्डफाइल कहाँ जोड़ा और आपको ऐसा करने की आवश्यकता क्यों है? – davidgyoung

+0

मैंने इसे सीधे प्रोजेक्ट निर्देशिका की जड़ में जोड़ा (जहां 'build.gradle' फ़ाइल है। फ़ाइल को विभिन्न विकल्पों को कॉन्फ़िगर करने के लिए उपयोग किया जा सकता है (उदाहरण के लिए, कौन से फ़ंक्शन/कक्षा/चर "संरक्षित नहीं किए जाने चाहिए")। एक मैनुअल यहां उपलब्ध है: http://proguard.sourceforge.net/index.html – BVB

+0

आह, मुझे मिल गया। जिस बिंदु को मैं याद कर रहा था वह यह है कि आप * रिहाई ब्लॉक * ले गए हैं, इसलिए यह उसी स्तर पर है जहां रिलीज टाइप्स build.gradle – davidgyoung

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