2016-01-15 39 views
0

我在MyAppApplication.onCreate()方法設置斷點調用的onCreate。它受到1種產品風味的影響,但沒有其他風味。這是唯一不被擊中的斷點。我猜它是與的applicationID,但我不明白爲什麼,Android應用程序類不能與替代產品的風味

的build.gradle

productFlavors { 
    prod { //the flavor that works 
     applicationId 'com.my.app' 
     versionName "1.2.3" 
    } 
    staging { //the flavor that doesnt 
     applicationId 'com.my.app.staging' 
     versionName "1.2.3-staging" 
    } 
} 

的AndroidManifest.xml:

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

我試着將清單包替換爲$ {applicationId},但是這給了我一個錯誤。軟件包名稱不會隨着風格而改變,只會改變appliationId。根據我的理解,清單中的軟件包名稱無論如何都會在build時間內被gradle換出。

+0

如果你在gradle這個清單dones't工作組的applicationID,的applicationID – sanemars

+1

使用應用軟件Android:NAME =「MyAppApplication。」 –

+0

我不能完全肯定發生了什麼錯誤他們從昨天晚上開始工作。 – styler1972

回答

2

很難瑞普什麼地方出了錯你,我這裏還有一些指導如何使您的應用程序的多flavourable,所以我希望你能找到失蹤/錯一步按照它。

我創建了一個測試項目與包裝:klogi.com.flavourapp:

  1. 在應用程序的模塊,build.gradle地址:

    productFlavors { 
        production { 
         applicationId "klogi.com.flavourapp" 
        } 
    
        staging { 
         applicationId "klogi.com.flavourapp.staging" 
        } 
    } 
    
  2. 要顯示的風味效果,我會更改Toolbar中的應用名稱。要做到這一點,在FlavourApp\app\src目錄下創建目錄staging\res\valuesstrings.xml文件中:

    enter image description here

    然後從這個FlavourApp\app\src\staging\res\values\strings.xml值將覆蓋默認FlavourApp\app\src\main\res\values\strings.xml

  3. 最後一步是創建Application的擴展:

    public class MyApplication extends Application { 
    
        @Override 
        public void onCreate() { 
         super.onCreate(); 
         Toast.makeText(getApplicationContext(), "Hi " + BuildConfig.FLAVOR, Toast.LENGTH_LONG).show(); 
        } 
    } 
    

    AndroidManifest.xml它分配:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
        package="klogi.com.flavourapp"> 
        <application 
         android:name=".MyApplication" 
         android:icon="@mipmap/ic_launcher" 
         android:label="@string/app_name" 
         android:theme="@style/AppTheme"> 
         <activity android:name=".MainActivity"> 
          <intent-filter> 
           <action android:name="android.intent.action.MAIN" /> 
           <category android:name="android.intent.category.LAUNCHER" /> 
          </intent-filter> 
         </activity> 
        </application> 
    </manifest> 
    

    我查了一下,有android:name="klogi.com.flavourapp.MyApplication"android:name=".MyApplication"沒有什麼區別,但我仍然認爲第二個更好。

這裏的結果:

enter image description hereenter image description here

而且測試項目,你可以找到:here;

我希望,它有助於

+0

偉大的答案感謝屏幕 – styler1972

相關問題