Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: JonoОтветов: 2

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

Вот контекст

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

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

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

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

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

androidandroid-gradle-plugin

Ответы

Ответ 1 · рейтинг 17 · rciovati

Допустим, вы используете типы сборки по умолчанию 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>

Ответ 2 · рейтинг 6 · Reid Baker

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

sourceSets {
    debug {
        manifest.srcFile '<your folder>/AndroidManifest.xml'
    }
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы