2012-08-22 11 views
11

मैं अपने अनुप्रयोग में इन-एप्लिकेशन बिलिंग का परीक्षण करने के कोशिश कर रहा हूँ के साथ हस्ताक्षर कर सकते हैं। मैं बिलिंग है और उत्पाद आईडी को Play स्टोर लेकिन लेन-देन मैं अपने रिहाई कुंजीस्टोर अन्यथा यह विफल रहता है के साथ अपने एप्लिकेशन हस्ताक्षर करने की आवश्यकता का परीक्षण करने में सभी सेटअप है।मैं डिबग के रूप में अपने Android एप्लिकेशन के निर्माण लेकिन रिहाई कुंजीस्टोर

मैं इंटेलिजे आइडिया (वेर 11 सीई) का उपयोग कर रहा हूं और डीबग सेट के साथ प्रोजेक्ट को कॉन्फ़िगर करने और मेरे डिवाइस पर तैनात करने से पहले मेरे रिलीज कीस्टोर के साथ साइन इन करने के लिए प्रोजेक्ट को कॉन्फ़िगर करने के बारे में काफी जानकारी नहीं दे सकता।

मुझे लगता है कि मैं एक कॉन्फ़िगरेशन के लिए चींटी लक्ष्य सेट कर सकता हूं और मुझे लगता है कि यह जाने का तरीका है, लेकिन मेरा build.xml एंड्रॉइड एसडीके /tools/ant/build.xml आयात करता है, इसमें कोई लक्ष्य नहीं है चुनना।

डिबग करने के लिए मैं केवल सेट एंड्रॉयड सक्षम करने की आवश्यकता है: प्रकट में डीबग = "true"? किसी के पास एक चींटी लक्ष्य के लिए कोई सुझाव है जो मुझे आवश्यक चीजों को करेगा? एक जिसे मैं अपने build.xml में जोड़ सकता हूं?

उत्तर

2

सही दिशा रूप Ixx मैं एंड्रॉयड स्थापित करने समाप्त हो गया में संकेत के साथ: डीबग = "true" और निर्माण और तैनात करने के लिए कमांड लाइन का उपयोग कर। फिर डीबग करने के लिए चल रही प्रक्रिया को जोड़ना।

मेरा एप्लिकेशन एक एंटी build.xml फ़ाइल के साथ कमांड लाइन पर निर्माण करने के लिए सेटअप है जो एंड्रॉइडएसडीके/टूल्स/चींटी/build.xml और एक सहायक build.properties फ़ाइल आयात करता है। मुझे पता चला कि जब मैं सेट एंड्रॉयड: डीबग = "true" और उसके बाद करना 'चींटी रिहाई' निर्माण प्रक्रिया डीबग करने योग्य APK बना सकते हैं और रिहाई कुंजी के साथ इस पर हस्ताक्षर करेंगे।

मुझे लगता है कि मैं इस मामले के लिए सेट कर सकते हैं मेरी build.xml फ़ाइल में एक लक्ष्य कहा जाता है सेट डीबग करने

<target name="set-debuggable" description="sets internal named property"> 
    <echo>Setting internal named property...</echo> 
    <property name="set.debuggable" value="true" /> 
</target> 

तब मेरे -पूर्व निर्माण लक्ष्य में मैं

<if> 
     <condition> 
      <isset property="set.debuggable"/> 
     </condition> 
     <then> 
      <replaceregexp 
        file="AndroidManifest.xml" 
        match="(android:debuggable=&#34;).*(&#34;)" 
        replace="\1true\2"/> 

     </then> 
     <else> 
      <replaceregexp 
        file="AndroidManifest.xml" 
        match="(android:debuggable=&#34;).*(&#34;)" 
        replace="\1false\2"/> 

     </else> 
    </if> 

यह जोड़ा बनाया जब मैं 'चींटी सेट-डिबग्रेबल रिलीज' का उपयोग करता हूं तो मेरी डिबगबल एपीके बनाता है जो मेरी रिलीज कुंजी के साथ हस्ताक्षरित है। फिर मैं नए निर्माण को पुनः स्थापित करने के लिए 'adb install -r myApp-release.apk' का उपयोग करता हूं। इसके बाद मैं इन-ऐप खरीद के माध्यम से डीबगिंग के लिए चल रहे एप्लिकेशन को लॉन्च और संलग्न कर सकता हूं।

ऐसा लगता है कि IntelliJ Idea और ग्रहण आईडीई से डीबग एपीके बनाने और तैनात करने के लिए कहीं भी आपके सिस्टम पर स्वयं हस्ताक्षरित डीबग कुंजी का उपयोग करते हैं।

