2010-08-22 15 views
18

क्या मेरे एंड्रॉइड एपीके का निर्माण होने पर प्रोग्राम को प्रोग्रामेटिक रूप से पढ़ना संभव है? मुझे पैकेजइन्फो क्लास में कुछ भी नहीं मिला।जब मेरा एंड्रॉइड एपीके बनाया गया था तो प्रोग्राम को प्रोग्रामेटिक रूप से कैसे पढ़ा जाए?

मैं अपने ऐप के बीटा संस्करणों की समयसीमा समाप्त करना चाहता हूं और इस तरह की तारीख को पढ़ने का सबसे आसान तरीका होगा और दिनों के फिक्स प्रीआईड के बाद इसे समाप्त कर देगा, इसलिए मुझे उस हर समय के लिए कोड अपडेट करने की आवश्यकता नहीं है। एक बीटा संस्करण का निर्माण और तैनाती।

+0

मुझे नहीं पता कि यह प्रश्न डुप्लिकेट के रूप में क्यों चिह्नित किया गया है। यहां एक सवाल पहले एक साल से पहले पूछा गया था, और जवाब भी एक वर्ष पुराना है। दूसरा सवाल डुप्लिकेट है। मैं तो बस कह रहा हूं'। – fattire

उत्तर

27

यह build.gradle में एक समय हो गया है के बाद से इस लिए कहा गया था, लेकिन यहाँ है मैं यह कैसे एंड्रॉयड स्टूडियो w/Gradle का उपयोग कर किया ....

, अपने build types से प्रत्येक एक buildConfigField होना चाहिए। (यह configuration- तुम यहाँ में अन्य सामग्री होने की संभावना हो का एक सरलीकृत संस्करण है, लेकिन मैं दिखाने के लिए जहां आप इसे डाल चाहता था):

android { 
    signingConfigs { 
     buildTypes { 
      debug { 
       buildConfigField "java.util.Date", "buildTime", "new java.util.Date(" + System.currentTimeMillis() + "L)" 
      } 
      release { 
       buildConfigField "java.util.Date", "buildTime", "new java.util.Date(" + System.currentTimeMillis() + "L)" 
      } 
     } 
    } 
}  

(ध्यान दें कि "BuildConfigField" की newer version है " । BuildConfigLine "0.8.0 निर्माण प्रणाली के रूप में)

अगली बार Gradle assembleRelease या assembleDebug, यह उत्पन्न करनी चाहिए करता है:

./build/source/buildConfig/releaseORdebug/com/your/project/BuildConfig.java

इसके बाद, किके अंदरफ़ाइल, आप कुछ की तरह स्वत: जनरेट किया गया है देखना चाहिए:

public final class BuildConfig { 
    public static final java.util.Date buildTime = new java.util.Date(1395794838381L); 
} 

तो, अपने एप्लिकेशन में निर्माण की तारीख तक पहुँचने के लिए ....

Date buildDate = BuildConfig.buildTime; 
Log.i("MyProgram", "This .apk was built on " + buildDate.toString()); 

(आप दिनांक फ़ॉर्मेट कर सकते हैं लेकिन आप SimpleDateFormat का उपयोग करना।)

आशा है कि यह सहायक होगा।

+0

आप फ़ंक्शन के बजाय System.currentTimeMillis() का उपयोग कर सकते हैं ... –

+0

हम्म। कोशिश की और काम नहीं किया (त्रुटि: प्रतीक परिवर्तनीय buildTime नहीं मिल सकता है) हालांकि समारोह को 'कैलेंडर.getInstance() में संपीड़ित करना। GetTimeInMillis();' मेरे लिए काम करता है। – fattire

+0

मैं इसे वापस लेता हूं। मैंने बस इसे फिर से कोशिश की और ऐसा लगता है कि यह काम कर रहा है ... build.gradle एक छोटे से छोटे बनाते हैं। मैं जवाब अपडेट करूंगा .. धन्यवाद, मार्को! – fattire

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