android - एंड्रॉइड चींटी डीबग बिल्ड के लिए मैं डीबग कीस्टोर के स्थान को कैसे निर्दिष्ट कर सकता हूं?




debugging ant keystore (7)

जहां तक ​​मैं कह सकता हूं, ऐसा करने के लिए आपको "-do-debug" लक्ष्य को ओवरराइड करने की आवश्यकता है। मैं जानना चाहता हूं कि क्या एक और अधिक सुरुचिपूर्ण तरीका है। मैंने इसे अपने build.xml में जोड़ा

<property name="build.is.signing.debug" value="false"/>
<target name="-do-debug" depends="-set-debug-mode, -debug-obfuscation-check, -package, -post-package">
    <!-- only create apk if *not* a library project -->
    <do-only-if-not-library elseText="Library project: do not create apk..." >
        <sequential>
            <property name="out.unaligned.file" location="${out.absolute.dir}/${ant.project.name}-debug-unaligned.apk" />

            <!-- Signs the APK -->
            <echo>Signing final apk...</echo>
            <signjar
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />

            <!-- Zip aligns the APK -->
            <zipalign-helper
                    in.package="${out.unaligned.file}"
                    out.package="${out.final.file}" />
            <echo>Debug Package: ${out.final.file}</echo>
        </sequential>
    </do-only-if-not-library>
    <record-build-info />
</target>
<import file="${sdk.dir}/tools/ant/build.xml" />

डीबग .apk ( <project-name>-debug.apk ) को ant debug साथ डीबग बनाते समय स्वयं निर्मित डीबग कीस्टोर के स्थान को निर्दिष्ट करना संभव है? मैं केवल रिलीज कीस्टोर के स्थान को निर्दिष्ट करने की संभावना को देखता हूं।

मैं'android 'निर्देशिका में रखे गए एक को कॉपी किए बिना कई पीसी पर डीबग कीस्टोर साझा करना चाहता हूं। डीबग कीस्टोर उदाहरण के लिए स्रोत कोड भंडार के भीतर रह सकता है। लेकिन मुझे डीबग कीस्टोर को खोजने के लिए चींटी को बताने का एक तरीका चाहिए।


आप इन गुणों के साथ उपयोग करने के लिए कीस्टोर निर्दिष्ट करने में सक्षम होना चाहिए

key.store=/path/to/key.keystore
key.alias=alias
key.store.password=pass
key.alias.password=pass

बस संपत्ति को चींटी में पास करें।

[संपादित करें] दस्तावेज़ों से http://developer.android.com/guide/publishing/app-signing.html#setup

एंड्रॉइड बिल्ड टूल्स एक डीबग साइनिंग मोड प्रदान करते हैं जो आपके एप्लिकेशन को विकसित और डिबग करना आसान बनाता है, जबकि अभी भी अपने .apk पर हस्ताक्षर करने के लिए एंड्रॉइड सिस्टम आवश्यकता को पूरा करता है। अपने ऐप को बनाने के लिए डीबग मोड का उपयोग करते समय, एसडीके टूल्स स्वचालित रूप से डीबग कीस्टोर और कुंजी बनाने के लिए कीटोल का आह्वान करते हैं। यह डीबग कुंजी तब स्वचालित रूप से .apk पर हस्ताक्षर करने के लिए उपयोग की जाती है, इसलिए आपको अपनी कुंजी के साथ पैकेज पर हस्ताक्षर करने की आवश्यकता नहीं है।

एसडीके उपकरण पूर्वनिर्धारित नाम / पासवर्ड के साथ डीबग कीस्टोर / कुंजी बनाते हैं:

  • कीस्टोर नाम: "debug.keystore"
  • कीस्टोर पासवर्ड: "एंड्रॉइड"
  • मुख्य उपनाम: "androiddebugkey"
  • मुख्य पासवर्ड: "एंड्रॉइड"
  • सीएन: "सीएन = एंड्रॉइड डीबग, ओ = एंड्रॉइड, सी = यूएस"

यदि आवश्यक हो, तो आप डीबग कीस्टोर / कुंजी का स्थान / नाम बदल सकते हैं या उपयोग करने के लिए कस्टम डीबग कीस्टोर / कुंजी की आपूर्ति कर सकते हैं । हालांकि, किसी भी कस्टम डीबग कीस्टोर / कुंजी को उसी कुंजीस्टोर / कुंजी नाम और पासवर्ड का उपयोग डिफ़ॉल्ट डीबग कुंजी (ऊपर वर्णित अनुसार) के रूप में करना चाहिए। (ग्रहण / एडीटी में ऐसा करने के लिए, विंडोज> वरीयताएँ> एंड्रॉइड> बिल्ड पर जाएं।)


जहां तक ​​मैंने देखा है अब तक कोई मौजूदा समाधान नवीनतम चींटी संस्करण के साथ काम नहीं करता है।

ऐसा करने का एकमात्र आदिम तरीका डिफ़ॉल्ट डीबग.किस्टोर को डिफ़ॉल्ट फ़ोल्डर में बदलना है।

डिफ़ॉल्ट स्थान .android फ़ोल्डर है। आम तौर पर सी: \ उपयोगकर्ता \ USER_NAME.android पर विंडोज़ पर आप% USERPROFILE% .android का उपयोग करके इसे प्राप्त कर सकते हैं।

