我正在尝试为我的项目实现应用程序包。在启动动态模块活动时,它正在下载模块并尝试安装该模块,但无法完全安装它。它被卡住了,如下图所示。

以下链接供参考。 https://github.com/googlesamples/android-dynamic-features
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.view.View
import android.widget.ProgressBar
import android.widget.TextView
import com.google.android.play.core.splitinstall.*
import com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus
import com.lenskart.app.R
private const val modulePackageName = "com.test.feature"
private const val htoClassname = "$modulePackageName.hto.HtoActivity"
private const val atHomeClassname = "$modulePackageName.athome.AtHomeActivity"
class BundleActivity : AppCompatActivity() {
private val listener = SplitInstallStateUpdatedListener { state ->
val multiInstall = state.moduleNames().size > 1
state.moduleNames().forEach { name ->
when (state.status()) {
SplitInstallSessionStatus.DOWNLOADING -> {
displayLoadingState(state, "Downloading $name")
}
SplitInstallSessionStatus.REQUIRES_USER_CONFIRMATION -> {
startIntentSender(state.resolutionIntent().intentSender, null, 0, …Run Code Online (Sandbox Code Playgroud) 通过内部测试,我可以下载动态功能模块。成功下载后,我正在使用包名称打开动态模块中的活动,但我遇到了类未找到异常。我检查了 APK 大小,但大小没有增加。下面是我的代码。请帮忙
下面是我下载模块的代码。我使用的是 Playstore 中提供的内部测试。
public void loadFeatureTwo() {
// Builds a request to install the feature1 module
SplitInstallRequest request =
SplitInstallRequest
.newBuilder()
// You can download multiple on demand modules per
// request by invoking the following method for each
// module you want to install.
.addModule("feature2")
.build();
// Begin the installation of the feature1 module and handle success/failure
splitInstallManager
.startInstall(request)
.addOnSuccessListener(new OnSuccessListener<Integer>() {
@Override
public void onSuccess(Integer integer) {
// Module download successful
/* Intent intent = …Run Code Online (Sandbox Code Playgroud) moduleA 是一个具有依赖关系的动态功能模块,它是一个 aar lib。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':app')
implementation(name:'lib', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)
它构建成功并安装在模拟器上,但每当我想创建应用程序包时,都会收到以下错误:
Modules 'base' and 'moduleA' contain entry 'res/drawable/xyz.xml' with different content.
Run Code Online (Sandbox Code Playgroud)
如果我应该在应用程序模块中重命名 xyz.xml,则会收到错误:
../moduleA/build/intermediates/metadata_feature_manifest/fullDebug/processFullDebugManifest/metadata-feature/AndroidManifest.xml:61:13-63:50: AAPT: error: resource drawable/xyz (aka my.app.main.drawable/xyz) not found.
Run Code Online (Sandbox Code Playgroud)
这是Plaid 的模块化文章中强调的问题之一。
为了解决这个问题,我必须在应用程序模块中创建一个空的 xyz.xml,但是在创建应用程序包时,我收到错误:
Modules 'base' and 'moduleA' contain entry 'res/drawable/xyz.xml' with different content.
Run Code Online (Sandbox Code Playgroud)
问题是什么以及如何解决?
android android-app-bundle dynamic-delivery dynamic-feature-module
我正在尝试开发具有动态功能的Android应用程序.
我已经将"示例"动态功能模块添加到项目中,当我尝试从Android Studio构建"Android App Bundle"时,我收到以下错误,
Caused by: java.util.concurrent.ExecutionException: com.android.tools.build.bundletool.exceptions.manifest.ManifestFusingException$FusingMissingIncludeAttribute: <fusing> element is missing the 'include' attribute (split: 'sample').
Run Code Online (Sandbox Code Playgroud)
动态功能模块清单
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
package="com.features.dynamic.sample">
<dist:module
dist:instant="false"
dist:onDemand="true"
dist:title="@string/title_sample">
<dist:fusing include="false" />
</dist:module>
</manifest>
Run Code Online (Sandbox Code Playgroud) 我尝试将我的应用程序项目中的功能拆分为一些动态模块。我已经将一些布局,可绘制和Java类移至动态功能模块。我遵循此说明,并成功将项目构建到我的android设备上。构建APK成功,但是,当我尝试构建android应用程序捆绑包时,显示异常
Title for on-demand module 'myfeaturemodule' is missing in the base resource table.
如何解决此异常以及为什么仅在我要构建应用程序捆绑包时才显示?
这是来自Android Studio的stacktrace:
org.gradle.internal.UncheckedException: java.util.concurrent.ExecutionException: com.android.tools.build.bundletool.exceptions.ValidationException: Title for on-demand module 'myfeaturemodule' is missing in the base resource table.
at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:63)
at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:40)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:76)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:801)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:768)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
at …Run Code Online (Sandbox Code Playgroud) 我的应用程序支持多种语言,并且可以在应用程序内动态更改,并且以前与 APK 运行良好。但是当我采用 AAB 而不是 APK 时,我遇到了这个问题。现在我的应用程序不会更改应用程序内的语言,但如果我要更改设备的语言,那么它也会更改我的应用程序的语言。对于上述问题是否有任何解决方案而不是使用
bundle {
language {
enableSplit = false
}
}
Run Code Online (Sandbox Code Playgroud) 在Azure DevOps中,我解压缩aab,修改aab中的一些文件(图标、资源、清单),并使用bundletool构建模块。我接下来的步骤是:
我假设我签名的次数超出了必要的次数,因为我签名了 3 次(AAB、APKS 和 APK)。需要签署什么?每个签名任务只需要不到 10 秒,但每个任务都会增加额外的复杂性,我希望它尽可能简单以实现可重用性。
当我在 Android Studio 中创建应用程序包时,会在应用程序包旁边生成一个“private_key.pepk”文件。在 Google Play Console 中发布应用程序包的旧教程中,我注意到需要上传“private_key.pepk”文件才能生成应用程序签名密钥。
这是我第一次发布应用程序包。此外,我正在新的网络版 Google Play Console 中发布它。我刚刚上传了我的应用程序包,并且不需要上传“private_key.pepk”文件来生成应用程序歌唱密钥。
这是否意味着我们不再需要“private_key.pepk”文件,或者我只是在发布应用程序包时犯了一个错误?
我知道这个问题已经被问过很多次了,但是,自从 Google Play 上次更新以来,我们面临着许多变化。
最近,我与一个团队远程合作,开发了一个使用Google 地图的应用程序。当我构建应用程序的发行版本(使用特定的密钥库文件)并将其安装在真实设备上时,该应用程序可以正常运行。然而,当没有任何 Google Play 经验的 IT 成员将应用程序上传到 Google Play 时,Google 地图无法处理来自 Google Play 的 AAB 文件安装的应用程序。我已导出“pepk”文件来签署应用程序,但团队认为 Google Play 会自动签署应用程序,并且不需要 pepk 文件。问题是,我们应该如何解决这个问题呢?如果有任何解决方案,如果您帮助我,我将不胜感激。
我添加了来自 Google Play 的 APK 文件和 AAB 文件的发行版本的屏幕截图。
提前致谢。
不久前,我开发了一个android应用程序并以捆绑文件的形式发布在google play store中,但由于我的特殊情况删除了源代码。现在,我想更新该应用程序。是否可以使用我的 Google Play 控制台帐户中的捆绑文件取回源代码?提前致谢。
android ×10
apk ×2
google-play ×2
app-bundle ×1
build.gradle ×1
bundletool ×1
generics ×1
java ×1
multilingual ×1