Android Uygulamasının paket adı nasıl değiştirilir?


133

Anahtar depom bozuk, bu nedenle Android Market uygulamayı yeniden adlandırmamı ve yeniden göndermemi istiyor. Ancak, paket adlarını Manifest'te ve dosyalar boyunca düzenlemeye gittiğimde, bana tonlarca hata veriyor.

Uygulama adını değiştirmenin uygun yolu nedir?


3
Neyse ki 2010'dan beri "büyülü, paket adını değiştir düğmesi" eklediler - @Marc Bernstein'ın cevabına bakın - stackoverflow.com/a/4025633/383414
Richard Le Mesurier

teşekkürler Richard Le ...
DoruChidean


Bu 3 yıl önce istendiğinde yinelenen zor ...
Ryan Ternier

Yanıtlar:


102

Eclipse kullanıyorsanız, bu talimatları Android'in geliştirici sitesinden deneyebilirsiniz . Özellikle GestureBuilder örneği içindir, ancak anlayabildiğim kadarıyla herhangi bir uygulama için geçerli olmalıdır:

[H] Eclipse'de bunu nasıl yapabildin:

  1. Paket adını ( src/com.android.gesture.builder) sağ tıklayın .
  2. Refactor> Yeniden adlandır'ı seçin ve adı olarak değiştirin com.android.gestureNEW.builder.
  3. Manifest dosyasını açın. İçinde <manifest>etiketi, için paket adını değiştirin com.android.gestureNEW.builder.
  4. İki Aktivite dosyasının her birini açın ve eksik içe aktarma paketleri eklemek için Ctrl-Shift-O tuşlarını kullanın, ardından her dosyayı kaydedin. Emülatörde GestureBuilder uygulamasını çalıştırın.

Ayrıca, paketin kendisini dosyalarda referanslarla birlikte yeniden adlandırmayı unutmayın. Eclipse'de, paketin adını sol taraftaki dosya gezgini penceresi / ağaç görünümünde görebilirsiniz. Benim tecrübelerime göre, Eclipse bazen biraz titiz ve güvenilmez olabilir (örneğin, eski paket adına başıboş referanslar bırakarak).


Muhtemelen bunu yapmanın en iyi yolu, büyülü, paket adını değiştirmek düğmesi yok.
körü körüne

13
Evet var. @Marc Bernstein'ın cevabına bakınız.
Mark Phillip

Orijinal sorgulayıcının Java paket adlarını da değiştirmek için gerekli olduğunu düşünmüyorum. Marc kabul edilmiş cevap olmalı.
mpellegr

İlk adım "sağ tık" değildir, menüde "Refactor" seçilmelidir.
Deqing

Ve app_nameres-> değerleri => strings.xml
Deqing

302

Eclipse'de paket adını kolayca değiştirmenin bir yolu var. Projenize sağ tıklayın, Android Araçları'na gidin ve ardından Uygulama Paketini Yeniden Adlandır'a tıklayın.


2
Eldar'ları denedim ve işe yaradı - ama bunun da işe yarayacağından eminim.
Allen Gingrich

