問題タブ [dynamic-feature]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1593 参照

android - ビルド フレーバーの問題のため、動的機能モジュールを追加できません

既存のアプリに新しい動的機能モジュールを実装したかったのですが、製品のフレーバーの問題により断念しました。

サンプルコードはここにあります。https://github.com/henningBunk/dynamic_feature_problem

私は3つのモジュールを持っています:

  1. アプリ。アプリのメイン モジュール。2 つの製品フレーバーがあります。

store:amazongoogle
pay_status:freepro

amazonFreeamazonProgoogleFreeおよびの 4 つの組み合わせ になります。googlePro

それは依存し、動的機能としてlibリストされます。dynamic_feature

  1. lib。ライブラリ モジュールでappありdynamic_feature、このモジュールに依存します。味libだけがあります。pay_statusだから私が例えばビルドするとき。アプリをgoogleFreeフレーバーとして、lib がそのフレーバーをビルドしfreeます。

  2. dynamic_feature. 動的機能となる新しい機能。このモジュールにはフレーバーがあってはなりません。アプリとライブラリに依存します。

製品のフレーバーと依存関係に縮小された 3 つの gradle ファイルは、次のようになります。

アプリ モジュール build.gradle:

lib モジュール build.gradle:

動的機能モジュール build.gradle:

これにより、次のエラーが発生します。

そのため、モジュールにdynamic_featureは欠損ディメンション戦略が必要になる可能性があると読みました。追加する

dynamic_feature build.gradle を android.defaultConfig に追加します。このようにして、いくつかのフレーバーを作成できますが、すべてではありません。

ここに画像の説明を入力

0 投票する
1 に答える
1478 参照

android - リソースが重複しているため、動的機能リリースのビルドに失敗しました

Androidが提供する動的機能配信を確認するためのサンプルを1つ作成しています。私は次のようにプロジェクト構造を持っています。ベース プロジェクトアプリと 1 つの動的機能sample_dynamic_feature。動的な機能配信に必要なすべての設定が整っています。問題は、基本モジュールと動的モジュールに同じ名前のレイアウト ファイルまたは .xml ファイルを追加すると発生します。基本アプリケーションと動的モジュールの両方にactivity_main.xmlを追加しました。次のエラーが発生しました:

何が悪かったのか:

正常に動作します:

失敗:

完全なスタック トレース:

例外: org.gradle.api.tasks.TaskExecutionException: タスク ':app:packageReleaseBundle' の実行に失敗しました。org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110) で org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77) で org.gradle .api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) org.gradle.api.internal .tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java: org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java で) :55) 原因: org.gradle.internal.UncheckedException: java.util.concurrent.ExecutionException: com.android.tools.build.bundletool.exceptions.ValidationException: モジュール「base」と「sample_dynamic_feature」にエントリ「res/layout」が含まれています/activity_main.xml' を別のコンテンツに変更します。org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:63) で org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java: ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99) ... 31 以上 原因: java.util.concurrent.ExecutionException: com.android.tools.build.bundletool.exceptions.ValidationException: モジュール 'base' および 'sample_dynamic_feature' にエントリが含まれています内容が異なる「res/layout/activity_main.xml」。com.android.ide.common.workers.ExecutorServiceAdapter.close(ExecutorServiceAdapter.kt:56) で kotlin.io.CloseableKt.closeFinally(Closeable.kt:53) で com.android.build.gradle.internal.tasks.PackageBundleTask org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) の .bundleModules(PackageBundleTask.kt:121) ... 44 以上 原因: com.android.tools.build.bundletool。exceptions.ValidationException: モジュール 'base' および 'sample_dynamic_feature' には、内容が異なるエントリ 'res/layout/activity_main.xml' が含まれています。com.android.tools.build.bundletool.exceptions.ValidationException$Builder.build(ValidationException.java:49) で com.android.tools.build.bundletool.exceptions.ValidationException$Builder.build(ValidationException.java:41) でcom.android.tools.build.bundletool.validation.EntryClashValidator.checkEqualEntries(EntryClashValidator.java:66) で com.android.tools.build.bundletool.validation.EntryClashValidator.validateAllModules(EntryClashValidator.java:52) で com.android .tools.build.bundletool.validation.ValidatorRunner.validateBundleModulesUsingSubValidator(ValidatorRunner.java:

このバンドルの違いは何ですか?

0 投票する
4 に答える
1695 参照

android-app-bundle - アンインストール後に動的機能モジュールを削除するには?

私のアプリケーションには、「ベース」と「拡張」の 2 つの機能があります。

マニフェスト拡張機能:

SplitInstallManagerで機能をダウンロード-> startInstall

SplitInstallManager -> deferredUninstallによるアンインストール

インストールされているモジュールをSplitInstallManager -> getInstalledModulesで確認します

拡張機能は Play ストアの成功から読み込まれ、期待どおりに機能します。この機能が不要になったら、アンインストールしてください。

さらに、SplitInstallManager には、SuccessListener、FailureListener、CompleteListener のコールバックがあります。成功して完全にインストールおよびアンインストールします (エラーなし)。

ただし、拡張機能をアンインストールした後 (およびアプリケーションを再起動した後) は、インストールされたままになります。

アンインストールされた機能をアプリケーションから削除する方法 (使用されていないコードとリソースを削除する必要はありません) ?