Jak zmienić nazwę pakietu aplikacji na Androida

133

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?

Allen Gingrich
źródło
3
na szczęście dodali „magiczny przycisk zmiany nazwy pakietu” od 2010 roku - zobacz odpowiedź @Marc Bernstein - stackoverflow.com/a/4025633/383414
Richard Le Mesurier
dzięki Richard Le ...
DoruChidean
3
Możliwy duplikat pakietu zmiany nazwy Android Studio
Bo Persson
trudno być duplikatem, gdy pytano o to 3 lata wcześniej ...
Ryan Ternier

Odpowiedzi:

102

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:

[H] ere, jak możesz to zrobić w Eclipse:

  1. Kliknij prawym przyciskiem myszy nazwę pakietu ( src/com.android.gesture.builder).
  2. Wybierz Refaktoryzuj> Zmień nazwę i zmień nazwę, na przykład na com.android.gestureNEW.builder.
  3. Otwórz plik manifestu. W <manifest>tagu zmień nazwę pakietu na com.android.gestureNEW.builder.
  4. Otwórz każdy z dwóch plików działań i wykonaj Ctrl-Shift-O, aby dodać brakujące pakiety importu, a następnie zapisz każdy plik. Uruchom aplikację GestureBuilder na emulatorze.

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).

eldarerathis
źródło
To chyba najlepszy sposób na zrobienie tego, nie ma magicznego przycisku zmiany nazwy pakietu.
blindstuff
13
Tak jest. Zobacz odpowiedź @Marc Bernstein.
Mark Phillip
Nie sądzę, by osoba, która pytała, musiała zmieniać również nazwy pakietów Java. Marc powinna być akceptowaną odpowiedzią.
mpellegr
Pierwszym krokiem nie jest kliknięcie prawym przyciskiem myszy, należy wybrać z menu opcję „Refaktoryzuj”.
Deqing
Może zajść potrzeba zmiany app_namew res-> values ​​=> strings.xml
Deqing
302

Istnieje 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.

Marc Bernstein
źródło
2
Właśnie wypróbowałem Eldara i zadziałało - ale jestem pewien, że to też zadziała.
Allen Gingrich
4
To jest poprawna odpowiedź, ale obecne ADT jest zepsute i ŁAMIE każde odwołanie do twojej klasy R. Musisz więc kliknąć każdy pojedynczy plik, wykonać "ctrl-shift-o" (lub cmd-shift-o na Macu) i wybrać swój nowy pakiet o nazwie R (NIE wybieraj android.R! Coś się okropnie zepsuje ), a następnie naciśnij Zapisz. ... i powtórz dla KAŻDEGO pojedynczego pliku :(
Adam
@Adam tylko po to, aby ułatwić nam życie, kliknij projekt i użyj ctrl + shift + o, zaktualizuje zaimportowane odniesienie we WSZYSTKICH klasach / plikach: D
Blaze Tama
to właśnie uratowało mi życie, ponieważ straciłem swój absurdalny klucz i musiałem ponownie opublikować moją aplikację.
Teoman shipahi
3
Znalazłem nazwy pakietów plików zadeklarowane na górze każdego pliku, aby nie pasowały do ​​nowego pakietu ani do folderu, w którym się znajdują. możesz kliknąć prawym przyciskiem myszy folder źródłowy, który nadal ma starą nazwę pakietu (przynajmniej mój zawsze ma), wybierz „refactor”, następnie „zmień nazwę” i zmień nazwę na nowy pakiet. eclipse zmieni wtedy nazwę folderu i deklaracji pakietu każdego pliku na nową nazwę pakietu, tak jak powinno było to zrobić w pierwszej kolejności.
Androidcoder
52

Oto, jak możesz to zrobić w Eclipse:

  1. Kliknij prawym przyciskiem myszy nazwę pakietu ( src/com.android.gesture.builder).
  2. Wybierz Refactor > Renamei zmień nazwę, na przykład na com.android.gestureNEW.builder.
  3. Otwórz plik manifestu. W <manifest>tagu zmień nazwę pakietu na com.android.gestureNEW.builder.
  4. Otwórz każdy z dwóch Activityplików i zrób Ctrl+ Shift+, Oaby dodać brakujące pakiety importu, a następnie zapisz każdy plik.
  5. Uruchom GestureBuilderaplikację na emulatorze.

Link do posta

Zaktualizuj w bardzo łatwy sposób, kliknij prawym przyciskiem myszy swój projekt ... wprowadź opis obrazu tutaj

AZ_
źródło
2
Całkiem niesamowity sposób na zrobienie tego!
Koleś,
2
Łatwiejsze rozwiązanie. To powinno zostać zaakceptowane;)
Nomade
12

