Konfigurowanie modułu podstawowego

Pakiet aplikacji różni się od pliku APK tym, że nie można go wdrożyć w urządzenia. Jest to format publikowania, który obejmuje wszystkie i zasobów w jednym artefaktie kompilacji. Po przesłaniu podpisanego pakietu aplikacji, Google Play ma wszystko, czego potrzebuje, by utworzyć i podpisać pliki APK aplikacji i udostępniać je użytkownikom.

Rozpocznij

Obsługa pakietów Android App Bundle nie wymaga dużego wysiłku dla większości projektów aplikacji. Dzieje się tak, ponieważ moduł zawierający kod i zasoby dla aplikacji APK to standardowy moduł aplikacji, który domyślnie pojawia się po utworzyć nowy projekt aplikacji w Android Studio. To oznacza, że moduł, który stosuje poniższą wtyczkę application do swoich Plik build.gradle zawiera kod i zasoby funkcji podstawowej Twojej aplikacji.

Odlotowe

// The standard application plugin creates your app's base module.
plugins {
 id 'com.android.application'
}

Kotlin

plugins {
    // The standard application plugin creates your app's base module.
    id("com.android.application")
}

Moduł podstawowy nie tylko zapewnia podstawową funkcjonalność aplikacji, udostępnia też wiele konfiguracji kompilacji i wpisów manifestu, które na cały projekt aplikacji.

Konfiguracja kompilacji modułu podstawowego

W większości dotychczasowych projektów aplikacji nie musisz niczego zmieniać w podstawowej bazie. konfiguracji kompilacji modułu. Jeśli jednak rozważasz dodanie modułów funkcji do projektu aplikacji lub jeśli aplikacja została już opublikowana za pomocą wielu plików APK, istnieją pewne aspekty konfiguracji kompilacji modułu podstawowego o których warto pamiętać.

Kod wersji i aktualizacje aplikacji

Dzięki pakietom Android App Bundle nie musisz już zarządzać kodów wersji wielu plików APK, które przesyłasz do Google Play. Zamiast tego: zarządzać tylko jednym kodem wersji w module podstawowym aplikacji, jak pokazano poniżej:

// In your base module build.gradle file
android {
    defaultConfig {
        
        // You specify your app’s version code only in the base module.
        versionCode 5
        versionName "1.0"
    }
}

Gdy prześlesz pakiet aplikacji, Google Play użyje kodu wersji w pliku podstawowego modułu do przypisania tego samego kodu wersji do wszystkich generowanych plików APK i tego pakietu. Oznacza to, że gdy urządzenie pobiera i zainstaluje aplikację, wszystkie Pliki APK tej aplikacji mają ten sam kod wersji.

Aby dodać do aplikacji nowy kod lub zasoby, musisz zaktualizować kod wersji w podstawowym module aplikacji i utwórz nowy, pełny pakiet aplikacji. Gdy prześlesz ten pakiet aplikacji do Google Play, zostanie wygenerowany nowy zestaw plików APK. na podstawie kodu wersji określonego przez moduł podstawowy. Jeśli następnie użytkownicy zaktualizuje ją, Google Play udostępnia jej zaktualizowane wersje wszystkich plików APK aktualnie zainstalowane na urządzeniu. Oznacza to, że wszystkie zainstalowane pliki APK są aktualizowane do nowego kodu wersji.

Inne rzeczy, które warto wziąć pod uwagę

  • Podpisywanie aplikacji: jeśli umieszczasz informacje o podpisywaniu w plikach kompilacji, umieść go tylko w pliku konfiguracji kompilacji modułu podstawowego. Więcej informacji: Skonfiguruj Gradle, aby podpisać aplikację.
  • Zmniejszanie kodu: jeśli chcesz włącz zmniejszanie kodu na całego projektu aplikacji (w tym jego modułów funkcji), musisz wykonać więc z pliku build.gradle modułu podstawowego. Oznacza to, że możesz umieszcza w module funkcji niestandardowe reguły ProGuard, ale właściwość minifyEnabled w funkcji są ignorowane.
  • Blok splits jest ignorowany: podczas tworzenia pakietu aplikacji Gradle ignoruje właściwości w bloku android.splits. Jeśli chcesz sterować które typy plików APK konfiguracji obsługuje pakiet aplikacji, zamiast używać android.bundle do Wyłącz typy konfiguracyjnych plików APK.
  • Obsługa wersji aplikacji: moduł podstawowy określa kod i wersję aplikacji. nazwę dla całego projektu aplikacji. Więcej informacji znajdziesz w sekcji o tym, jak zarządzać aktualizacjami aplikacji.

Ponowne włączanie i wyłączanie typów konfiguracyjnych plików APK

Domyślnie podczas tworzenia pakietu aplikacji obsługuje się generowanie konfiguracji Pliki APK dla każdego zbioru zasobów językowych, zasobów gęstości ekranu i interfejsu ABI biblioteki. Używając bloku android.bundle w module podstawowym, build.gradle jak pokazano poniżej, możesz wyłączyć obsługę jednego lub wielu plików typy konfiguracyjnych plików APK:

Odlotowe

android {
    // When building Android App Bundles, the splits block is ignored.
    // You can remove it, unless you're going to continue to build multiple
    // APKs in parallel with the app bundle
    splits {...}

    // Instead, use the bundle block to control which types of configuration APKs
    // you want your app bundle to support.
    bundle {
        language {
            // This property is set to true by default.
            // You can specify `false` to turn off
            // generating configuration APKs for language resources.
            // These resources are instead packaged with each base and
            // feature APK.
            // Continue reading below to learn about situations when an app
            // might change setting to `false`, otherwise consider leaving
            // the default on for more optimized downloads.
            enableSplit = false
        }
        density {
            // This property is set to true by default.
            enableSplit = true
        }
        abi {
            // This property is set to true by default.
            enableSplit = true
        }
    }
}

Kotlin

android {
    // When building Android App Bundles, the splits block is ignored.
    // You can remove it, unless you're going to continue to build multiple
    // APKs in parallel with the app bundle
    splits {...}

    // Instead, use the bundle block to control which types of configuration APKs
    // you want your app bundle to support.
    bundle {
        language {
            // This property is set to true by default.
            // You can specify `false` to turn off
            // generating configuration APKs for language resources.
            // These resources are instead packaged with each base and
            // feature APK.
            // Continue reading below to learn about situations when an app
            // might change setting to `false`, otherwise consider leaving
            // the default on for more optimized downloads.
            enableSplit = false
        }
        density {
            // This property is set to true by default.
            enableSplit = true
        }
        abi {
            // This property is set to true by default.
            enableSplit = true
        }
    }
}

Obsługa zmian językowych

Google Play określa na podstawie aplikacji, które zasoby językowe należy zainstalować o języku wybranym w ustawieniach urządzenia. Pomyśl o użytkowniku, który zmieni swój domyślny język systemu już po pobraniu aplikacji. Jeśli aplikacja obsługuje ten język, urządzenie wysyła żądanie i pobiera dodatkowe konfiguracyjne pliki APK dla tych zasobów językowych z Google Play.

W przypadku aplikacji z selektorem języka i dynamicznie zmienić język aplikacji niezależnie od ustawienia języka na poziomie systemu, musisz wprowadzić zmiany, aby uniknąć awarii z powodu brakujących zasobów. Oba modele ustaw właściwość android.bundle.language.enableSplit na false lub rozważ i zaimplementowaliśmy pobieranie języków na żądanie za pomocą biblioteki Play Core, opisane w sekcji Pobieranie dodatkowych zasobów językowych