Обеспечение безопасности приложений: руководство по указанию android:exported

в Android 12 и более поздних версиях

, манифест Android, разрешения Android

В постоянно меняющейся сфере разработки мобильных приложений обеспечение безопасности наших приложений имеет первостепенное значение. В Android 12 к разработчикам приложений предъявляется важное требование — указывать явное значение атрибута android:exportedв файле манифеста Android. В этой статье блога мы углубимся в значение android:exported, объясним его назначение и предоставим несколько методов с примерами кода для эффективного соблюдения этого требования.

Понимание android:exported:
Атрибут android:exportedопределяет, могут ли компоненты вашего приложения (действия, службы, поставщики контента и приемники вещания) быть доступны компонентам другие приложения или нет. Явно задав значение для android:exported, вы контролируете видимость и доступность компонентов вашего приложения для других приложений.

Метод 1: установка android:exportedв файле AndroidManifest.xml
Чтобы указать атрибут android:exportedв файле манифеста Android, вы можете добавить его в качестве атрибута каждый компонент, которым вы хотите управлять:

<activity
    android:name=".MainActivity"
    android:exported="false">
    ...
</activity>

Метод 2: использование аннотаций (Kotlin)
Если вы используете Kotlin, вы можете использовать аннотацию @android:exported, чтобы указать экспортируемое состояние ваших компонентов:

@Activity
@AndroidManifest(action = "com.example.ACTION_MY_ACTIVITY")
class MainActivity : AppCompatActivity() {
    ...
}

Метод 3. Использование аннотаций (Java).
Для разработчиков Java вы можете использовать аннотацию @Exportedиз библиотеки AndroidX, чтобы указать экспортируемое состояние:

@Exported(false)
public class MyService extends Service {
    ...
}

Метод 4: плагин Gradle (плагин Android Gradle 7.0.0+)
Начиная с плагина Android Gradle 7.0.0, вы можете использовать свойство android:exportedDSL в файле build.gradle вашего приложения. чтобы указать экспортируемое состояние:

android {
    ...
    application {
        activities {
            create("main") {
                exported = false
                ...
            }
        }
    }
}

В этой статье мы рассмотрели значение атрибута android:exportedв Android 12 и более поздних версиях, который обязывает разработчиков приложений указывать явное значение. Мы предоставили несколько методов с примерами кода, которые помогут вам эффективно выполнить это требование. Обеспечение безопасности вашего приложения путем контроля видимости и доступности его компонентов имеет решающее значение в современном мире мобильных приложений.

Помните, что, применяя соответствующие настройки android:exported, вы повышаете общую безопасность своего приложения и защищаете его от потенциальных уязвимостей и несанкционированного доступа.

Объяснение