मैंने जो किया वह डिफ़ॉल्ट फ़ाइल बैकअप करने के लिए एक पावरहेल स्क्रिप्ट बना रहा है, डिफ़ॉल्ट स्थान पर कीस्टोर फ़ाइल कॉपी करें, हस्ताक्षरित डीबग एपीके बनाएं, मेरी कीस्टोर फ़ाइल हटाएं, मूल फ़ाइल को पुनर्स्थापित करें।

अगर आपको यहां अधिक जानकारी चाहिए तो मुझे बताएं।


एक आसान तरीका जिसे आप कार्य-आसपास के रूप में उपयोग कर सकते हैं (जो हमारे सीआई सिस्टम में विशेष रूप से अच्छा है जहां कई परियोजनाएं बनाई गई हैं और जहां कीस्टोरों से निपटने के दौरान मुलायम स्पर्श की आवश्यकता होती है), आगे बढ़ना और डीबग बिल्ड चलाने के लिए, एएपीटी का उपयोग करना है मेटा-आईएनएफ फ़ोल्डर की सामग्री को हटाने के लिए, और अपने कस्टम debug.keystore के साथ साइन इन करने के लिए jarsigner चलाएं।

छद्म-स्क्रिप्ट में, ऐसा लगता है: # सामान्य चींटी डीबग निर्माण चींटी डीबग

# Remove default debug signing
aapt remove YourDebugApp.apk META-INF/MANIFEST.MF
aapt remove YourDebugApp.apk META-INF/CERT.SF
aapt remove YourDebugApp.apk META-INF/CERT.RSA

# Use Jarsigner and the custom debug.keystore. 
# NOTE: This assumes you explicitly called out MD5withRSA as your signing algorithm 
# when you generated the key; drop the -sigalg tag if you did not.
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore -storepass android YourDebugApp.apk

# Verify signing
jarsigner -verify YourDebugApp.apk

  • अपने ग्रहण कार्यक्षेत्र के भीतर एक नया और खाली फ़ोल्डर बनाएं।

  • उस नई निर्देशिका में फ़ाइल को "डीबग.कीस्टोर" को अपने मानक स्थान से कॉपी करें (उदाहरण के लिए "सी: / यूसर /YourAcount/.Android/" विंडोज़ पर)।

  • ग्रहण को सभी डीबग एपीके (ग्रहण -> विंडो -> प्राथमिकताएं -> एंड्रॉइड -> बिल्ड -> कस्टम डीबग कीस्टोर "के लिए उस नई निर्देशिका / फ़ाइल का उपयोग करने के लिए कॉन्फ़िगर करें।


आप अंतिम एपीके के हस्ताक्षर को हटा सकते हैं और फिर से साइन इन कर सकते हैं। यह सिर्फ एक डीबग बिल्ड है इसलिए ज़िपलाइन को टाला जा सकता है (कम से कम मुझे मेरे निर्माण में कोई समस्या नहीं है)।

प्रोजेक्ट में अपनी keystore को फ़ाइल deug.keystore पर कॉपी करें और ant.properties में निम्न जोड़ें

debug.key.store.password=android
debug.key.alias.password=android
debug.key.store=../debug.keystore
debug.key.alias=androiddebugkey

और अपने build.xml में निम्नलिखित जोड़ें

<target name="-post-build" if="${build.is.packaging.debug}">
    <!-- Remove the signature of the debug build, and sign it again with our own debug keystore -->
    <delete dir="tmp" includeemptydirs="true" failonerror="false" />
    <mkdir dir="tmp" />
    <unzip src="${out.final.file}" dest="tmp" />
    <delete dir="tmp/META-INF" includeemptydirs="true" verbose="true" failonerror="true" />
    <delete file="${out.final.file}" failonerror="true" />
    <zip destfile="${out.final.file}" basedir="tmp" />
    <delete dir="tmp" includeemptydirs="true" failonerror="false" /> 

    <echo level="info">Signing final DEBUG apk with a common signature...
        signapk
            input="${out.final.file}"
            output="${out.packaged.file}"
            keystore="${debug.key.store}"
            storepass="${debug.key.store.password}"
            alias="${debug.key.alias}"
            keypass="${debug.key.alias.password}"
    </echo>

    <signapk
        input="${out.final.file}"
        output="${out.packaged.file}"
        keystore="${debug.key.store}"
        storepass="${debug.key.store.password}"
        alias="${debug.key.alias}"
        keypass="${debug.key.alias.password}"/>

    <delete file="${out.final.file}" failonerror="true" />
    <move file="${out.packaged.file}" tofile="${out.final.file}" failonerror="true" />

</target>

यदि टेक्स्ट TextView's ऊंचाई और चौड़ाई wrap content को TextView तो TextView भीतर टेक्स्ट हमेशा केंद्रित होता है। लेकिन यदि match_parent TextView's चौड़ाई match_parent और ऊंचाई match_parent या wrap_content तो आपको नीचे कोड लिखना होगा:

सापेक्ष लयआउट के लिए:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" 
        android:text="Hello World" />

</RelativeLayout>

LinearLayout के लिए:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Hello World" />

</LinearLayout>






android debugging ant keystore