Cách thay đổi tên gói của Ứng dụng Android


133

Kho khóa của tôi bị hỏng, do đó, Android Market đang yêu cầu tôi đổi tên ứng dụng và gửi lại. Tuy nhiên, bất cứ khi nào tôi đi chỉnh sửa tên gói trong Manifest và trong toàn bộ tệp, nó sẽ cho tôi rất nhiều lỗi.

Cách thích hợp để thay đổi tên ứng dụng là gì?


3
rất may họ đã thêm một "nút tên thay đổi kỳ diệu" từ năm 2010 - xem câu trả lời của @Marc Bernstein - stackoverflow.com/a/4025633/383414
Richard Le Mesurier

cảm ơn Richard Le ...
DoruChidean

3
Bản sao có thể có của Gói đổi tên Android Studio
Bo Persson

khó có thể trở thành một bản sao khi điều này được hỏi 3 năm trước ...
Ryan Ternier

Câu trả lời:


102

Nếu bạn đang sử dụng Eclipse, bạn có thể thử các hướng dẫn này từ trang web dành cho nhà phát triển của Android. Chúng đặc biệt dành cho mẫu GestureBuilder nhưng nên áp dụng cho bất kỳ ứng dụng nào theo như tôi có thể nói:

[H] đây là cách bạn có thể làm điều này trong Eclipse:

  1. Nhấp chuột phải vào tên gói ( src/com.android.gesture.builder).
  2. Chọn Refactor> Đổi tên và thay đổi tên, ví dụ thành com.android.gestureNEW.builder.
  3. Mở tệp kê khai. Trong <manifest>thẻ, thay đổi tên gói thành com.android.gestureNEW.builder.
  4. Mở từng trong hai tệp Hoạt động và thực hiện Ctrl-Shift-O để thêm các gói nhập bị thiếu, sau đó lưu từng tệp. Chạy ứng dụng GestureBuilder trên trình giả lập.

Ngoài ra, hãy chắc chắn rằng bạn nhớ đổi tên gói cùng với các tham chiếu đến nó trong các tệp. Trong Eclipse, bạn có thể thấy tên của gói trong cửa sổ thám hiểm tệp / khung nhìn cây ở phía bên trái. Theo kinh nghiệm của tôi, Eclipse đôi khi có thể hơi khó hiểu và không đáng tin cậy với điều này (ví dụ, để lại các tham chiếu đi lạc cho tên gói cũ).


Đây có lẽ là cách tốt nhất để làm điều đó, không có phép thuật, thay đổi nút tên gói.
đồ bịt mắt

13
Có, có. Xem câu trả lời của @Marc Bernstein.
Đánh dấu Phillip

Tôi không nghĩ người hỏi ban đầu cũng cần thay đổi tên gói Java. Marc's nên là câu trả lời được chấp nhận.
mpellegr

Bước đầu tiên không phải là "nhấp chuột phải vào", nên chọn "Refactor" trong menu.
De Khánh

Và bạn có thể cần phải thay đổi app_nametrong res-> giá trị => strings.xml
Đức Thanh

302

Có một cách để thay đổi tên gói dễ dàng trong Eclipse. Nhấp chuột phải vào dự án của bạn, cuộn xuống Công cụ Android và sau đó nhấp vào Đổi tên gói ứng dụng.


2
Chỉ cần thử Eldar và nó đã hoạt động - nhưng tôi chắc chắn điều này cũng sẽ hoạt động.
Allen Gingrich

