13

Google Play で com.mycompany.mygame というアプリを既に公開しています。

その後、広告なしのバージョンを公開することにしました。「エクスポート」プロセスで、最終的なapkを好きなものに設定する機会があることに気付いたので、Eclipseでパッケージ名を変更しませんでした。そこで、com.mycompany.mygameaf として設定しました。最後に「af」が追加されていることに注意してください。しかし、それを市場にアップロードしようとすると、Google は次のように言いました。

「com.mycompany.mygame」は他のアプリケーションの 1 つによって既に使用されているため、別のパッケージ名を使用する必要があります。

だから今、私は混乱しています。以前のアプリの名前と拡張子である apk を持つことが許可されていないため、苦情ですか? または、最終的な apk は、元の名前が何であったかを何らかの形で知っていますか?

これを解決する最も簡単な方法は何ですか?

4

6 に答える 6

15

applicationIdマニフェストでアプリ名を修正する以外に、アプリの gradle.build ファイルも変更する必要がありました。

 defaultConfig {
    applicationId "com.example.changednameofmyapp"
    ...
}

また、ProGuard を使用している場合は、 proguard-rules.proで適切なルールを変更することを忘れないでください。

プロジェクト全体で古いパッケージ名を検索して変更するだけです。

于 2017-06-14T13:00:38.053 に答える
1

APK の名前は関係ありません。重要なのは AndroidManifest ファイル内のパッケージ名です。

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

そのパッケージ名を持つアプリは市場に 1 つしか存在しないため、広告なしのバージョンを公開するには、マニフェスト ファイルのパッケージ名を変更する必要があります。たとえば、マニフェスト内のパッケージ名の末尾に af を追加します。

于 2013-07-05T16:24:03.373 に答える
1

.apk ファイルの名前に関係なく、その中のアプリケーション コンテンツのパッケージ名は一意である必要があります。

refactor-rename を使用してこれを変更できますが、変更がマニフェスト ファイル、proguard 構成などに浸透していることを確認してください。

于 2013-07-05T15:49:37.393 に答える
0

APK のファイル名は関係ありません。アプリのパッケージ名が一意の識別子として使用されます。これは、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" >

Eclipse で最初にプロジェクトを作成すると、このパッケージ名と一致する実際のパッケージ構造が作成され、ソース ファイルを配置できます。

このマニフェスト値を変更することで、実際にパッケージ名を変更できます。フォルダー/パッケージ構造をそのまま維持できます。実際のアプリケーション パッケージ名と一致させる必要はありません。

または、Eclipse でプロジェクトを右クリックし、[Android Tools] に移動して、[Rename Application Package] を選択します。

これを行った後、バイナリを送信できるはずです

于 2013-07-05T16:05:37.347 に答える
0

他の回答で述べたように、すべての共有コードとアセットを有料バージョンと無料バージョンの依存関係である共通ライブラリ プロジェクトに配置すると、開発がより簡単になります。

また、実行時にパッケージ名などを動的に設定できる新しい Gradle ビルド システム (Android Studio 内) を試してみることもできます。また、ビルド時にリソースを切り替えることもできます。これは非常に便利です。現在のアプリが有料版かどうかを表すブール値のリソースを持つことができます。これにより、その値へのチェックに基づいてアプリの機能を有効/無効にすることができます。

于 2013-07-05T16:06:56.600 に答える
0

マニフェスト内のパッケージ名は、Android 内および Google Play 内でアプリケーションを識別するために使用されます。したがって、異なるアプリには異なる名前が必要です。

最も簡単な回避策は、コードを含まない新しいパッケージを作成し、それをマニフェストでアプリのパッケージ名として使用することです。

1 つのコードベースから多数のアプリを作成する問題を解決するために私が行ったことは、すべてのアプリのコードをライブラリ プロジェクトに配置し、そのライブラリを使用するいくつかのアプリ プロジェクトを作成することです。アプリ プロジェクトにはコードは含まれず、マニフェストとカスタム リソースのみが含まれます。

于 2013-07-05T15:50:02.053 に答える