2017-06-09 2 views
0

ich einen Instant-App mit folgenden Modulen haben:Instant-App Google Play-Upload fehlgeschlagen

  • Basis-Feature
  • feature1
  • feature2
  • Instant

installiert Ich möchte installed haben beide feature1 und feature2 und instant haben nur feature1.

Sofort build.gradle:

apply plugin: 'com.android.instantapp' 

dependencies { 
    implementation project(':base') 
    implementation project(':feature1') 
} 

build.gradle installiert: Play-Entwicklerkonsole

apply plugin: 'com.android.application' 

dependencies { 
    implementation project(':base') 
    implementation project(':feature1') 
    implementation project(':feature2') 
} 

Ich möchte Upload auf Google testen, so dass ich erstellt instant App Release-Build. Es enthält base und feature1 APKs, aber wenn ich es laden zu bekomme ich tröste den Fehler:

Your Instant App APKs contains an APK name 'feature2' that either does not exist or was not included. 

Was mache ich falsch? Es ist möglich, verschiedene Sätze von Funktionen für installed und instant Apps zu haben, oder?

+0

Implementierungsprojekt (': feature1') Implementierungsprojekt (': feature2'). Es gibt einen Fehler in den Tools, der die Zahlen im Feature-Namen ignoriert, so dass beide Features "Feature" sind. Dies kann einige Probleme verursachen. Verwenden Sie die richtigen Namen für die Features. für z.B. "listing_feature", "details_feature" – Anirudh

+0

@Anirudh Danke, aber diese Namen sind nur zum Beispiel. Funktionen haben in meinem Projekt richtige Namen. – mol

Antwort

1

It is possible to have different sets of features for installed and instant apps, right?

Ja sollte es möglich sein. Obwohl Sie das com.android.library Plugin für feature2 verwenden können, wenn es nur als AAR Datei von Ihrer installierten App verwendet wird (in der Tat, kann dies dazu beitragen, das Problem zu enthüllen).

What am I doing wrong?

Ich bin nicht sicher, aber ich glaube, dass feature2 irgendwie durch eine der Instant-App APK-Dateien verwiesen wird. Laden Sie zum Überprüfen die Instant App-ZIP-Datei in APK Analyzer in Studio 3.0 Canary, und suchen Sie dann in der Datei AndroidManifest.xml jedes Ihrer APKs nach. Suchen Sie in Ihrem <activity> nach einem Attribut, das in etwa wie folgt lautet: android:splitName="feature2". Dies teilt einem APK mit, dass der Code für das andere Feature in einem anderen Feature APK vorhanden ist.

Der Fehler klingt, als ob er einen Verweis auf feature2 fand, aber keine entsprechende APK-Datei in der Instant-App-Zip.

Wenn dies der Fall ist, dann sollten Sie Ihre build.gradle Dateien erneut prüfen sowie Ihre AndroidManifest.xml in jedem Modul, um sicherzustellen, gibt es keine Hinweise auf feature2, dass die instant Modul abholen können.

+0

Danke für die Antwort. Tatsächlich gibt es alle Aktivitäten von 'feature2' mit' split = "feature2" 'in' base' fusioniertem 'AndroidManifest.xml'. Aber ich habe alle Module inspiziert und scheint nichts "feature2" zu nennen. Haben Sie irgendwelche Ideen, warum 'feature2' Aktivitäten zum Instant App Manifest hinzugefügt werden? – mol

+0

Ich bin mir nicht sicher, wie das passieren könnte. Sie können einen ausführlichen 'gradlew assembleDebug' von der Befehlszeile ausführen, der auf Ihr Instant-App-Modul abzielt, um zu sehen, wie es alle Module zusammenführt/kombiniert. Sie können auch versuchen, 'feature2' zum' com.android.library'-Plugin zu wechseln, das Ihnen helfen könnte. Sonst klingt es so, als könnte hier ein Fehler sein. Wenn Sie ein Beispielprojekt neu erstellen können, das reproduziert, dann würde ich einen Fehler wie schreiben: https://developer.android.com/studio/report-bugs.html – AdamK

0

Die Instant-App sollte alle Feature-Module haben, auch wenn Sie sie nicht verwenden möchten, verknüpfen Sie sie nicht mit einer URL und sie werden nie geladen werden.

Der Play Store lädt base + feature1 herunter, wenn eine Instant App aufgerufen wird. Stellen Sie sich nun vor, dass Ihr feature1 über Deep-Links mit feature2 verknüpft ist und dann Store-Downloadsfeature2 spielt. Die Instant-App sollte alle Feature-Dateien in der Zip enthalten.

Fügen Sie dies in Ihrem Buildgrdle hinzu und versuchen Sie dann, es hochzuladen.Das hat für mich funktioniert.

implementation project(':feature2')

+0

Die Sache ist 'feature2' Modul ist sehr groß und ich bin Angst, dass Apk 4Mb Validierung nicht bestehen wird, also möchte ich es von Instant-App ausschließen. Ich habe auch versucht, "feature1" von Instant auszuschließen und es in installiert haben und es hat gut funktioniert, so dass augenblicklich sofort installiert und kann verschiedene Sätze von Modulen haben. – mol

Verwandte Themen