2016-09-17 9 views
9

私はfreeとpro(バージョン)の2種類のフレーバーで1つのプロジェクトを作成しようとしています。フレーバー間で異なるパッケージ名を使用するにはどうすればよいですか?

マイアプリは異なるパッケージ(例:com.example.appfreeとcom.example.app)とPlayStoreにすでに存在する。これは私のbuild.gradleある

defaultConfig { 
    applicationId "com.example.appfree" 
} 
productFlavors{ 
    lite { 
     applicationIdSuffix 'lite' 
    } 

    pro { 

    } 
} 

そして、これは私ですマニフェストファイル:

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

     <activity 
      android:name=".SplashScreenActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".MainActivity"/> 

    </application> 

</manifest> 

無料のプロフェッショナル用にビルドAPKをアップロードしようとしました。プロの味は大丈夫ですが、パッケージが正しくないため、Googleでは無料の味を受け入れません。これをどうすれば解決できますか?

======解決:====== applicationIdSuffixだけbuildTypesで動作します。新しいAndroidのGradleのビルドシステムで

+4

から私は 'applicationIdSuffix'は味のために働いていることを認識していませんでした。フレーバーに使用したいアプリケーションIDを正確に記入するには、 'applicationId'を使います。 – CommonsWare

+0

@CommonsWare、すばらしい答え! applicationIdSuffixはbuildTypesでのみ動作します!私はapplicationIdを使用して、それは完全に動作します! :) –

答えて

9

、簡単にあなたのアプリの複数の異なるバージョンを構築することができます。たとえば、アプリの「無料」バージョンと「プロ」バージョンの両方を作成することができます(フレーバーを使用)。これらのパッケージはGoogle Playストアに別々にインストールする必要があります。同じ時間、など。同様に、(ビルドタイプを使用して)アプリの「デバッグ」版と「アルファ版」と「ベータ版」の両方をビルドすることもでき、同様にユニークなパッケージ名にも貢献できます。

アプリ/ build.gradle:

apply plugin: 'com.android.application' 
android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1" 
    defaultConfig { 
     applicationId "com.example.my.app" 
     minSdkVersion 15 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
    } 
... 

アプリ/ build.gradle:

productFlavors { 
    pro { 
     applicationId = "com.example.my.pkg.pro" 
    } 
    free { 
     applicationId = "com.example.my.pkg.free" 
    } 
} 

buildTypes { 
    debug { 
     applicationIdSuffix ".debug" 
    } 
} 
.... 

Android Studio Project Site - ApplicationId versus PackageName

+0

あなたは私の質問に答えなかった:私は無料でプロの味のためのビルドAPKをアップロードしようとしました。プロの味は大丈夫ですが、パッケージが正しくないため、Googleでは無料の味を受け入れません。これをどうすれば解決できますか? –

+1

彼はどのようにそれを行うには、あなたのアプリケーションの適切なパッケージ名をフレーバー定義で使用する必要があることを示した。 – nasch

関連する問題