回答:
この情報に基づいて:
ライブラリプロジェクトのApplicationId
applicationIdを使用して、ライブラリプロジェクトのパッケージをカスタマイズすることはできません。パッケージ名は、ライブラリプロジェクトで修正する必要があります(マニフェストでpackageNameとして指定する必要があります)。Gradleプラグインは、以前はこの制限を強制していませんでした。
ライブラリのbuild.gradle
ファイルからapplicationId変数を削除すると、問題が解決するはずです。
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'
}
}
それが誰かを助ける場合に備えて:
EclipseプロジェクトをAndroid Studioにインポートすると、エラーが発生しました::
「エラー:アプリケーションとテストアプリケーションのIDを同じにすることはできません」
奇妙ですが、私はbuild.gradleを調べて、2つのプレースホルダーを見つけました。1つはアプリケーション用で、もう1つはtestapplication用です。
この投稿で提案されているように、そこからtestApplicationIdを削除しました。これは問題の解決に役立ちました。
注:この説明は、この質問に投稿されたエラーとは関係ありませんが、同様のエラーが発生しているユーザーに役立つ場合があります。
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"
}
}