4
Bu doğru cevaptır, ancak geçerli ADT bozulur ve R sınıfınıza yapılan her başvuruyu KIRILIR. Bu nedenle, her bir dosyayı tıklamanız, "ctrl-shift-o" (veya Mac'te cmd-shift-o) yapmanız ve yeni paket adlı R'nizi seçmeniz gerekir (android.R! ), ardından kaydet'e basın. ... ve HER dosya için tekrarlayın :(
Adam

@Adam sadece hayatımızı daha kolay hale getirmek, projeyi tıklayın ve ctrl + shift + o kullanın, TÜM sınıf / dosyada içe aktarılan referansı güncelleyecektir: D
Blaze Tama

gülünç storekeyimi kaybettim ve başvurumu yeniden yayınlamak zorunda kaldığım için bu hayatımı kurtardı.
Teoman shipahi

3
her paketin üst kısmında belirtilen dosya paket adlarını yeni paketle veya içerdikleri klasörle eşleşmeyecek şekilde buldum. hala eski paket adına sahip olan kaynak klasörü sağ tıklatabilirsiniz (en azından benim her zaman yapar), 'refactor'u seçin, sonra' yeniden adlandır 've yeni pakete yeniden adlandırın. eclipse, her dosyanın klasörünü ve paket bildirimlerini yeni paket adıyla yeniden adlandıracaktır (ilk etapta olması gerektiği gibi).
Androidcoder

52

Eclipse'de bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:

  1. Paket adını ( src/com.android.gesture.builder) sağ tıklayın .
  2. Refactor > RenameAdı seçin ve değiştirin, örneğin com.android.gestureNEW.builder.
  3. Manifest dosyasını açın. İçinde <manifest>etiketi, için paket adını değiştirin com.android.gestureNEW.builder.
  4. İki Activitydosyanın her birini açın ve eksik alma paketleri eklemek için Ctrl+ Shift+ Oyapın, ardından her dosyayı kaydedin.
  5. Run GestureBuilderöykünücüsünde uygulamayı.

Yayın bağlantısı

Güncelleme projenizde süper kolay yolu sağ tıklayın ... resim açıklamasını buraya girin


2
Bunu yapmak için harika bir yol!
Dostum

2
Daha kolay çözüm. Bu kabul edilmiş olmalı;)
Nomade

12

In Android Studio , çok dürüst, kullandığınız gerektiğini, paket adı ile değiştirmek right-clickingpaket adı üzerindeproject structure -> Refactor -> Rename...

Daha sonra dizini veya paketi yeniden adlandırma seçeneği sunar. Paketi seçin. Dizin uygun olmalıdır. Yeni paket adınızı yazın ve Refactor'a tıklayın. Tüm ithalatı değiştirecek ve sizin için gereksiz ithalatı kaldıracaktır. Hatta yorum ve dizelerde sizin için düzeltmesini sağlayabilirsiniz.

Son olarak , AndroidManifest.xml dosyasında paket adını buna göre değiştirin. Aksi takdirde her yerde R.whatever hakkında şikayetçi hatalar alırsınız.

Bir başka çok yararlı çözüm

Önce istediğiniz adla yeni bir paket oluşturun by right clicking on thejava klasörü -> yeni -> paket. '

Ardından, tüm sınıflarınızı seçin ve yeni pakete sürükleyin. AndroidStudio, paket adını her yerde yeniden etkiler.

Bundan sonra: build.gradleuygulamanızın yenisiyle ekleme / düzenleme uygulamasında. yani ( com.a.bcbenim durumumda):

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

Orijinal yayın ve daha fazla yorum burada


Tuhaf bir şekilde, bunu yaptığımda, seçim dizini / paketi vermiyor ... sadece "modül adı" ...
Fattie

1
Kök dizini sağ tıklarsam, şu anda bana da aynısını yapıyor. En azından benim için, bu gerçek paket adım değil. Paket adınız com.a.bc ise, kök dizinin altında bc adlı bir dizin olmalıdır. Burada farklı seçenekler elde edersiniz. Şu anda dizin veya modül alıyorum. Modülü deneyin. Bir şey kırılırsa her zaman geri alabilirsiniz (Ctrl + z yapmalıdır).
craned

Teşekkürler .. bok, ".idea" dizini veya "app" dizini mi demek istediniz? Az önce açıklayıcı bir Q yayınladım .. stackoverflow.com/questions/23786361/… Ahh .. Şimdi "app" klasörüne tıkladığımda "Yeniden düzenleme dizinini / modülünü" görüyorum .... hoy caramba!
Fattie

@JoeBlow packageklasörün altına sağ tıklayınjava
Abu Shumon

