2017-06-09 6 views
0

は、私は以下のモジュールとインスタントアプリを持っていませんでしたinstalledfeature1と012の両方を持つおよびinstantは、feature1のみを有する。インスタントアプリのGoogle Playのアップロードは

インスタントbuild.gradle

apply plugin: 'com.android.instantapp' 

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

build.gradleをインストール:

apply plugin: 'com.android.application' 

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

私は、デベロッパーコンソールをGoogle Playにアップロードをテストしたいので、私はinstantアプリのリリースビルドを作成しました。それはbasefeature1のAPKが含まれていますが、私はコンソールにそれをアップロードするとき、私はエラーを取得:

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

私が間違っているのは何を? installedinstantアプリのさまざまな機能を組み合わせることは可能でしょうか?

+0

実装プロジェクト( ':feature1')実装プロジェクト( ':feature2')。フィーチャー名の数字を無視するツールにはバグがあり、両方のフィーチャーが「フィーチャー」になります。これはいくつかの問題を引き起こします。フィーチャーには適切な名前を使用してください。 「listing_feature」、「details_feature」など – Anirudh

+0

@Anirudhありがとうございますが、これらの名前は例です。機能は私のプロジェクトに固有の名前を持っています。 – mol

答えて

1

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

はい、可能です。 feature2のプラグインはcom.android.libraryプラグインを使用することができますが、インストールされたアプリでAARというファイルとしてのみ使用されています(実際問題が発生する可能性があります)。

What am I doing wrong?

私はわからないが、私はfeature2は何とかインスタントアプリのAPKファイルのいずれかによって参照されていることを推測しています。確認するには、Instant App .zipファイルをStudio 3.0 CanaryのAPK Analyzerに読み込み、各APKのAndroidManifest.xmlファイルを調べます。 <activity>の属性が次のように設定されているか調べます。android:splitName="feature2"これは、他の機能のコードが別の機能APKに存在することをAPKに伝えます。

feature2への参照が見つかりましたが、Instant App zipに対応するAPKファイルがないようなエラーが表示されます。

これが事実である場合は、もう一度build.gradleファイルをチェックする必要がありますだけでなく、あなたの各モジュールでAndroidManifest.xmlinstantモジュールが拾うことがfeature2への参照がないことを確認します。

+0

お返事ありがとうございます。実際、 'base2'に' split = "feature2" 'が' AndroidManifest.xml'をマージした 'feature2'からのすべてのアクティビティがあります。しかし、私はすべてのモジュールを調べて、何もfeature2を参照していないようです。インスタントアプリケーションのマニフェストに 'feature2'アクティビティが追加された理由はありますか? – mol

+0

どうしたらいいのか分かりません。インスタントアプリケーションモジュールをターゲットにしたコマンドラインから冗長な 'gradlew assembleDebug'を実行すると、すべてのモジュールをマージ/コンバインする方法を知ることができます。 'feature2'を' com.android.library'プラグインに切り替えることもできます。これは役に立つかもしれません。そうでなければ、ここにバグがあるかもしれないように思えます。再現するサンプルプロジェクトを再作成できれば、私はバグファイルをhttps://developer.android.com/studio/report-bugs.html – AdamK

0

インスタントアプリは、それらを使用したくない場合でも、すべての機能モジュールを持っている必要があります。URLとリンクしないため、ロードされません。

インスタントアプリが呼び出されると、プレイストアがbase + feature1をダウンロードします。ここで、フィーチャ1がディープリンクを介してフィーチャ2にリンクされ、次にストアのダウンロードフィーチャ2を再生するとします。インスタントアプリには、ジップ内のすべての機能APKが含まれている必要があります。

これをあなたのビルドgradleに追加してからアップロードしてみてください。これは私のために働いた。

implementation project(':feature2')

+0

にファイルすることになります。「feature2」モジュールは非常に大きく、私はapkが4Mbの検証に合格しないことに恐れているので、私はそれを即座のアプリケーションから除外したい。私はインスタントから 'feature1'を除外してインストールしようとしましたが、うまくいきました。 – mol

関連する問題