Я могу построить приложение для 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=").*(")"
replace="true"/>
</then>
<else>
<replaceregexp
file="AndroidManifest.xml"
match="(android:debuggable=").*(")"
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=").*(")"
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"