Я могу построить приложение для Android как debug, но подписать с файл

Я пытаюсь проверить биллинг в приложении в моем приложении. У меня есть биллинг и идентификатор продукта все настройки в Play store, но для тестирования транзакции мне нужно подписать мое приложение с моим хранилищем ключей выпуска, иначе это не удастся.

Я использую IntelliJ Idea (Ver. 11 CE) и не может понять, как настроить проект для сборки с набором отладки и подписать с моим хранилищем ключей выпуска перед развертыванием на моем устройстве.

Я вижу, что могу установить цель ant для конфигурации, и я предполагаю это путь, но с тех пор, как я построил.xml импортирует Android SDK / tools / ant / build.xml нет никаких целей, чтобы выбрать.

для отладки мне просто нужно включить set android: debuggable="true" в манифесте? У кого-нибудь есть предложение для цели муравья, которая сделает то, что мне нужно? Тот, который я могу добавить к моей сборке.в XML?

6 ответов


с указателями в направлении Ixx Я закончил настройку android: debuggable="true" и использование командной строки для сборки и развертывания. После присоединения к запущенному процессу для отладки.

мое приложение настроено для сборки в командной строке с помощью сборки ant.xml-файл, который импортирует androidSDK / tools / ant / build.xml и вспомогательная сборка.файл свойств. Я обнаружил, что когда я устанавливаю android:debuggable= "true", а затем делаю "Ant release", процесс сборки будет создайте отладочный apk и подпишите его ключом release.

Я создал цель в моей сборке.xml-файл, который я мог бы установить для этого случая, называется set-debuggable

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

затем в My-pre-build target я добавил

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

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

        </else>
    </if>

это создает мой отладочный apk, который подписан с моим ключом выпуска, когда я использую "Ant set-debuggable release". Затем я использую ' adb install-r myApp-release.apk ' для повторной установки новой сборки. Затем я могу запустить и присоединить к запущенному приложению для отладки через in-app покупки.

похоже, что IntelliJ Idea и Eclipse используют самозаверяющий ключ отладки где-то в вашей системе для создания и развертывания debug apk из IDE.

задним числом я мог бы заменить ключ отладки, созданный IDE с помощью моего ключа выпуска, и попытался заставить сборку подписать этот ключ (и найти пароль для использования ключа), но процесс сборки выше занял у меня очень мало времени для настройки и начала использования. Если кто-то пойдет в этом направлении и заставит его работать, добавьте комментарий к моему ответу.


начиная с IntelliJ IDEA 12 (не знаю о предыдущих версиях), вы можете установить "пользовательское хранилище ключей отладки" в фасете Android для модуля верхнего уровня. Таким образом, вы можете контролировать, как ваш APK подписан и фактически использовать ключи выпуска для отладки из IDE.


у меня это в build.xml для установки атрибута debuggable:

<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="${isDebuggable}"
        >
    </replaceregexp>

где строить.env передается в программу ant следующим образом (в случае "release"):

ant <targets> -Dbuild.env=release

чтобы подписать, вы добавляете это в файлы свойств:

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

Debug app имеет хранилище ключей отладки (хотя в настоящее время я точно не помню, почему это хранилище ключей необходимо)->здесьбольше информации об этом. Вероятно, вы просто должны использовать файл вместо.


IntelliJ использует .android / отладка.файл хранилища ключей по умолчанию для подписи отладочной версии приложения. Вы можете изменить этот файл с файл или импортировать сертификат выпуска для отладки.файл keystore. Я подготовил пошаговые инструкции для этого на http://www.denizoguz.com/2013/01/12/failure-install_parse_failed_inconsistent_certificates/


учитывая, что Lint теперь советует против жесткого кодирования флага "android: debuggable" в AndroidManifest.в XML я пришел с лучшим решением (по крайней мере для моего случая). Просто определите новую цель ant в ваших custom_rules.xml, который делает все точно так же, как цель отладки android, но подписывает apk с ключом выпуска.

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

единственная подзадача, которая должна быть добавлена, - это "- release-sign "перед" - post-build", а затем запустите "bulid-debug" вместо android цель" отладка".

или вы можете просто "- release-sign " отлаживать зависимость следующим образом:

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

но это не работает для меня, потому что я делаю некоторые дополнительные вещи на "-post-build" и должен подписать пакет перед "-post-build".


попробуйте установить флаг debuggable в true в манифесте android.

 <application
        android:debuggable="true"

Отладочный Флаг