2014-12-09 69 views
0

我已經在模塊的的build.gradle以下產品口味(科爾多瓦/ PhoneGap的)的Android閃屏構建

productFlavors { 
    pro { 
     applicationId "com.icounttimer.android" 
    } 
    free { 
     applicationId "com.icounttimer.android.free" 
    } 
} 

我的應用程序模塊的封裝結構是:

src/main/java/com/icounttimer/android/MainActivity.java 

Building pro-debug.apk正確顯示splashscreen。但是,free-debug.apk不顯示啓動畫面。

將'free'flavor的applicationId改爲'com.icounttimer.android'解決了這個問題。但是,當使用不同的applicationId時,啓動畫面將不會顯示。

環境:

  • CordovaLib:v3.6.3

  • 的Android工作室1.0 RC4

,這是什麼行爲,以及如何解決這個問題的原因是什麼?

回答

2

,我找到了原因如下:

更改通過的build.gradle的applicationID,改變了應用程序的軟件包名稱。

請注意,它與應用程序的包裝結構不同,它在不同的構建變體中保持不變。

該應用程序包的結構,在這種情況下,不改變:SRC /主/ JAVA/COM/icounttimer /機器人/ MainActivity.java

潛水通過代碼,我發現了showSplashScreen()的方法CordovaActivity.java(CordovaLib的一部分)得到的資源如下:用於則getIdentifier

this.splashscreen = getResources().getIdentifier(splash, "drawable", getClass().getPackage().getName()); 

的第三個參數(...)方法是應用的應用包名稱。

getClass().getPackage().getName() 

獲取基於封裝結構的PKGNAME它總是返回「com.icounttimer.android」不管它是構建變種。

爲了解決這個問題,有兩個替代其出現次數在CordovaActivity.java:

this.getPackageName() //returns the name of the application pkg which is the applicationId 
+0

謝謝你的很好的解釋。快樂的編碼! – 2015-02-09 06:13:41

相關問題