"Dürüst olmak gerekirse kullanmanız gereken" Android Studio "Sorunun 2010'da sorulduğunu aklınızda tutarak, AS 2013'e kadar bile açıklanmayacak olsa da, kararlı bir yapı olarak serbest bırakıldı (2014). Günümüzde kullanıcılar AS kullanıyor olmalıdır. :-)
LarsH

8

Tutulmadan:

  1. AndroidManifext.xml'deki paket adını ve Etkinlik adlarını ve .xml dosyalarında (özel görünüm adları vb.) Gösterildiği diğer herhangi bir yeri değiştirme

  2. Paket içe aktarma deyimini tüm kaynak dosyalarda güncelle

  3. Tüm klasörleri paket adıyla eşleşecek şekilde yeniden adlandırın. Klasör konumları:
    a. bin / sınıflar
    b. gen
    c. src

  4. Build.xml dosyasındaki proje adını güncelleyin (veya uygulamanızın adı değişmez)

  5. Bin / classes / com / example / myapp / dizinindeki tüm .class dosyalarını silin (bu adımı atlarsanız, derleme sırasında dosyalar yeniden yazılmaz ve dex "sınıf adı yolla eşleşmiyor" hatalarının işlenmesinde bir sürü sorun verir

  6. Gen / com / example / myapp / BuildConfig.java'yı silin (3.a adımındaki BuildConfig.class dosyasını silmenin neden dex'in bu yolu güncellemesine neden olmadığını bilmiyorum, ancak BuildConfig.java'yı silene kadar gen / com / oldapp_example / oldapp ve orada BuildConfig.class koyarak.Ben aynı yerden R.java neden bu sorunu yok bilmiyorum. BuildConfig.java önceden derleme ama R.java otomatik olarak oluşturulan şüpheli değil)

Yukarıdaki 6 adım, paket adımı değiştirmek ve başarılı bir * derleme almak için yaptığım adımlardır. Yolları güncellemek için dex komutları aracılığıyla veya belki de projenin kök dizinindeki classes.dex.d dosyasını düzenleyerek 5. ve 6. adımları işlemek için daha iyi bir yol olabilir. Ben dex aşina değilim ya da silme / düzenleme classes.dex.d ok eğer bu yüzden derleme reenerated olacağını bildiğim .class dosyaları silme yöntemi ile gitti. Daha sonra nelerin güncellenmesi gerektiğini görmek için classes.dex.d dosyasını kontrol ettim.

* Benim derleme dışında hiçbir hata veya uyarı kalmadı dex ve apkbuilder her ikisi de "Bulunan Hedef Dosya" devlet bu dosyanın ne olduğunu hakkında hiçbir özelliğe sahip. Bunun her derlemede görünüp görünmediğinden, paket adımı bozmadan önce orada olup olmadığından veya silme işlemimin bir sonucu olup olmadığından emin değilim ve bir adım eksik.


Yeniden adlandırmayı yaptığınız gibi çözdüm, ancak basitleştirerek: bin ve gen klasörlerini silin. Ayrıca gizli dosyayı .project değiştirinceye kadar yeniden adlandırılan projeyi Eclipse'de içe aktaramadım, <name> altında eski proje adı vardı
Jose_GD

6

Bu adımları takip et:-

  • Projeye sağ tıklayın.
  • Android araçlarına gidin.
  • Uygulama Paketini Yeniden Adlandır'ı tıklayın.
  • Uygulama paketinin adını değiştirin.

YAPILAN


1
Bu çalışır, ancak temel src klasörü paket adını da yeniden düzenlemelisiniz.
ashishduh

6

Android Studio 1.3'te bunu yapmanın en hızlı yolu :

  1. İçindeki paket adını değiştirin manifest
  2. Git Module Settings[F4]-> Flavorsiçine, Application Idyazma aynı ad.
  3. Bu adla yeni bir paket oluşturun: [right-click-> new-> package]
  4. Projenizin tüm java dosyalarını seçin ve devam edin [Right-click-> Refactor-> Move-> {Select package}-> Refactor]

PS Bu sırayı takip etmeyecek olursanız, tüm java dosyalarını yeni içe aktarma ve bir sürü derleme zamanı hatasıyla tek tek değiştirebilir, bu nedenle sipariş çok önemlidir.


1
Bu yöntemle R, yeniden düzenleme ile değişmeden kalır. Bu yüzden import com.app.myapp.R yeni paket adına DEĞİL DEĞİLDİR ve tek tek almak zorundasınız ...
OWADVL

@OWADVL, R, dosyaları yeni pakete taşıdığınızda otomatik olarak değişir, Android Studio, .java dosyalarını taşıdığınızda otomatik olarak yeniden oluşturma gerçekleştirir, bu şeyi her gün yaparım ve bu siparişi koruduğum sürece, .java dosyalarında hiçbir şeyi değiştirmem el ile
Movsar Bekaev

Ancak Eclipse'de, tüm kodun paketini değiştirmeden uygulama paketi kimliğini değiştirebiliriz. Sihirbaz, BuildConfig & R referanslarını sizin için yeniden adlandırır. Aynı şeyin AS'de mevcut olmadığına şaşırıyorum.
Tom

5

Paket adının değiştirilmesi eşek için bir acıdır. Farklı insanlar için farklı yöntemler çalışıyor gibi görünüyor. Çözümüm hızlı ve hatasız. Görünüşe göre temizleme veya sıfırlama tutulması gerekli değil.

  1. Paket adına sağ tıklayın ardından Refraktör> Yeniden Adlandır.
  2. Android araçları> Uygulama Paketini Yeniden Adlandır proje adına sağ tıklayın.
  3. Manifest'teki paket adlarını önceki adımlarla değiştirilmemiş olan manuel olarak ayarlayın.

3

Bernstein yöntemi vardır, Eclipse aracını kullanın, "Uygulama Paketini Yeniden Adlandır", bundan sonra bile biraz temizlik yapmanız gerekebilir. Ayrıca, bir projede değişiklik yaptığınızda Eclipse bazen bazı şeyleri kaybeder. "Projeyi Temizle" aracını kullanmanız gerekebilir ("Proje" menüsü altında.) Bu işe yaramazsa, Eclipse'i kapatıp yeniden başlatmanız gerekebilir. Voo-doo çözümleri, ama Eclipse bu şekilde olabilir.


3

En kolay çözüm "com.package.name" yerine "com.newpackage.name" yerine Regexxer kullanmak , sonra dizinleri düzgün yeniden adlandırmak için bulundu. Süper kolay, süper hızlı.


3
  1. Manifest dosyasındaki paket adını değiştirme
  2. Re-factor> Paketin adını srcklasörde yeniden adlandırın verename subpackages
  3. Yaptığın tek şey bu.

Marc Bernstein'ın Android Araçları-> Uygulama Paketini Yeniden Adlandır'ı kullanmayı denedim, ancak bana hata verdi. Değişiklikten sonra bazı şeyleri düzeltmek zorunda
kalmama

2

Eclipse olmayan kullanıcılar için başka bir çözüm daha var, AndroidManifest.xml'deki <manifest> etiketindeki paket özniteliğini, kullanılan eski paket adını yenisiyle değiştirerek değiştirmeniz yeterlidir. Not: Projenizdeki tüm ilgili içe aktarma ifadelerini ve ilgili klasörleri manuel olarak ayarlamanız gerekir.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="new.package.name"
    .....
</manifest>

1

Alternatif:

  1. AndroidManifest.xml dosyasını açın
  2. Manifest etiketinde paketi = "YENİ AD" değiştirin.

1
  1. Proje> Android Araçları> Uygulama Paketini Yeniden Adlandır'ı sağ tıklayın

  2. Src'ye gidin ve ana paketinize> Refactor> Yeniden Adlandır'a sağ tıklayın

  3. Manifest dosyasına gidin ve paket adınızı değiştirin.


1

Tüm çözümleri denerken birkaç saat kaybettim. Eminim, kodumda sorun var - apk başlıyor ama farklı sınıflar ve aktivitelerle çalışırken bazı hatalar.

Projemle çalışmanın tek yolu:

  1. yeniden adlandır - dosya / yeniden adlandır ve tüm onay kutularını işaretleyin
  2. yeniden adlandırılmamış yerleri kontrol edin, hala eski araçlardan birinde düzende eski ad vardı: context = "..
  3. yeni çalışma alanı yarat
  4. projeyi yeni çalışma alanına aktar

Benim için işe yarıyor, sadece çözüm.


1

Bu nedenle, Android (Studio) eklentisi ile IntelliJ kullanmak şöyleydi: En AndroidManifest.xmlüste gittim ve -> Refactor -> yeniden adlandır'ı sağ tıklatarak paket adını değiştirdim. O zamanlar paket adımız dört bölümden oluşuyordu a.b.c.d, sadece yenisi a.b.c. Bu yüzden ilk üçünü yeniden adlandırdım. Sonra oluşturulan kaynaklar ( app\build\generated\source\r\development\debug\a\b\c\d), sağ tıklatılan Rsınıf ve Refactor-> [d] bir paket daha taşımak için dizine gitti . İle aynı BuildConfigyer app\build\generated\source\buildConfig\development\debug\a\b\c\d.

Refactor-> Move'u kullanarak IntelliJ BuildConfigve ile ilgili tüm referansları günceller R.

Sonunda bulduğum gradle.build içinde bulduğum tüm applicationId [s] güncelledi. Projeyi Temizle, Yap ve Yeniden Oluştur'u vurdum. Uygulamayı telefonumdan sildi ve "Oynat" düğmesine basın. Her şey yolunda, böylece yeniden düzenleme kolay ve oldukça hızlıydı.


1

Android Studio 1.2.2 Say size değiştirmek isterseniz com.example.myappiçin org.mydomain.mynewapp ekranın altındaki çekimde görüntülenen dizinleri her adımları izleyebilirsiniz You. Herhangi bir değişiklik yapmadan önce önizleme yapabilmeniz için size önizleme seçeneği verecektir.

Git Refactor -> Renameve yeni ismini ver. Com, example ve myapp gibi her klasör için bunu yapmak zorunda. İçe aktarma işlemlerini otomatik olarak güncelleyecek, böylece endişelenmenize gerek kalmayacak. resim açıklamasını buraya girin

Ayrıca build.gradleotomatik olarak güncellenmeyen dosyayı da güncelleyin.

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

Bundan sonra bunu isteyecektir sync. O zaman her şey iyi olacak. Bundan sonra APK'mı google mağazasına yükleyebiliyorum. Mağazaya yüklemek için uygulamanızı imzaladığınızdan emin olun.


0
  1. Android stüdyosunda, proje panelinde dişli çark simgesi "Üzerine tıklayın" var.
  2. Kompakt Boş Orta Paketlerin işaretini kaldırın
  3. Şimdi paket dizini ayrı ayrı yani dizinler ayrılmış.
  4. Yeniden adlandırmak istediğiniz dizini seçin.
  5. Söz konusu dizine sağ tıklayın.
  6. Refactor'u seçin ve ardından seçeneği yeniden adlandırın.
  7. İletişim kutusu açıldı, yeniden adlandırın.
  8. Yeni ad girdikten sonra Refactor'a tıklayın.
  9. Ardından alttaki Refactor Yap'a tıklayın.
  10. Sonra android studio tüm değişiklikleri güncelleyecektir.
  11. Şimdi build.gradle dosyasını açın ve applicationId dosyasını güncelleyin ve senkronize edin.
  12. Şimdi manifest dosyasına gidin ve paketi yeniden adlandırın.
  13. Projenizi yeniden oluşturun.
  14. Bitirdiniz :)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.