Android Studio 1.0とエラー「ライブラリプロジェクトはapplicationIdを設定できません」


109

Android Studioを1.0に更新した後、次のエラーが表示されます。

エラー:ライブラリプロジェクトはapplicationIdを設定できません。 デフォルトの設定では、applicationIdは「com.super.app」に設定されています。

Gradleプラグインを提案どおりに更新しましたが、これを修正する方法がわかりませんでした。

回答:


208

この情報に基づいて:

ライブラリプロジェクトのApplicationId

applicationIdを使用して、ライブラリプロジェクトのパッケージをカスタマイズすることはできません。パッケージ名は、ライブラリプロジェクトで修正する必要があります(マニフェストでpackageNameとして指定する必要があります)。Gradleプラグインは、以前はこの制限を強制していませんでした。

ライブラリのbuild.gradleファイルからapplicationId変数を削除すると、問題が解決するはずです。


ありがとう、あなたは私を正しい方向に導きます。私が持っている「味」の問題を説明する回答を追加しました。
セラフィム

1
@ジョエル:モジュールをライブラリに変換しましたが、削除するApplicationIdが見つかりません。build.gradleファイルでApplicationIdがdrではありません。Androidスタジオ1.0.1のどこにあるのか教えてください
kumar

このリンクで質問に答えることができますが、回答の重要な部分をここに含め、参照用のリンクを提供することをお勧めします。リンクされたページが変更されると、リンクのみの回答が無効になる可能性があります
Nerdroid

62

Joelの正解に感謝し.gradleます。ファイルから1行だけ削除する必要があります。

defaultConfig {
        applicationId "com.super.app"   <---- remove this line
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

なる

defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

そして私のAndroidManifest.xml

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.super.app">
...

アプリのパッケージ名を変更する必要がない場合は、これが適切なソリューションです。名前を変更するには、「フレーバー」を使用する必要があります。

android {
   ...
   productFlavors {
       flavor1 {
           applicationId 'com.super.superapp'
       }
   }

あなたがジョエルが持っているべき例を含めたので、あまりに悪い2つの答えをチェックすることはできません。
Androidcoderの

1
applicationID行を削除した場合、そのPlayストアに公開できますか?(更新を意味します)google playのアプリケーションIDがないためです。
gurkanスタック

1
@gurkanstack Gradleファイルの行を削除すると、AndroidManifest.xml "package"で定義された名前空間が公開に使用されます。
セラフィムの

1

それが誰かを助ける場合に備えて:

EclipseプロジェクトをAndroid Studioにインポートすると、エラーが発生しました::

「エラー:アプリケーションとテストアプリケーションのIDを同じにすることはできません」

奇妙ですが、私はbuild.gradleを調べて、2つのプレースホルダーを見つけました。1つはアプリケーション用で、もう1つはtestapplication用です。

この投稿で提案されているように、そこからtestApplicationIdを削除しました。これは問題の解決に役立ちました。

注:この説明は、この質問に投稿されたエラーとは関係ありませんが、同様のエラーが発生しているユーザーに役立つ場合があります。


0

libにapplicationIdを定義することはできません。ただし、ビルドファイルで識別子を使用する場合は、ライブラリパッケージ名がわかるため、モジュールの変数を定義し、必要に応じてその値を使用できます。

例:ライブラリのbuild.gradle

apply plugin: 'com.android.library'

def libraryGroupId = 'com.google.example'
def libraryArtifactId = project.getName()
def libraryVersion = '1.1'

また、lib内のビルドファイル自体で、必要に応じて以下の値を使用できます。

android {
compileSdkVersion 28

defaultConfig {
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "$libraryVersion"
    resValue "string", "Library", libraryGroupId"
 }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.