4
Đây là câu trả lời đúng, nhưng ADT hiện tại đã bị hỏng và nó BẮT ĐẦU mọi tham chiếu đến lớp R của bạn. Vì vậy, bạn phải nhấp vào từng tệp riêng lẻ, thực hiện "ctrl-shift-o" (hoặc cmd-shift-o trên Mac) và chọn R có tên gói mới của bạn (KHÔNG chọn android.R! Mọi thứ sẽ phá vỡ khủng khiếp ), sau đó nhấn lưu. ... và lặp lại cho MỌI tệp cá nhân :(
Adam

@Adam chỉ để làm cho cuộc sống của chúng ta dễ dàng hơn, nhấp vào dự án và sử dụng ctrl + shift + o, nó sẽ cập nhật tham chiếu đã nhập trong TẤT CẢ lớp / tệp: D
Blaze Tama

điều này chỉ cứu mạng tôi kể từ khi tôi mất kho khóa lố bịch của mình và phải xuất bản lại ứng dụng của mình.
Teoman shipahi

3
Tôi tìm thấy tên gói tệp được khai báo ở đầu mỗi tệp để không khớp với gói mới, cũng không phải thư mục chúng đang ở. Bạn có thể nhấp chuột phải vào thư mục nguồn vẫn có tên gói cũ (ít nhất là của tôi luôn luôn như vậy), chọn 'refactor' rồi 'đổi tên' và đổi tên nó thành gói mới. Nhật thực sau đó sẽ đổi tên thư mục và khai báo gói của mỗi tệp thành tên gói mới, giống như nó đã được thực hiện ở vị trí đầu tiên.
Androidcoder

52

Đây là cách bạn có thể làm điều này trong Eclipse:

  1. Nhấp chuột phải vào tên gói ( src/com.android.gesture.builder).
  2. Chọn Refactor > Renamevà thay đổi tên, ví dụ như com.android.gestureNEW.builder.
  3. Mở tệp kê khai. Trong <manifest>thẻ, thay đổi tên gói thành com.android.gestureNEW.builder.
  4. Mở từng Activitytệp trong hai tệp và thực hiện Ctrl+ Shift+ Ođể thêm các gói nhập bị thiếu, sau đó lưu từng tệp.
  5. Chạy GestureBuilderứng dụng trên trình giả lập.

Liên kết đến bài viết

Cập nhật cách siêu dễ dàng nhấp chuột phải vào dự án của bạn ... nhập mô tả hình ảnh ở đây


2
Cách khá tuyệt vời để làm điều này!
Dude

2
Các giải pháp dễ dàng hơn. Điều này đáng lẽ phải được chấp nhận;)
Nomade

12

Trong Android Studio , khá trung thực, bạn nên sử dụng, thay đổi tên right-clickinggói theo tên gói trongproject structure -> Refactor -> Rename...

Sau đó, nó cung cấp tùy chọn đổi tên thư mục hoặc gói. Chọn gói. Các thư mục nên làm theo phù hợp. Nhập tên gói mới của bạn và nhấp vào Refactor. Nó sẽ thay đổi tất cả các nhập khẩu và loại bỏ nhập khẩu dư thừa cho bạn. Bạn thậm chí có thể sửa nó cho bạn trong các bình luận và chuỗi, v.v.

Cuối cùng , thay đổi tên gói phù hợp trong AndroidManifest.xml của bạn về phía trên. Nếu không, bạn sẽ nhận được lỗi ở khắp mọi nơi phàn nàn về R. dù sao đi nữa.

Một giải pháp rất hữu ích khác

