gpt4 book ai didi

java - 安卓.content.pm.PackageManager$NameNotFoundException : when using 2 product flavors?

转载 作者:太空狗 更新时间:2023-10-29 13:58:56 25 4
gpt4 key购买 nike

我有 2 种产品口味。比方说这样的例子:

productFlavors {
free {
applicationId 'com.free.android'

}
premium {
applicationId 'com.premium.android'

}

我的问题是当我使用

Intent resultIntent = new Intent(this, ExpiryListActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(ExpiryListActivity.class);
stackBuilder.addNextIntent(resultIntent);

问题发生在stackBuilder.addParentStack(ExpiryListActivity.class)时第一个使用 productFlavor free 的应用程序不会导致 android.content.pm.PackageManager$NameNotFoundException错误。但是第二个使用 productFlavor 溢价的应用程序会导致 android.content.pm.PackageManager$NameNotFoundException .然后我阅读了 stackBuilder.addParentStack(<Class>) 的文档添加 manifest 指定的 Activity 父链。如何解决这个问题?

最佳答案

长话短说将您的元数据更改为

<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="originalPackageName.ui.MainActivity" />

基本问题是 gradle 正在扩展您在元数据中编写的父 Activity 类的包名称。

如果您的产品口味是免费的,它会尝试在 com.free.android.ui.MainActivity 位置找到一个类

如果是付费风格,它会尝试在 com.premium.android.ui.MainActivity 位置找到一个类

但是,当您为您的产品风格提及不同的 applicationId 时,gradle 实际上并没有重组包,并且该类仍然位于 originalPackageName.ui.MainActivity,因此 NameNotFoundException

其中 originalPackageName 是您开始项目时使用的包名称的占位符。

关于java - 安卓.content.pm.PackageManager$NameNotFoundException : when using 2 product flavors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com