gpt4 book ai didi

java - Android 应用程序启动崩溃 - customtabs.CustomTabsSession.validateRelationship

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:54 26 4
gpt4 key购买 nike

我遵循了最近的 Google 指南 Trusted Web Activities我的应用程序在我的设备和一些特定的模拟器上运行良好。

但是,在某些设备和模拟器(例如 Google Pixel 2)上,我会在启动时立即崩溃。

logcat 输出:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ocdev.yu_gi_ohdatabase, PID: 5020
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.customtabs.CustomTabsSession.validateRelationship(int, android.net.Uri, android.os.Bundle)' on a null object reference
at android.support.customtabs.TrustedWebUtils.launchAsTrustedWebActivity(TrustedWebUtils.java:134)
at android.support.customtabs.trusted.LauncherActivity$TwaCustomTabsServiceConnection.onCustomTabsServiceConnected(LauncherActivity.java:199)
at android.support.customtabs.CustomTabsServiceConnection.onServiceConnected(CustomTabsServiceConnection.java:44)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1634)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1663)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ocdev.yu_gi_ohdatabase">

<application
android:allowBackup="true"
android:icon="@mipmap/ygo_fore"
android:label="@string/app_name"
android:roundIcon="@mipmap/ygo_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="asset_statements"
android:resource="@string/asset_statements" />
<activity
android:name="android.support.customtabs.trusted.LauncherActivity">

<!-- Edit android:value to change the url opened by the TWA -->
<meta-data
android:name="android.support.customtabs.trusted.DEFAULT_URL"
android:value="https://db.ygoprodeck.com" />

<!-- This intent-filter adds the TWA to the Android Launcher -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

<!--
This intent-filter allows the TWA to handle Intents to open
airhorner.com.
-->
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/>

<!-- Edit android:host to handle links to the target URL-->
<data
android:scheme="https"
android:host="db.ygoprodeck.com"/>
</intent-filter>
</activity>
</application>
</manifest>

模块构建.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 28
defaultConfig {
applicationId "com.ocdev.yu_gi_ohdatabase"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.github.GoogleChrome.custom-tabs-client:customtabs:3a71a75c9f'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
}

项目build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
google()
jcenter()

}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

我还通过 Browserstack 在 Android 模拟器上测试了我的发布 apk我收到了完全相同的问题。我在我测试的一些物理设备上也遇到了这个问题,例如三星 Galaxy S7 Edge,但奇怪的是我测试了不同的 Galaxy S7 Edge,它没有问题。根据我目前的测试,我猜它可以在我测试过的 50% 的设备上运行。我不是继承的 Android 开发人员,所以我正在努力寻找这个问题的原因以及为什么它在某些设备上工作正常而不在其他设备上工作。

最佳答案

我在 Chromium 论坛上发布了这个问题并被重定向到列出的临时修复程序 here .

简而言之,他们已经意识到了这个问题,并希望尽快找到一个永久性的解决方案,这样临时修复就不需要太久了。

给出的答案:

For the moment, you can change the last parameter to CustomTabsClient#getPackageName here to true. This parameter is 'ignoreDefault' and as you can probably guess will make the package selection ignore the user's default. Ideally though this won't be necessary for long.

关于java - Android 应用程序启动崩溃 - customtabs.CustomTabsSession.validateRelationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54714786/

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