Разрешения на тестирование и файл манифеста приложений Android

Я хотел бы знать, есть ли способ добавить определенные разрешения (или что-то еще) в файл манифеста Android, но так, чтобы он использовался только во время тестовых прогонов, а не в рабочей среде. Я ищу что-то программное, а не вырезание и вставка при тестировании.

Вот контекст:

Я читаю эту статью: http://developer.android.com/training/location/location-testing.html, наилучшей практикой для тестового запуска приложения было создание «тестового приложения», однако теперь с Android Studio мы не собираемся создавать новое приложение — все тестирование должно выполняться через приложение. (Спасибо, град)

Проблема в том, что эта статья написана с разрешением на тестирование (ACCESS_MOCK_LOCATION), и я не хочу, чтобы это сидело в моем приложении, и если есть хороший способ сделать это, я бы хотел это сделать.

ОБНОВЛЕНИЕ: Причина, по которой у меня возникла эта проблема, заключалась в непонимании настройки архитектуры студии Android после перехода на Gradle. Я не осознавал, что типы сборки имеют общие исходные папки «androidTest» и «main». И поэтому при тестировании или запуске незавершенного приложения он берет файлы отладки (если они есть) и добавляет к ним все рабочие материалы. Итак, в моем случае я добавил пустой файл манифеста в отладку и просто добавил к нему два разрешения. Когда я запускаю или тестирую, gradle добавляет в этот скелетный файл все мои приложения из другого манифеста (или наоборот, я не уверен).

Итак, в конце концов, нам не нужно изменять папку androidTest (на самом деле я не думаю, что нам разрешено добавлять сюда манифест), поскольку она полностью генерируется в зависимости от того, работает ли пользователь в режиме отладки или развертывания. Ваше здоровье! :-)


person Jono    schedule 07.08.2014    source источник
comment
Я не очень много знаю об этом, но хорошим примером может быть что-то под названием Flavors, предлагаемое через Android Studio. Вот ссылка.   -  person Andrew Schuster    schedule 07.08.2014
comment
Я посмотрел, проблема в том, что я обнаружил, что тестовый манифест создается автоматически, поэтому теперь я пытаюсь найти способ просто добавить разрешение (через gradle) только для теста, но я думаю, что это может быть просто через отладку сделаю. Я буду держать его в курсе.   -  person Jono    schedule 07.08.2014


Ответы (2)


Допустим, вы используете типы сборки по умолчанию debug и release и запускаете тесты для типа сборки отладки. В этом случае вы можете создать src/debug/AndroidManifest.xml и добавить дополнительные разрешения, которые вам нужны в ваших отладочных сборках:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your.package">

    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

</manifest>
person rciovati    schedule 08.08.2014
comment
Отлично, я только что понял это. :) Я ценю это. - person Jono; 08.08.2014
comment
Да, это сработало. Итак, теперь у меня есть 2 манифеста: один в src/main/AndroidManifest.xml и другой src/debug/AndroidManifest.xml. - person netimen; 25.09.2014

Если ваш проект не соответствует иерархии папок по умолчанию и вы хотите добавить разрешения для отладочной сборки, добавьте следующий блок.

sourceSets {
    debug {
        manifest.srcFile '<your folder>/AndroidManifest.xml'
    }
}
person Reid Baker    schedule 17.03.2015