W Android Studio , które, szczerze mówiąc, powinieneś używać, zmień nazwę right-clickingpakietu 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 thefolder 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.gradlepolu dodaj / edytuj applicationId swojej aplikacji z nowym. czyli ( com.a.bcw moim przypadku):

defaultConfig {
    applicationId "com.a.bc"
    minSdkVersion 13
    targetSdkVersion 19
}

Oryginalny post i więcej komentarzy tutaj

wyciągnięty
źródło
Co dziwne, kiedy to robię, nie podaje wyboru katalogu / pakietu ... tylko "nazwa modułu" ...
Fattie
1
Robi to samo teraz, gdy kliknę prawym przyciskiem myszy katalog główny. Przynajmniej dla mnie to nie jest moja rzeczywista nazwa pakietu. Jeśli nazwa Twojego pakietu to com.a.bc, poniżej katalogu głównego powinien znajdować się katalog o nazwie bc. Tam otrzymasz różne opcje. W tej chwili pobieram katalog lub moduł. Wypróbuj moduł. Zawsze możesz to cofnąć (Ctrl + z powinno to zrobić), jeśli coś zepsuje.
wyciągnięto
Dzięki… cholera, masz na myśli katalog „.idea” czy katalog „app”? Właśnie opublikowałem wyjaśniające pytanie Q .. stackoverflow.com/questions/23786361/ ... Ahh .. Po kliknięciu folderu z aplikacjami widzę teraz „Wybierz katalog / moduł refaktoryzacji”… hoy caramba!
Fattie
@JoeBlow kliknij prawym przyciskiem myszy w packagefolderzejava
Abu Shumon
„Android Studio, z którego, szczerze mówiąc, powinieneś korzystać” Mając na uwadze, że pytanie zostało zadane w 2010 roku, podczas gdy AS nie zostało ogłoszone aż do 2013 roku, nie mówiąc już o wydaniu stabilnej wersji (2014). To prawda, że ​​w dzisiejszych czasach użytkownicy powinni używać AS. :-)
LarsH
8

Bez Eclipse:

  1. 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.)

  2. Zaktualizuj instrukcję importu pakietu we wszystkich plikach źródłowych

  3. Zmień nazwy wszystkich folderów, aby pasowały do ​​nazwy pakietu. Lokalizacje folderów:
    a. bin / klasy
    b. gen
    c. src

  4. Zaktualizuj nazwę projektu w build.xml (inaczej nazwa twojego apk nie ulegnie zmianie)

  5. 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"

  6. 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.

clusterflux
źródło
Rozwiązałem problem zmiany nazwy, tak jak ty, ale z uproszczeniem: usuń foldery bin i gen. Nie mogłem również zaimportować projektu o zmienionej nazwie w Eclipse, dopóki nie zmodyfikowałem ukrytego pliku .project, miał on starą nazwę projektu pod <nazwa>
Jose_GD
6

Wykonaj następujące kroki: -

  • Kliknij projekt prawym przyciskiem myszy.
  • Przejdź do narzędzi Androida.
  • Kliknij opcję Zmień nazwę pakietu aplikacji.
  • Zmień nazwę pakietu aplikacji.

GOTOWE

Deepak Sharma
źródło
1
To działa, ale powinieneś także refaktoryzować nazwę pakietu podstawowego folderu src.
ashishduh
6

