2017-06-02 3 views
2

Also ich habe diese app1 und ich möchte eine app2, aus der App1, wird es fast die gleiche App, aber mit Unterschieden im Layout. Das schaffe ich mit productFlavors. Das Ergebnis müssen zwei Apps im Play Store sein, sowohl kostenlos als auch der Benutzer kann beide in seinem Telefon haben.Installieren Sie zwei Debug-apk aus der gleichen Anwendung (Flavors)

Allerdings kann ich beide apk für debug bauen, aber wenn ich einen installiere, lässt mich das Telefon nicht den anderen installieren. Wird dies passieren, nachdem beide in den Laden hochgeladen wurden?

Das ist mein 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

Sollte ich jetzt eine neue App in der Konsole erstellen und einen neuen Schlüsselspeicher nur für sie erstellen? (Ich habe irgendwo gelesen, dass Sie denselben Keystore für mehr als eine App verwenden können) –

+0

Welcher Fehler wird von 'adb' zurückgegeben, wenn Sie die zweite App installieren? – Artyom

+0

Installation fehlgeschlagen mit Meldung INSTALL_FAILED_DUPLICATE_PERMISSION perm = com.example1.app.permission.C2D_MESSAGE pkg = com.example2.app (nicht in adb nur ein Popup) Ich denke, ich muss ein zweites Manifest erstellen und mit einigen Änderungen zusammenführen –

Antwort

1

diese Berechtigung mit ${applicationId} Platzhalter in Manifest deklarieren:

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

Sie hart codieren Paketnamen nicht in manifest.

+0

I ' Ich versuche das, aber was ist mit dem Paket-Feld in Manifest, es scheint, dass ich $ {applicationId} das adb verwendet, sagt es nicht lesen kann packageName –

+0

Wie setzen Sie Paket in Manifest? Poste deinen '' Tag. – Artyom

+0

Ich ging wie folgt, änderte aber den hartcodierten Rest des Manifests und es hat geklappt, ich habe jetzt die beiden apps installiert. Danke, ich habe deine Antwort angenommen –

Verwandte Themen