2017-06-02 48 views
2

所以我有這個app1,我想創建一個app2,從app1,它將幾乎是相同的應用程序,但在佈局上的差異。我設法使用productFlavors來做到這一點。結果需要是Play商店中的兩個應用程序,這兩個應用程序都是免費的,用戶可以同時擁有他們的手機。從相同的應用程序安裝兩個調試apk(味道)

但是,我可以構建兩個apk進行調試,但是當我安裝一個,手機不讓我安裝其他。這兩件事上傳到商店後會發生嗎?

這是我的gradle產出:

defaultConfig { 
    applicationId "com.example.app" 
    minSdkVersion 16 
    targetSdkVersion 25 
    versionCode 48 
    versionName "3.1.1" 

    multiDexEnabled true 
} 

signingConfigs { 
    String releaseFilename = "/.androidReleaseKeys/example_release.properties" 

    Properties props = new Properties() 
    props.load(new FileInputStream(file(releaseFilename))) 


    release { 
     storeFile file(props.getProperty('keystore')) 
     storePassword props.getProperty('keystore.password') 
     keyAlias props.getProperty('keyAlias') 
     keyPassword props.getProperty('keyAlias.password') 
    } 

} 

productFlavors{ 
    app1{ 
     applicationId "com.example.app" 
     buildTypes { 

      debug { 
       buildConfigField "String", "GOOGLEMAPS_API_KEY", "\"${googleMapsAPIDev}\""; 
       debuggable true 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 


      release { 
       signingConfig signingConfigs.release 
       buildConfigField "String", "GOOGLEMAPS_API_KEY", "\"${googleMapsAPIRelease}\""; 
       minifyEnabled false 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 
     } 
    } 

    app2{ 
     applicationId "com.example2.app2" 
     versionCode 1 
     versionName "1" 
     multiDexEnabled true 

     buildTypes { 

      debug { 
       buildConfigField "String", "GOOGLEMAPS_API_KEY", "\"${googleMapsAPIDev}\""; 
       debuggable true 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 


      release { 
       signingConfig signingConfigs.release 
       buildConfigField "String", "GOOGLEMAPS_API_KEY", "\"${googleMapsAPIRelease}\""; 
       minifyEnabled false 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 
     } 

    } 
+0

我應該在控制檯中創建一個新應用程序,併爲她創建一個新的密鑰存儲? (我在某處讀過,你可以使用同一個keystore用於多個應用程序) –

+0

安裝第二個應用程序時'adb'返回什麼錯誤? – Artyom

+0

安裝失敗,消息INSTALL_FAILED_DUPLICATE_PERMISSION perm = com.example1.app.permission.C2D_MESSAGE pkg = com.example2.app(不是在adb只是彈出)我想我需要創建第二個清單併合並一些更改 –

回答

1

聲明此權限的清單與${applicationId}佔位符:

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/> 
<permission 
    android:name="${applicationId}.permission.C2D_MESSAGE" 
    android:protectionLevel="signature"/> 

不要在清單硬編碼包名。

+0

我' m試圖這樣做,但在清單中的包字段呢,似乎我使用$ {applicationId} adb表示它不能讀取packageName –

+0

如何在manifest中設置包?發佈您的''標籤。 – Artyom

+0

我這樣離開,但改變了其他清單中的硬編碼它的工作,我現在已經安裝了兩個應用程序。謝謝,我接受了你的回答 –

相關問題