2013-07-05 30 views
6

Tôi đã xuất bản ứng dụng có tên com.mycompany.mygame trên google play.Google play nói: "Bạn cần sử dụng tên gói khác" - tại sao?

Sau đó, tôi quyết định xuất bản một phiên bản quảng cáo miễn phí của nó. Tôi đã không thay đổi tên gói trong nhật thực bởi vì tôi nhận thấy rằng trong quá trình "xuất", bạn có cơ hội để có gói ứng dụng cuối cùng như bất cứ điều gì bạn muốn. Vì vậy, tôi đặt nó ở đó là com.mycompany.mygameaf - lưu ý thêm "af" ở cuối. Nhưng sau đó khi cố gắng để tải nó lên thị trường, google cho biết:

Bạn cần phải sử dụng một tên gói khác vì "com.mycompany.mygame" đã được sử dụng bởi một trong những ứng dụng khác của bạn

Vì vậy, bây giờ tôi đang bối rối. Đơn khiếu nại có phải là vì tôi không được phép có một gói ứng dụng là tên và phần mở rộng của ứng dụng trước đó không? Hay là apk cuối cùng bằng cách nào đó có kiến ​​thức về tên gốc là gì?

Cách dễ nhất để giải quyết vấn đề này là gì?

+0

có thể trùng lặp của [Tôi có cần thay đổi tên gói cho phiên bản miễn phí của ứng dụng của tôi không?] (Http://stackoverflow.com/questions/5195595/do-i-need-to-change- the-package-name-for-the-free-phiên bản của ứng dụng của tôi) –

Trả lời

3

Bất kể tên tệp .apk, tên gói của nội dung Ứng dụng bên trong nó phải là duy nhất.

Bạn có thể sử dụng cấu trúc lại đổi tên để thay đổi điều này, mặc dù chắc chắn rằng sự thay đổi thấm nhập vào trong file manifest, cấu hình Proguard vv

0

Tên gói trong biểu hiện được sử dụng để xác định các ứng dụng trong Android và trong Google Play. Vì vậy, các ứng dụng khác nhau cần các tên khác nhau.

Cách giải quyết dễ nhất có thể là chỉ cần tạo gói mới, không có mã trong đó và sử dụng nó làm tên gói của ứng dụng trong tệp kê khai.

Những gì tôi đã thực hiện để giải quyết vấn đề nhiều ứng dụng-từ-một-codebase của mình được đặt tất cả mã của ứng dụng trong dự án thư viện và sau đó tôi có một số dự án ứng dụng sử dụng thư viện đó. Các dự án ứng dụng không chứa mã, chỉ là tệp kê khai và tài nguyên tùy chỉnh.

0

Các tên tập tin của APK là không thích hợp, tên gói ứng dụng của bạn được sử dụng như một định danh duy nhất - đó là trong phần tử gốc trong AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.packagename" 
    android:versionCode="1" 
    android:versionName="1.0" > 

Khi bạn bước đầu tạo ra dự án của bạn trong Eclipse nó tạo ra một cấu trúc gói thực tế phù hợp với tên gói này để bạn đưa các tệp nguồn của bạn vào.

Bạn có thể thực sự chọn tên gói của mình bằng cách thay đổi giá trị này. nó không cần phải khớp với tên gói ứng dụng thực tế của bạn.

Ngoài ra, kích chuột phải vào dự án của bạn trong Eclipse, vào "Tools Android" và sau đó chọn "Đổi tên ứng dụng trọn gói"

Sau khi bạn làm điều này bạn sẽ có thể nộp nhị phân

0

của bạn Như đã đề cập trong câu trả lời khác, bạn đang phát triển sẽ đơn giản hơn nếu bạn đặt tất cả các mã chia sẻ và tài sản một dự án thư viện phổ biến đó là một sự phụ thuộc của các phiên bản trả tiền và miễn phí của bạn.

Bạn cũng có thể muốn chơi với hệ thống xây dựng Gradle mới (trong Android Studio) cho phép bạn đặt động các thứ như tên gói khi chạy.Nó cũng cho phép bạn chuyển đổi tài nguyên trong thời gian xây dựng, điều này cực kỳ tiện lợi; Bạn có thể có một boolean resource đại diện cho dù ứng dụng hiện tại là phiên bản trả tiền. Điều này cho phép bạn bật/tắt các tính năng ứng dụng dựa trên một kiểm tra cho giá trị đó.

1

Tên của APK không quan trọng, tên gói của nó trong tệp AndroidManifest đếm.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.yourcompany.yourapp" 

Chỉ có thể có một ứng dụng trên thị trường với tên gói đó để xuất bản phiên bản miễn phí quảng cáo của bạn, bạn phải thay đổi tên gói trong tệp kê khai, ví dụ: thêm af vào cuối tên gói trong tệp kê khai của bạn.

2

Ngoài việc sửa tên ứng dụng trong Tệp kê khai, tôi cũng phải thay đổi applicationId trong tệp gradle.build của ứng dụng.

defaultConfig { 
    applicationId "com.example.changednameofmyapp" 
    ... 
} 
Các vấn đề liên quan