Konfigurowanie modułu aplikacji

Na tej stronie opisujemy przydatne ustawienia aplikacji na poziomie modułu build.gradle.kts . Oprócz przedstawienia przeglądu ważnych właściwości ustawionych w build.gradle.kts, dowiedz się, jak:

  • Zmień identyfikator aplikacji w przypadku różnych konfiguracji kompilacji.
  • Bezpiecznie dostosuj przestrzeń nazw niezależnie od identyfikatora aplikacji.

Ustawianie identyfikatora aplikacji

Każda aplikacja na Androida ma unikalny identyfikator, który wygląda jak lub pakiet Kotlin nazwa, na przykład com.example.mojaaplikacja. Ten identyfikator jednoznacznie identyfikuje aplikację w na urządzeniu i w Sklepie Google Play.

Identyfikator aplikacji jest określany przez właściwość applicationId w module build.gradle.kts, jak pokazano tutaj. Zaktualizuj wartość atrybutu applicationId , zastępując com.example.myapp nazwą identyfikator aplikacji:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Odlotowe

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

Chociaż identyfikator aplikacji wygląda jak tradycyjny pakiet Kotlin lub Java reguły nazewnictwa dla identyfikatora aplikacji, są nieco bardziej restrykcyjne:

  • Musi zawierać co najmniej 2 segmenty (1 lub więcej kropek).
  • Każdy segment musi zaczynać się od litery.
  • Wszystkie znaki muszą być znakami alfanumerycznymi lub podkreśleniami [a–zA–Z0–9_].

Gdy tworzysz nowy projekt na Androidzie: Studio, applicationId to automatycznie przypisywano nazwę pakietu wybraną przez Ciebie podczas konfiguracji. Ty technicznie może od tego momentu niezależnie włączać obie właściwości, ale nie jest zalecana.

Podczas ustawiania identyfikatora aplikacji zalecamy wykonanie tych czynności:

  • Identyfikator aplikacji pozostaw taki sam jak w przestrzeni nazw. Rozróżnienie między dwóch właściwości może być nieco mylące, ale jeśli nie zmienią się, nie ma się czym przejmować.
  • Nie zmieniaj identyfikatora aplikacji po jej opublikowaniu. Jeśli to zrobisz, Sklep Google Play traktuje kolejne przesłane treści jako nową aplikację.
  • Wyraźnie zdefiniuj identyfikator aplikacji. Jeśli identyfikator aplikacji nie jest wyraźnie określony zdefiniowane za pomocą właściwości applicationId, automatycznie przyjmuje to samo . Oznacza to, że zmiana przestrzeni nazw powoduje zmianę Identyfikator aplikacji, który zwykle nie jest tym, czego potrzebujesz.
.

Zmienianie identyfikatora aplikacji na potrzeby testowania

Domyślnie narzędzia do kompilacji stosują identyfikator aplikacji do test instrumentacji Plik APK z dołączonym identyfikatorem aplikacji danego wariantu kompilacji .test Na przykład testowy plik APK dla pakietu com.example.myapp.free wariant kompilacji ma identyfikator aplikacji com.example.myapp.free.test

Chociaż nie jest to konieczne, możesz zmienić identyfikator aplikacji przez definiując właściwość testApplicationId w tabeli defaultConfig lub Blokada: productFlavor.

Ustawianie przestrzeni nazw

Każdy moduł Androida ma przestrzeń nazw używaną jako Kotlin lub Java nazwa pakietu dla wygenerowanych przez siebie klasach R i BuildConfig.

Przestrzeń nazw jest zdefiniowana przez właściwość namespace w tagu build.gradle.kts zgodnie z poniższym fragmentem kodu. namespace jest początkowo ustawiona na nazwę pakietu, którą wybierzesz utworzyć projekt.

Kotlin

android {
    namespace = "com.example.myapp"
    ...
}

Odlotowe

android {
    namespace "com.example.myapp"
    ...
}

Podczas tworzenia aplikacji w ostatecznej wersji pakietu aplikacji, Android narzędzia do kompilacji używają przestrzeni nazw jako przestrzeni nazw wygenerowanego przez aplikację komponentu R klasa, która pozwala uzyskać dostęp do zasobów aplikacji. Na przykład w poprzednim pliku kompilacji klasa R jest tworzona w lokalizacji com.example.myapp.R

Nazwa ustawiona przez Ciebie dla właściwości namespace pliku build.gradle.kts powinna być zawsze taka sama jak nazwa pakietu podstawowego projektu. aktywność i inny kod aplikacji. Możesz mieć inne podpakiety w Twojego projektu, ale te pliki muszą zaimportować klasę R za pomocą z przestrzeni nazw z właściwości namespace.

Aby uprościć przepływ pracy, zachowaj swoją przestrzeń nazw identyfikatorów aplikacji.

Zmiana przestrzeni nazw

W większości przypadków należy zachować przestrzeń nazw i identyfikator aplikacji jako są takie same jak domyślnie. Może jednak być konieczna zmiana przestrzeni nazw w podczas reorganizacji kodu lub unikania kolizji z przestrzenią nazw.

W takich przypadkach zmień przestrzeń nazw, aktualizując właściwość namespace w pliku build.gradle.kts modułu niezależnie od identyfikator aplikacji. Zanim to zrobisz, upewnij się, że identyfikator aplikacji to bezpośrednio zdefiniowane, tak aby zmiana przestrzeni nazw nie spowodowała identyfikator aplikacji. Aby uzyskać więcej informacji o tym, jak przestrzeń nazw może wpływać na Identyfikator aplikacji znajdziesz w artykule Ustawianie identyfikatora aplikacji.

Jeśli namespace ma różne nazwy oraz applicationId, treść narzędzi do kompilacji identyfikator aplikacji do ostatecznego pliku manifestu na końcu kompilacji. Jeśli więc sprawdzisz plik AndroidManifest.xml po kompilacji, atrybut package jest ustawiony na identyfikator aplikacji. Atrybut package scalonego pliku manifestu wskazuje, gdzie element Sklep Google Play i platforma Androida identyfikują Twoją aplikację.

Zmień przestrzeń nazw na potrzeby testowania

Domyślna przestrzeń nazw zbiorów źródłowych androidTest i test jest główną przestrzenią nazw z przestrzenią nazw z dodanym na końcu wymiarem .test. Na przykład, jeśli plik Właściwość namespace w pliku build.gradle to com.example.myapp, Testowa przestrzeń nazw jest domyślnie ustawiona na com.example.myapp.test Aby zmienić przestrzeń nazw na potrzeby testowania, użyj testNamespace zgodnie z poniższym fragmentem kodu:

Kotlin

android {
    namespace = "com.example.myapp"
    testNamespace = "com.example.mytestapp"
    ...
}

Odlotowe

android {
    namespace "com.example.myapp"
    testNamespace "com.example.mytestapp"
    ...
}

Uwaga: nie ustawiaj wartości testNamespace ani namespace na tę samą wartość, w przeciwnym razie przestrzeń nazw kolizje.

Więcej informacji o testowaniu znajdziesz w artykule Testowanie aplikacji na Androidzie.