हिंडसाइट में मैं डीबग कुंजी को प्रतिस्थापित करने में सक्षम हूं जो आईडीईई ने मेरी रिलीज कुंजी के साथ बनाया है और उस कुंजी के साथ साइन इन करने के लिए निर्माण प्राप्त करने का प्रयास किया है (और कुंजी का उपयोग करने के लिए पासवर्ड ढूंढें) लेकिन ऊपर की बिल्ड प्रक्रिया सेटअप करने और उपयोग शुरू करने के लिए मुझे बहुत कम समय लगा। अगर कोई इस दिशा में जाता है और इसे काम करता है, तो कृपया मेरे उत्तर में एक टिप्पणी जोड़ें।

0

मैं build.xml में इस राशि डीबग विशेषता निर्धारित करने में:

<condition property="build.env" value="${build.env}" else="local"> 
    <isset property="build.env" /> 
</condition> 

<!-- set debuggable=false for release and true for debug and others --> 
<condition property="isDebuggable" value="false" else="true"> 
     <equals arg1="${build.env}" arg2="release" /> 
    </condition> 
    <replaceregexp 
     file="AndroidManifest.xml" 
     match="(android:debuggable=&#34;).*(&#34;)" 
     replace="\1${isDebuggable}\2" 
     > 
    </replaceregexp> 

कहाँ build.env इस तरह चींटी कार्यक्रम में भेजा जाता है ("रिलीज" के मामले में):

ant <targets> -Dbuild.env=release 

आदेश पर हस्ताक्षर करने के लिए, आप संपत्ति फ़ाइलों से जोड़ें:

key.store=C:/path/to/keystore/mykeystore.keystore 

डीबग अनुप्रयोग एक डिबग कुंजीस्टोर है (हालांकि मैं curren tly बिल्कुल याद नहीं क्यों इस कुंजीस्टोर आवश्यक है) ->here की यह बारे में अधिक जानकारी। शायद आपको इसके बजाय रिलीज कीस्टोर का उपयोग करना होगा।

-1

अपने Android प्रकट में सच करने के लिए डीबग ध्वज स्थापित करने की कोशिश करें।

<application 
     android:debuggable="true" 

Debuggable Flag

1

इंटेलिजे आईडीईए 12 (पिछले संस्करणों के बारे में नहीं जानते) के रूप में, आप शीर्ष स्तर मॉड्यूल के लिए एंड्रॉइड पहलू में "कस्टम डीबग कीस्टोर" सेट कर सकते हैं। इस तरह आप नियंत्रित कर सकते हैं कि आपका एपीके कैसे हस्ताक्षरित है और वास्तव में आईडीई से डीबगिंग के लिए अपनी रिलीज कुंजी का उपयोग करें।

+9

मैंने कोशिश की, लेकिन मैं कीस्टोर से जुड़े पासवर्ड को कैसे सेट कर सकता हूं? मुझे हमेशा 'java.io.IOException मिलता है: कीस्टोर के साथ छेड़छाड़ की गई थी, या पासवर्ड गलत था' – ffleandro

0

इंटेलिजे आपके एप्लिकेशन के डीबग संस्करण पर हस्ताक्षर करने के लिए अपमान द्वारा .android/debug.keystore फ़ाइल का उपयोग कर रहा है। आप इस फ़ाइल को अपने रिलीज कीस्टोर के साथ बदल सकते हैं या debug.keystore फ़ाइल में अपना रिलीज प्रमाणपत्र आयात कर सकते हैं। झंडा AndroidManifest.xml में मैं एक बेहतर समाधान (कम से कम मेरे मामले के लिए) के साथ आए हैं: मैं http://www.denizoguz.com/2013/01/12/failure-install_parse_failed_inconsistent_certificates/

0

यह देखते हुए कि एक प्रकार का वृक्ष अब "डीबग करने एंड्रॉयड" की hardcoding के खिलाफ सलाह देता है पर इस बात के लिए चरण दर चरण निर्देश तैयार किया है। बस अपने custom_rules.xml में एक नया चींटी लक्ष्य परिभाषित करें जो एंड्रॉइड डीबग लक्ष्य के समान ही करता है, लेकिन रिलीज कुंजी के साथ एपीके पर भी हस्ताक्षर करता है।

<target name="build-debug" depends="-set-debug-files, -do-debug, -release-sign, -post-build" /> 

केवल उपकार्य जोड़े जाने की जरूरत है कि इससे पहले कि "-post-निर्माण" "-release हस्ताक्षर" और फिर अपने "bulid-डिबग" चलाने के बजाय एंड्रॉयड "डिबग" लक्ष्य है। इस तरह

या, आप कर सकते हैं बस "-release हस्ताक्षर" डिबग निर्भरता के लिए:

<target name="build-debug" depends="debug, -release-sign" /> 

लेकिन यह मेरे लिए काम नहीं करता है, क्योंकि मैं पर "-post-निर्माण" कुछ अतिरिक्त सामान करना और "-पोस्ट-बिल्ड" से पहले पैकेज पर हस्ताक्षर करने की आवश्यकता है।

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