为现有应用程序创建即时应用程序
Create Instant app for existing application
我有一个应用程序,我想为它创建一个 instantApp
。
我成功地将更改应用于我的项目并成功构建。
但是有两个问题:
-我无法 运行 应用程序,错误是:
Default Activity not found
另一个问题是,当我 运行 instantApp
时,我看到一条错误消息,上面写着 Google Play Store has stoped
我有一个 app
和两个 Instant App Feature Module
,分别是 base
和 feature
。
这是我的功能清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
package="instantapp.samples.yaramobile.com.base.feature">
<application tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".presenter.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter
android:autoVerify="true"
android:order="1">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:host="test.com"/>
<data android:pathPattern="/"/>
<data android:scheme="https"/>
<data android:scheme="http"/>
</intent-filter>
</activity>
<activity android:name=".presenter.display.DisplayActivity"/>
<activity android:name=".presenter.display.PermissionActivity"/>
</application>
</manifest>
基于此 thread,如果您看到升级 IntelliJ IDEA 或 Android Studio 版本后或生成新 APK 后发生错误,您可能需要刷新 IDE 的缓存。
File -> Invalidate Caches / Restart...
这也意味着您没有在 AndroidManifest.xml 中声明的 activity 标记为应用程序启动时要启动的主要 activity。
终于找到问题和解决方法了:
问题与 AppCompact 依赖有关:
implementation 'androidx.appcompat:appcompat:1.0.2'
发生冲突,我不得不使用 api
而不是 implementation
api 'androidx.appcompat:appcompat:1.0.2'
另外还有一个房间依赖冲突:
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
kapt 'androidx.lifecycle:lifecycle-compiler:2.0.0'
implementation 'androidx.room:room-runtime:2.1.0-alpha02'
kapt 'androidx.room:room-compiler:2.1.0-alpha02'
我也不得不换成api
:
api 'androidx.lifecycle:lifecycle-extensions:2.0.0'
kapt 'androidx.lifecycle:lifecycle-compiler:2.0.0'
api 'androidx.room:room-runtime:2.1.0-alpha02'
kapt 'androidx.room:room-compiler:2.1.0-alpha02'
另一个问题是关于 databinding
我刚刚在我的基本模块中添加了 databinding
,但安装的模块中也需要它:
dataBinding{
enabled = true
}
又是关于 room
:
我必须将提供程序添加到基本模块的 manifest
中,因为我的 installed
模块中的合并清单出现错误,因为这些提供程序在 room
依赖项中使用:
<provider
tools:replace="android:authorities"
android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"
android:authorities="codenevisha.ir.mvvmwithdagger.base.lifecycle-process"
android:exported="false"
android:multiprocess="true"/>
不要忘记通过添加 tools:replace="android:authorities"
替换此提供程序
希望这些指南对您有用。
我有一个应用程序,我想为它创建一个 instantApp
。
我成功地将更改应用于我的项目并成功构建。
但是有两个问题: -我无法 运行 应用程序,错误是:
Default Activity not found
另一个问题是,当我 运行 instantApp
时,我看到一条错误消息,上面写着 Google Play Store has stoped
我有一个 app
和两个 Instant App Feature Module
,分别是 base
和 feature
。
这是我的功能清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
package="instantapp.samples.yaramobile.com.base.feature">
<application tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".presenter.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter
android:autoVerify="true"
android:order="1">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:host="test.com"/>
<data android:pathPattern="/"/>
<data android:scheme="https"/>
<data android:scheme="http"/>
</intent-filter>
</activity>
<activity android:name=".presenter.display.DisplayActivity"/>
<activity android:name=".presenter.display.PermissionActivity"/>
</application>
</manifest>
基于此 thread,如果您看到升级 IntelliJ IDEA 或 Android Studio 版本后或生成新 APK 后发生错误,您可能需要刷新 IDE 的缓存。
File -> Invalidate Caches / Restart...
这也意味着您没有在 AndroidManifest.xml 中声明的 activity 标记为应用程序启动时要启动的主要 activity。
终于找到问题和解决方法了:
问题与 AppCompact 依赖有关:
implementation 'androidx.appcompat:appcompat:1.0.2'
发生冲突,我不得不使用 api
而不是 implementation
api 'androidx.appcompat:appcompat:1.0.2'
另外还有一个房间依赖冲突:
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
kapt 'androidx.lifecycle:lifecycle-compiler:2.0.0'
implementation 'androidx.room:room-runtime:2.1.0-alpha02'
kapt 'androidx.room:room-compiler:2.1.0-alpha02'
我也不得不换成api
:
api 'androidx.lifecycle:lifecycle-extensions:2.0.0'
kapt 'androidx.lifecycle:lifecycle-compiler:2.0.0'
api 'androidx.room:room-runtime:2.1.0-alpha02'
kapt 'androidx.room:room-compiler:2.1.0-alpha02'
另一个问题是关于 databinding
我刚刚在我的基本模块中添加了 databinding
,但安装的模块中也需要它:
dataBinding{
enabled = true
}
又是关于 room
:
我必须将提供程序添加到基本模块的 manifest
中,因为我的 installed
模块中的合并清单出现错误,因为这些提供程序在 room
依赖项中使用:
<provider
tools:replace="android:authorities"
android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer"
android:authorities="codenevisha.ir.mvvmwithdagger.base.lifecycle-process"
android:exported="false"
android:multiprocess="true"/>
不要忘记通过添加 tools:replace="android:authorities"
希望这些指南对您有用。