Próbuję znaleźć sposób, aby zmienić nazwę mojej aplikacji na typ kompilacji w gradle.
Na przykład chciałbym mieć wersję debugowania <APP_NAME>-debug
i wersję QA <APP-NAME>-QA
.
Jestem zaznajomiony z:
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
}
Jednak nie mogę znaleźć polecenia gradle, aby zastosować zmianę aplikacji w programie uruchamiającym.
źródło
release
znaków niebędących ciągami znaków.release
część niezwiązaną , widzę to nieco inaczej, ponieważ można również chcieć przetestować pod kątem problemów z lokalizacją, jednocześnie zezwalając na współistnienie kompilacji „wydanie” i „test” na tym samym urządzeniu. W takim przypadku obie kompilacje mogą skończyć z tą samą etykietą programu uruchamiającego, prawdopodobnie powodując pewne zamieszanie. Właśnie tego starałem się uniknąć.release
trybie. I używaj tego zasobu ciągu tylkoapp_name
dla żadnej innej roli, a nie.app_name
, nawet jeśli nie jest to konieczne (np. Masz francuskich lub niemieckich programistów, którzy nie mówią po angielsku i dlatego muszą ją przetłumaczyć). Do testowania, aby sprawdzić, czy niezmodyfikowanarelease
wersjaapp_name
działa wraz z tłumaczeniami, przetestujrelease
kompilację lub utwórznear-release
typ kompilacji, który po prostu dodaje sufiks identyfikatora aplikacji i pozostawia ciągi w spokoju.Możesz użyć czegoś takiego
Możesz użyć @ string / app_name w plikach AndroidManifest.xml.
Upewnij się, że usunąłeś app_name z wartości / folderu (brak wpisu o tej nazwie).
źródło
resValue "string", "app_name", System.getenv("APP_NAME") ?: "MyApp"
Możesz to zrobić za pomocą gradle:
Następnie w twoim
AndroidManifest.xml
miejscu:Uwaga: działa również z plikami
productFlavors
.źródło
Aby wspierać tłumaczenia, wykonaj następujące czynności:
1. usuń ciąg „nazwa_aplikacji”
2. dodać do gradle
3. Ustaw nazwę aplikacji w manifeście jako „@ string / app_name”
4. Dodaj do wartości strings.xml
źródło
app_name
w productFlavors częścibuild.gradle
pliku. Niezwykle wygodne i elastyczne podejście, gdy tego potrzebujesz.Nazwa aplikacji jest widoczna dla użytkownika i dlatego Google zachęca do jej przechowywania w pliku strings.xml. Możesz zdefiniować oddzielny plik zasobów ciągu, który zawiera ciągi, które są specyficzne dla twojego buildTypes. Wygląda na to, że możesz mieć niestandardowy
qa
buildType. Jeśli to nieprawda, zignoruj poniższą część qa.źródło
Potrzebujemy rozwiązania obsługującego nazwę aplikacji z lokalizacją (dla wielu języków). Testowałem z rozwiązaniem @Nick Unuchek, ale kompilacja się nie powiodła (nie znaleziono @ string /). mała zmiana, aby naprawić ten błąd: plik build.gradle:
wartości \ strings.xml:
values-en \ strings.xml:
Manifest.xml:
źródło
tools:replace="android:label"
wapplication
wAndroidManifest
Aby uzyskać bardziej dynamiczne rozwiązanie oparte na gradle (np. Ustaw
strings.xml
raz nazwę aplikacji bazowej w main i unikaj powtarzania się w każdej kombinacji smaku / kompilacjistrings.xml
), zobacz moją odpowiedź tutaj: https://stackoverflow.com/a/32220436/1128600źródło
Możesz używać
strings.xml
w różnych folderach, zobacz wartości oddzielnych ciągów dla systemu Android dla kompilacji do wydania i debugowania .Więc utwórz ten plik:
Następnie wklej go do folderów
app\src\debug\res\values\
iapp\src\release\res\values\
. Zastąp tekst „Nazwa Twojej aplikacji” w plikach debugowania i zwalniania. Usuńapp_name
element zstrings.xml
wapp\src\main\res\values\
folderze.W
AndroidManifest
będziesz miał to samoŻadnych zmian. Nawet jeśli dodałeś bibliotekę z jej
AndroidManifest
plikiem istrings.xml
.źródło
Ponieważ autor prosi o zrobienie tego w Gradle , możemy założyć, że chce to zrobić w skrypcie, a nie w plikach konfiguracyjnych. Ponieważ zarówno Android Studio, jak i Gradle zostały mocno zaktualizowane i zmodyfikowane w ciągu ostatniego roku (~ 2018), wszystkie inne powyższe odpowiedzi wydają się nadmiernie wykrzywione. Najłatwiejszym sposobem jest dodanie następujących elementów do
app/build.gradle
:źródło