Đầu tiên tạo một gói mới với by right clicking on thethư mục java tên mong muốn -> mới -> gói.`

Sau đó, chọn và kéo tất cả các lớp của bạn vào gói mới. AndroidStudio sẽ tính lại tên gói ở mọi nơi.

Sau đó: trong ứng dụng của bạn build.gradlethêm / chỉnh sửa ứng dụng với ứng dụng mới. tức là ( com.a.bctrong trường hợp của tôi):

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

Bài viết gốc và nhiều bình luận ở đây


Thật kỳ lạ, khi tôi làm điều đó, nó không đưa ra thư mục / gói lựa chọn ... chỉ có "tên mô-đun" ...
Fattie

1
Nó cũng làm như vậy với tôi ngay bây giờ nếu tôi nhấp chuột phải vào thư mục gốc. Ít nhất với tôi, đó không phải là tên gói thực tế của tôi. Nếu tên gói của bạn là com.a.bc, cần có một thư mục bên dưới thư mục gốc có tên bc. Đó là nơi bạn sẽ có được các tùy chọn khác nhau. Ngay bây giờ, tôi đang nhận được thư mục hoặc mô-đun. Hãy thử mô-đun. Bạn luôn có thể hoàn tác nó (Ctrl + z nên làm điều đó) nếu nó phá vỡ mọi thứ.
vươn

Cảm ơn .. shit, bạn có nghĩa là thư mục ".idea" hoặc thư mục "ứng dụng"? Tôi vừa mới đăng một giải thích Q .. stackoverflow.com/questions/23786361/... Ahh .. bây giờ tôi thấy "Chọn refactoring thư mục / mô-đun" khi tôi bấm vào "ứng dụng" của tôi thư mục .... hoy Caramba!
Fattie

@JoeBlow nhấp chuột phải vào packagethư mụcjava
Abu Shumon

"Android Studio, khá trung thực, bạn nên sử dụng" Hãy nhớ rằng câu hỏi đã được hỏi vào năm 2010, trong khi AS thậm chí không được công bố cho đến năm 2013, chứ chưa nói đến việc phát hành dưới dạng bản dựng ổn định (2014). Cấp, người dùng hiện nay nên sử dụng AS. :-)
LarsH

8

Không có Eclipse:

  1. Thay đổi tên gói và tên Hoạt động trong AndroidManifext.xml và bất kỳ nơi nào khác, nó hiển thị trong các tệp .xml (tên xem tùy chỉnh, v.v.)

  2. Cập nhật câu lệnh nhập gói trên tất cả các tệp nguồn

  3. Đổi tên tất cả các thư mục để phù hợp với tên gói. Vị trí thư mục:
    a. thùng / lớp
    b. gen
    c. src

  4. Cập nhật tên dự án trong build.xml (hoặc tên apk của bạn sẽ không thay đổi)

  5. Xóa tất cả các tệp. Class trong bin / class / com / example / myapp / (nếu bạn bỏ qua bước này, các tệp không được viết lại trong quá trình xây dựng và dex đưa ra một loạt các lỗi xử lý lỗi "tên lớp không khớp với đường dẫn"

  6. Xóa gen / com / example / myapp / BuildConfig.java (Tôi không biết tại sao xóa BuildConfig. Class trong bước 3a không khiến dex cập nhật đường dẫn này, nhưng cho đến khi tôi xóa BuildConfig.java, nó vẫn tiếp tục tạo lại gen / com / oldapp_example / oldapp và đưa BuildConfig. class vào đó. Tôi không biết tại sao R.java từ cùng một vị trí không gặp phải vấn đề này. Tôi nghi ngờ BuildConfig.java được tạo tự động trong quá trình biên dịch trước nhưng R.java không phải)

6 bước trên là những gì tôi đã làm để thay đổi tên gói của mình và xây dựng thành công *. Có thể có một cách tốt hơn để xử lý các bước 5 và 6 thông qua các lệnh dex để cập nhật đường dẫn hoặc có thể bằng cách chỉnh sửa class.dex.d trong thư mục gốc của dự án. Tôi không quen thuộc với dex hoặc nếu bạn có thể xóa / chỉnh sửa class.dex.d thì tôi đã sử dụng phương pháp xóa các tệp. Class mà tôi biết sẽ được tạo lại trong bản dựng. Sau đó tôi đã kiểm tra class.dex.d để xem những gì vẫn cần được cập nhật.

* Không có lỗi hoặc cảnh báo nào trong bản dựng EXCEPT dex và apkbuilder của tôi cả hai trạng thái "Đã tìm thấy tệp mục tiêu đã xóa" mà không có thông tin cụ thể về tệp đó là gì. Không chắc chắn nếu điều này xuất hiện trong mọi bản dựng, nếu nó ở đó trước khi tôi nhầm với tên gói của mình, hoặc nếu đó là kết quả của việc xóa của tôi và tôi đang thiếu một bước.


Tôi đã giải quyết việc đổi tên như bạn đã làm, nhưng với một sự đơn giản hóa: xóa các thư mục bin và gen. Ngoài ra, tôi không thể nhập dự án đã đổi tên trong Eclipse cho đến khi tôi sửa đổi tệp ẩn .project, nó có tên dự án cũ dưới <name>
Jose_GD

6

Thực hiện theo các bước sau: -

  • Nhấp chuột phải vào dự án.
  • Chuyển đến các công cụ Android.
  • Nhấp vào Đổi tên gói ứng dụng.
  • Thay đổi tên gói ứng dụng.

LÀM XONG


1
Điều này hoạt động, nhưng bạn cũng nên cấu trúc lại tên gói thư mục src cơ sở.
ashishduh

6

Cách nhanh nhất để làm điều đó trong Android Studio 1.3 :

  1. Thay đổi tên gói trong manifest
  2. Đi đến Module Settings[F4]-> Flavors, Application Idviết cùng tên.
  3. Tạo gói mới với tên đó: [right-click-> new-> package]
  4. Chọn tất cả các tệp java của dự án của bạn và sau đó tiến hành [Right-click-> Refactor-> Move-> {Select package}-> Refactor]

PS Nếu bạn không tuân theo thứ tự này, cuối cùng bạn có thể thay đổi tất cả các tệp java bằng cách nhập mới và một loạt các lỗi thời gian biên dịch, vì vậy thứ tự là rất quan trọng.


1
Với phương pháp này, R vẫn không thay đổi bởi quá trình tái cấu trúc. vì vậy hãy nhập com.app.myapp.R KHÔNG đổi sang tên gói mới và bạn phải lấy từng cái một ...
OWADVL

@OWADVL, R tự động thay đổi khi bạn di chuyển tệp sang gói mới, Android Studio tự động thực hiện việc xây dựng lại khi bạn di chuyển tệp .java, tôi làm việc này mỗi ngày và miễn là tôi giữ thứ tự này, tôi không bao giờ thay đổi bất cứ điều gì trong tệp .java thủ công
Movsar Bekaev

Nhưng trong Eclipse, chúng ta có thể thay đổi ID gói ứng dụng mà không thay đổi gói của tất cả mã. Trình hướng dẫn sẽ đổi tên các tham chiếu BuildConfig & R cho bạn. Tôi hoang mang rằng điều tương tự không tồn tại ở AS.
Tom

5

Thay đổi tên gói là một nỗi đau trong ass. Có vẻ như các phương pháp khác nhau làm việc cho những người khác nhau. Giải pháp của tôi là nhanh chóng và không có lỗi. Có vẻ như không cần làm sạch hoặc đặt lại nhật thực.

  1. Nhấp chuột phải vào tên gói sau đó Refractor> Đổi tên.
  2. Nhấp chuột phải vào tên dự án Công cụ Android> Đổi tên Gói ứng dụng.
  3. Đặt thủ công tên gói trong Bản kê khai chưa được thay đổi bởi các bước trước.

3

Bernstein có phương pháp, sử dụng công cụ Eclipse, "Đổi tên gói ứng dụng", bạn có thể phải thực hiện một số thao tác dọn dẹp ngay cả sau khi thực tế. Ngoài ra, Eclipse đôi khi mất dấu vết của mọi thứ khi bạn thay đổi dự án. Bạn có thể phải sử dụng công cụ "Dự án sạch" (trong menu "Dự án".) Nếu điều đó không hoạt động, bạn có thể phải đóng và khởi động lại Eclipse. Các giải pháp Voo-doo, nhưng Eclipse có thể là như vậy.


3

Tôi thấy giải pháp đơn giản nhất là sử dụng Regexxer để thay thế "com.package.name" bằng "com.newpackage.name", sau đó đổi tên các thư mục đúng cách. Siêu dễ, siêu nhanh.


3
  1. Nắm tay thay đổi tên gói trong tệp kê khai
  2. Hệ số lại> Đổi tên tên của gói trong srcthư mục và đánh dấu vàorename subpackages
  3. Đó là tất cả những gì bạn đã làm.

Tôi đã thử sử dụng Công cụ Android của Marc Bernstein-> Đổi tên gói ứng dụng, nhưng nó đã gây ra lỗi cho tôi. Điều này đơn giản hơn, mặc dù tôi đã phải sửa một số thứ sau khi thay đổi
david-hoze

2

Ngoài ra còn có một giải pháp khác cho người dùng không có Eclipse, chỉ cần thay đổi thuộc tính gói trong thẻ <manifest> trong AndroidManifest.xml, bằng cách thay thế tên gói cũ được sử dụng bằng tên mới. Lưu ý: Bạn cũng phải điều chỉnh tất cả các câu lệnh nhập có liên quan và các thư mục liên quan theo cách thủ công trong dự án của bạn.

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

1

Thay thế:

  1. Mở AndroidManifest.xml
  2. Thay đổi gói = "TÊN MỚI" trong thẻ kê khai.

1
  1. Nhấp chuột phải vào Project> Công cụ Android> Đổi tên gói ứng dụng

  2. Truy cập src và nhấp chuột phải vào gói chính của bạn> Refactor> Đổi tên

  3. Đi đến tệp kê khai và thay đổi tên gói của bạn.


1

Tôi chỉ mất vài giờ để thử tất cả các giải pháp. Tôi chắc chắn, vấn đề nằm ở mã của tôi - apk bắt đầu nhưng một số lỗi khi làm việc với các lớp và hoạt động khác nhau.

Cách duy nhất để làm việc với dự án của tôi:

  1. đổi tên nó - tập tin / đổi tên và kiểm tra tất cả các hộp kiểm
  2. kiểm tra các vị trí không được đổi tên, tôi có một trong những bố cục tên cũ vẫn còn trong công cụ: bối cảnh = "..
  3. tạo không gian làm việc mới
  4. nhập dự án vào không gian làm việc mới

Đối với tôi nó hoạt động, chỉ có giải pháp.


1

Vì vậy, sử dụng plugin IntelliJ với Android (Studio) là: Tôi đã đi đến AndroidManifest.xmlđầu trang và thay đổi tên gói bằng cách nhấp chuột phải -> Refactor -> đổi tên. Tên gói sau đó của chúng tôi có bốn phần a.b.c.d, chỉ một phần mới a.b.c. Vì vậy, tôi đã đổi tên ba. Sau đó, tôi đã đi đến thư mục của các nguồn được tạo ( app\build\generated\source\r\development\debug\a\b\c\d), Rlớp nhấp chuột phải và Refactor-> Di chuyển [d] nó sang một gói cao hơn. Tương tự với BuildConfigtrong app\build\generated\source\buildConfig\development\debug\a\b\c\d.

Bằng cách sử dụng Refactor-> Move, IntelliJ cập nhật tất cả các tham chiếu đến BuildConfigR.

Cuối cùng tôi đã cập nhật tất cả applicationId [s] tôi tìm thấy trong gradle.build tôi tìm thấy. Tôi nhấn Clean Project, Make and Rebuild Project. Đã xóa ứng dụng khỏi điện thoại của tôi và nhấn "Play". Tất cả đều hiệu quả nên việc tái cấu trúc rất dễ dàng và khá nhanh.


1

Trong Android Studio 1.2.2 Nói nếu bạn muốn thay đổi com.example.myappthành org.mydomain.mynewapp Bạn có thể làm theo các bước trong từng thư mục như được hiển thị trong ảnh chụp màn hình bên dưới. Nó sẽ cung cấp cho bạn tùy chọn xem trước để bạn có thể xem trước khi thực hiện bất kỳ thay đổi nào.

Đi đến Refactor -> Renamevà đặt tên mới của bạn. Bạn phải làm điều đó cho mỗi thư mục, ví dụ như com, ví dụ và myapp. Nó sẽ tự động cập nhật các mục nhập để bạn không phải lo lắng về nó. nhập mô tả hình ảnh ở đây

Cũng cập nhật các tập tin build.gradlekhông được cập nhật tự động.

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

Sau đó nó sẽ yêu cầu synclàm điều đó. Rồi mọi chuyện sẽ ổn thôi. Tôi có thể tải APK của mình lên google store sau đó. Hãy chắc chắn rằng bạn đã ký ứng dụng của mình để tải nó lên cửa hàng.


0
  1. Trong studio Android của bạn, tại bảng điều khiển dự án, có biểu tượng bánh răng "Nhấp vào nó".
  2. Bỏ chọn gói nhỏ gọn giữa
  3. Bây giờ thư mục gói đã bị phá vỡ tức là thư mục cá nhân.
  4. Chọn thư mục bạn muốn đổi tên.
  5. Nhấp chuột phải vào thư mục cụ thể đó.
  6. Chọn refactor và sau đó đổi tên tùy chọn.
  7. Hộp thoại đã được mở, đổi tên nó.
  8. Sau khi đặt tên mới, nhấp vào Refactor.
  9. Sau đó bấm vào Do Refactor ở phía dưới.
  10. Sau đó, studio android sẽ cập nhật tất cả các thay đổi.
  11. Bây giờ hãy mở tệp build.gradle và cập nhật applicationId & đồng bộ hóa nó.
  12. Bây giờ đi đến tệp kê khai và đổi tên gói.
  13. Xây dựng lại dự án của bạn.
  14. Bạn xong việc rồi :)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.