Mój magazyn kluczy jest uszkodzony, dlatego Android Market wymaga ode mnie zmiany nazwy aplikacji i jej ponownego przesłania. Jednak za każdym razem, gdy edytuję nazwy pakietów w Manifest i w plikach, dostaję mnóstwo błędów.
Jaki jest właściwy sposób zmiany nazwy aplikacji?
Odpowiedzi:
Jeśli używasz Eclipse, możesz wypróbować te instrukcje z witryny programistów Androida. Są przeznaczone specjalnie dla próbki GestureBuilder, ale powinny mieć zastosowanie do każdej aplikacji, o ile wiem:
Upewnij się również, że pamiętałeś o zmianie nazwy samego pakietu wraz z odniesieniami do niego w plikach. W Eclipse możesz zobaczyć nazwę pakietu w oknie eksploratora plików / widoku drzewa po lewej stronie. Z mojego doświadczenia wynika, że Eclipse może czasami być trochę skomplikowane i zawodne (na przykład pozostawiając przypadkowe odniesienia do starej nazwy pakietu).
źródło
app_name
w res-> values => strings.xmlIstnieje sposób na łatwą zmianę nazwy pakietu w Eclipse. Kliknij prawym przyciskiem myszy projekt, przewiń w dół do opcji Narzędzia systemu Android, a następnie kliknij opcję Zmień nazwę pakietu aplikacji.
źródło
Oto, jak możesz to zrobić w Eclipse:
src/com.android.gesture.builder
).Refactor > Rename
i zmień nazwę, na przykład nacom.android.gestureNEW.builder
.<manifest>
tagu zmień nazwę pakietu nacom.android.gestureNEW.builder
.Activity
plików i zrób Ctrl+ Shift+, Oaby dodać brakujące pakiety importu, a następnie zapisz każdy plik.GestureBuilder
aplikację na emulatorze.Link do posta
Zaktualizuj w bardzo łatwy sposób, kliknij prawym przyciskiem myszy swój projekt ...
źródło
W Android Studio , które, szczerze mówiąc, powinieneś używać, zmień nazwę
right-clicking
pakietu na nazwę pakietu wproject structure -> Refactor -> Rename...
Następnie daje możliwość zmiany nazwy katalogu lub pakietu. Wybierz pakiet. Katalog powinien być podobny. Wpisz nową nazwę pakietu i kliknij Refaktoryzuj. Zmieni to wszystkie importy i usunie zbędne importy. Możesz nawet poprosić o naprawę w komentarzach, ciągach znaków itp.
Na koniec zmień odpowiednio nazwę pakietu w pliku AndroidManifest.xml u góry. W przeciwnym razie wszędzie pojawią się błędy, narzekając na R. cokolwiek.
Kolejne bardzo przydatne rozwiązanie
Najpierw utwórz nowy pakiet o żądanej nazwie
by right clicking on the
folder java -> nowy -> pakiet.`Następnie wybierz i przeciągnij wszystkie swoje klasy do nowego pakietu. AndroidStudio zmieni wszędzie nazwę pakietu.
Następnie: w
build.gradle
polu dodaj / edytuj applicationId swojej aplikacji z nowym. czyli (com.a.bc
w moim przypadku):Oryginalny post i więcej komentarzy tutaj
źródło
package
folderzejava
Bez Eclipse:
Zmień nazwę pakietu i nazwy działań w AndroidManifext.xml i wszędzie tam, gdzie pojawia się w plikach .xml (niestandardowe nazwy widoków itp.)
Zaktualizuj instrukcję importu pakietu we wszystkich plikach źródłowych
Zmień nazwy wszystkich folderów, aby pasowały do nazwy pakietu. Lokalizacje folderów:
a. bin / klasy
b. gen
c. src
Zaktualizuj nazwę projektu w build.xml (inaczej nazwa twojego apk nie ulegnie zmianie)
Usuń wszystkie pliki .class w bin / classes / com / example / myapp / (jeśli pominiesz ten krok pliki nie zostaną przepisane podczas budowania, a dex spowoduje kilkaproblemów podczas przetwarzania "nazwa klasy nie pasuje do ścieżki"
Usuń gen / com / example / myapp / BuildConfig.java (nie wiem, dlaczego usunięcie BuildConfig.class w kroku 3a nie spowodowało, że dex zaktualizował swoją ścieżkę do tego, ale dopóki nie usunąłem BuildConfig.java, nadal odtwarzał gen / com / oldapp_example / oldapp i umieszczając tam BuildConfig.class. Nie wiem, dlaczego R.java z tej samej lokalizacji nie ma tego problemu. Podejrzewam, że BuildConfig.java jest automatycznie generowany w prekompilacji, ale R.java nie jest)
Powyższych 6 kroków wykonałem, aby zmienić nazwę mojego pakietu i uzyskać pomyślną * kompilację. Może istnieć lepszy sposób obsługi kroków 5 i 6 za pomocą poleceń dex w celu zaktualizowania ścieżek lub być może poprzez edycję classes.dex.d w katalogu głównym projektu. Nie jestem zaznajomiony z dexem lub czy mogę usunąć / edytować classes.dex.d, więc wybrałem metodę usuwania plików .class, o których wiem, że zostaną zregenerowane w kompilacji. Następnie sprawdziłem classes.dex.d, aby zobaczyć, co jeszcze wymaga aktualizacji.
* Żadne błędy ani ostrzeżenia nie pozostały w mojej kompilacji Z WYJĄTKIEM dex i apkbuilder oba mają stan „Znaleziono usunięty plik docelowy” bez żadnych informacji o tym, czym jest ten plik. Nie jestem pewien, czy pojawia się to w każdej kompilacji, czy było tam, zanim zepsułem nazwę pakietu, czy też jest wynikiem moich usunięć i brakuje mi kroku.
źródło
Wykonaj następujące kroki: -
GOTOWE
źródło
Najszybszy sposób na zrobienie tego w Android Studio 1.3 :
manifest
Module Settings[F4]-> Flavors
,Application Id
napisz to samo imię.[right-click-> new-> package]
[Right-click-> Refactor-> Move-> {Select package}-> Refactor]
PS Jeśli nie będziesz postępować zgodnie z tą kolejnością, możesz skończyć zmieniając wszystkie pliki java jeden po drugim z nowymi importami i kilkoma błędami czasu kompilacji, więc kolejność jest bardzo ważna.
źródło
Zmiana nazwy pakietu to wrzód na dupie. Wygląda na to, że różne metody działają na różnych ludzi. Moje rozwiązanie jest szybkie i bezbłędne. Wygląda na to, że nie jest potrzebne czyszczenie ani resetowanie zaćmienia.
źródło
Bernstein ma metodę, użyj narzędzia Eclipse, „Zmień nazwę pakietu aplikacji”, być może będziesz musiał wykonać pewne porządki nawet po fakcie. Ponadto Eclipse czasami gubi rzeczy podczas wprowadzania zmian w projekcie. Konieczne może być użycie narzędzia „Wyczyść projekt” (w menu „Projekt”). Jeśli to nie zadziała, może być konieczne zamknięcie i ponowne uruchomienie Eclipse. Rozwiązania Voo-doo, ale Eclipse może takie być.
źródło
Odkryłem, że najłatwiejszym rozwiązaniem jest użycie Regexxer do zastąpienia „com.package.name” przez „com.newpackage.name”, a następnie poprawna zmiana nazw katalogów. Super łatwe, super szybkie.
źródło
src
folderze i zaznacz opcjęrename subpackages
źródło
Jest też inne rozwiązanie dla użytkowników bez Eclipse, wystarczy zmienić atrybut pakietu w tagu <manifest> w AndroidManifest.xml, zastępując starą nazwę pakietu nową. Uwaga: Musisz też ręcznie dostosować wszystkie powiązane instrukcje importu i powiązane foldery w swoim projekcie.
źródło
Alternatywny:
źródło
Kliknij prawym przyciskiem myszy Projekt> Narzędzia systemu Android> Zmień nazwę pakietu aplikacji
Przejdź do src i kliknij prawym przyciskiem myszy swój pakiet główny> Refaktoryzuj> Zmień nazwę
Przejdź do pliku manifestu i zmień nazwę pakietu.
źródło
Straciłem kilka godzin próbując wszystkich rozwiązań. Byłem pewien, że problem tkwi w moim kodzie - zaczyna się apk, ale występują błędy podczas pracy z różnymi klasami i działaniami.
Jedyny sposób pracy z moim projektem:
U mnie to działa, jedyne rozwiązanie.
źródło
Tak więc, użycie IntelliJ z wtyczką Android (Studio) wyglądało tak: Poszedłem
AndroidManifest.xml
na górę i zmieniłem nazwę pakietu, klikając prawym przyciskiem myszy -> Refaktoryzuj -> zmień nazwę. Nasza nazwa pakietu składała się z czterech częścia.b.c.d
, tylko noweja.b.c
. Więc zmieniłem nazwę pierwszych trzech. Następnie przeszedłem do katalogu wygenerowanych źródeł (app\build\generated\source\r\development\debug\a\b\c\d
), kliknąłem prawym przyciskiemR
klasę i Refactor-> Przenieś [d] to do jednego pakietu wyżej. To samo zBuildConfig
wapp\build\generated\source\buildConfig\development\debug\a\b\c\d
.Używając Refactor-> Move, IntelliJ aktualizuje wszystkie odwołania do
BuildConfig
iR
.W końcu zaktualizowałem wszystkie applicationId [s], które znalazłem w gradle.build. Wcisnąłem Clean Project, Make and Rebuild Project. Usunąłem aplikację z telefonu i wcisnąłem „Play”. Wszystko się udało, więc refaktoryzacja była łatwa i dość szybka.
źródło
W Android Studio 1.2.2 Powiedz, czy chcesz zmienić
com.example.myapp
naorg.mydomain.mynewapp
Możesz wykonać kroki w każdym z katalogów, jak pokazano na poniższym zrzucie ekranu. Zapewnia opcję podglądu, dzięki czemu można wyświetlić podgląd przed wprowadzeniem jakichkolwiek zmian.Idź
Refactor -> Rename
i podaj swoje nowe imię. Musisz to zrobić dla każdego z folderów, na przykład com, przykład i myapp. Automatycznie zaktualizuje import, abyś nie musiał się tym martwić.Zaktualizuj również plik,
build.gradle
który nie jest aktualizowany automatycznie.Potem poprosi o
sync
zrobienie tego. Wtedy wszystko będzie dobrze. Po tym mogę przesłać mój plik APK do sklepu Google. Upewnij się, że podpisałeś aplikację, aby przesłać ją do sklepu.źródło
źródło