Szukam dynamicznego nadawania nazwy pakietowi APK dla każdej kompilacji z datą/czasem (yyMMddHHmm). Ukończyłem to i stopniowo kompilowałem i nadawałem nazwę APK poprawnie, jednak Android Studio nie odbiera prawidłowej nazwy, aby spróbować przekazać do urządzenia.Studio Android/stopniowa nazwa dynamicznego apk nie jest zsynchronizowana
Istnieje pytanie na ten temat z kilkoma dobrymi informacjami, potwierdzające problem i wymagające ręcznej synchronizacji przed każdą kompilacją. Android Studio uploads sterile APK to device when Gradle has custom logic changing APK names
Dla pełnego obrazu Oto moja build.gradle
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
// grab the date/time to use for versionCode and file naming
def date = new Date();
def clientBuildDate = date.format('yyMMddHHmm')
// for all client files, set the APK name
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, "myapp-" + versionName.replace(".","_") + "-" + clientBuildDate + ".apk")
}
}
....
defaultConfig{...}
buildTypes{...}
compileOptions{...}
signingConfigs{...}
}
Wyjście powyżej wygeneruje jak:
myapp-1_0_0-1507021343.apk
myapp-1_0_0-1507021501.apk
myapp-1_0_0-1507021722.apk
ale Android studio zawsze próbuje załadować 1. Do wersji telefon, ponieważ nie jest zsynchronizowany i nie jest świadomy zmiany nazwy po każdej kompilacji.
Czy są jakieś sugestie dotyczące wymuszania synchronizacji w każdej kompilacji/uruchomieniu studia Android? Ręczne wykonanie synchronizacji przed kompilacją jest ogranicznikiem show i wymagałoby ode mnie powrotu do domyślnego schematu nazewnictwa APK.
Użycie: AS 1.2.1.1 & „com.android.tools.build:gradle:1.2.3”
Czy próbowałeś grać z 'własności archivesBaseName'? Myślę, że AS powinien rozpoznać zmianę nazwy pliku APK, jeśli jest zdefiniowany w bloku 'defaultConfig', zamiast skryptu do ręcznej zmiany nazwy plików. Zobacz przykład http://stackoverflow.com/a/28992851/937715. –
@SeanBarbeau dziękuję za sugestię. Podejście do użycia 'archivesBaseName' nie zadziała dla dynamicznego nazewnictwa, w tym przykładzie nazwa jest budowana przy użyciu ciągów statycznych, więc z natury zmieniając te łańcuchy wymuszasz synchronizację grad, która wyrównuje AS/grad, w moim przypadku i ' Nie szukam ręcznej edycji wartości, które są połączone, ale mają je obliczone w trakcie kompilacji, tutaj pojawiają się problemy, ponieważ takie podejście nie rozpoczyna synchronizacji. –
Czy próbowałeś używać 'gradle flavour''? Nie wiem, jak dobrze pracują z nazwami dynamicznymi, które zmieniają się z każdą nową kompilacją, ale tutaj jest [pytanie] (http://stackoverflow.com/questions/23226722/use-different-resources-graphics-and-strings- dla różnych smaków aplikacji) Pytałem w przeszłości o temat instalacji. – craned