Najszybszy sposób na zrobienie tego w Android Studio 1.3 :

  1. Zmień nazwę pakietu w manifest
  2. Idź do Module Settings[F4]-> Flavors, Application Idnapisz to samo imię.
  3. Utwórz nowy pakiet o tej nazwie: [right-click-> new-> package]
  4. Wybierz wszystkie pliki Java swojego projektu, a następnie kontynuuj [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.

Movsar Bekaev
źródło
1
Dzięki tej metodzie wartość R pozostaje niezmieniona przez refaktoryzację. więc zaimportuj com.app.myapp.R NIE zmienia się na nową nazwę pakietu i musisz robić to jeden po drugim ...
OWADVL
@OWADVL, R zmienia się automatycznie, gdy przenosisz pliki do nowego pakietu, Android Studio automatycznie wykonuje odbudowę, gdy przenosisz pliki .java, robię to codziennie i dopóki zachowam tę kolejność, nigdy niczego nie zmieniam w plikach .java ręcznie
Movsar Bekaev
Ale w Eclipse mogliśmy zmienić identyfikator pakietu aplikacji bez zmiany pakietu całego kodu. Kreator zmieniłby dla Ciebie nazwy referencji BuildConfig & R. Dziwię się, że ta sama rzecz nie istnieje w AS.
Tom
5

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.

  1. Kliknij prawym przyciskiem myszy nazwę pakietu, a następnie Refractor> Zmień nazwę.
  2. Kliknij prawym przyciskiem myszy nazwę projektu Narzędzia systemu Android> Zmień nazwę pakietu aplikacji.
  3. Ustaw ręcznie nazwy pakietów w manifeście, które nie zostały zmienione w poprzednich krokach.
erdomester
źródło
3

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ć.

m0j0
źródło
3

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.

robisaki
źródło
3
  1. Najpierw zmień nazwę pakietu w pliku manifestu
  2. Ponownie uwzględnij> Zmień nazwę pakietu w src folderze i zaznacz opcjęrename subpackages
  3. To wszystko, co zrobiłeś.
Sathirar
źródło
Próbowałem użyć narzędzi Marca Bernsteina dla Androida -> Zmień nazwę pakietu aplikacji, ale spowodowało to błąd. To było prostsze, chociaż musiałem naprawić kilka rzeczy po zmianie
david-hoze
2

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.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="new.package.name"
    .....
</manifest>
Jak ty
źródło
1

Alternatywny:

  1. Otwórz AndroidManifest.xml
  2. Zmień pakiet = „NOWA NAZWA” w tagu manifestu.
MapleLover
źródło
1
  1. Kliknij prawym przyciskiem myszy Projekt> Narzędzia systemu Android> Zmień nazwę pakietu aplikacji

  2. Przejdź do src i kliknij prawym przyciskiem myszy swój pakiet główny> Refaktoryzuj> Zmień nazwę

  3. Przejdź do pliku manifestu i zmień nazwę pakietu.

ritesh4326
źródło
1

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:

  1. zmień nazwę - plik / zmień nazwę i zaznacz wszystkie pola wyboru
  2. sprawdź miejsca bez zmiany nazw, miałem w jednym z układów starą nazwę wciąż w narzędziach: context = "..
  3. utwórz nowy obszar roboczy
  4. importuj projekt do nowego obszaru roboczego

U mnie to działa, jedyne rozwiązanie.

Koleś
źródło
1

Tak więc, użycie IntelliJ z wtyczką Android (Studio) wyglądało tak: Poszedłem AndroidManifest.xmlna 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ęści a.b.c.d, tylko nowej a.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 przyciskiem Rklasę i Refactor-> Przenieś [d] to do jednego pakietu wyżej. To samo z BuildConfigw app\build\generated\source\buildConfig\development\debug\a\b\c\d.

Używając Refactor-> Move, IntelliJ aktualizuje wszystkie odwołania do BuildConfigi R.

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.

Raul Pinto
źródło
1

W Android Studio 1.2.2 Powiedz, czy chcesz zmienić com.example.myappnaorg.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 -> Renamei 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ć. wprowadź opis obrazu tutaj

Zaktualizuj również plik, build.gradlektóry nie jest aktualizowany automatycznie.

defaultConfig {
        applicationId "org.mydomain.mynewapp" //update the new package name here
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

Potem poprosi o synczrobienie 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.

Krishnadas PC
źródło
0
  1. W Twoim studiu Android, w panelu projektu, znajduje się ikona koła zębatego „Kliknij na to”.
  2. Usuń zaznaczenie opcji Compact Empty Middle Packages
  3. Teraz katalog pakietów został podzielony, czyli poszczególne katalogi.
  4. Wybierz katalog, którego nazwę chcesz zmienić.
  5. Kliknij prawym przyciskiem myszy ten konkretny katalog.
  6. Wybierz refaktoryzację, a następnie zmień nazwę opcji.
  7. Okno dialogowe zostało otwarte, zmień jego nazwę.
  8. Po wpisaniu nowej nazwy kliknij Refactor.
  9. Następnie kliknij opcję Do Refactor na dole.
  10. Następnie Android Studio zaktualizuje wszystkie zmiany.
  11. Teraz otwórz plik build.gradle, zaktualizuj applicationId i zsynchronizuj go.
  12. Teraz przejdź do pliku manifestu i zmień nazwę pakietu.
  13. Odbuduj swój projekt.
  14. Gotowe :)
Hanisha
źródło