Не удается скрыть строку URL в приложении TWA / PWA в Android - PullRequest
3 голосов
/ 13 июня 2019

Я пытаюсь заставить мое приложение PWA работать, используя руководство TWA Google здесь:

https://developers.google.com/web/updates/2019/02/using-twa

Я полностью следовал этому руководству от начала до конца несколько раз, ноне могу заставить его спрятать строку URL в любой момент.

Я загрузил apk (релиз) в консоль Google Play и разрешил ему делать подписи для меня.

Я прошел в основном все вопросы по SO, и ни одно из решений, похоже, не работает для меня, или я уже настроил их правильно.

Что нужно отметить, что я попробовал и проверил:

  • Я скопировал отпечаток SHA256 в мой файл assetlinks.json, предоставленный мне Play Console.Не сработало.
  • Я использовал сгенерированный вручную отпечаток SHA256, который я настроил в Android Studio, в файле assetlinks.json.Не сработало.
  • При обоих вышеперечисленных условиях я попытался вручную загрузить сгенерированный apk на телефон вместо apk из консоли Play.Не сработало.
  • Я пытался использовать Android Studio для установки приложения в режиме разработчика с отладкой по USB на моем телефоне (пробовал варианты выпуска и отладки).Также не сработало.
  • Попытка изменить пространство имен в файле strings.xml на «android_app», чтобы оно соответствовало пространству имен в файле assetlinks.json, но это было довольно далеко.Не работает.
  • Подтверждено, что файл assetlinks.json работает с использованием генератора ссылок на ресурсы: https://developers.google.com/digital-asset-links/tools/generator
  • Мой путь assetlinks.json - /.well-known/assetlinks.json
  • Кажется, мои намерения работают (если щелкнуть ссылку в результатах поиска Google, программа запустится, и связь останется)

Мой build.gradle (Модуль)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.0"
    defaultConfig {
        applicationId "com.mypwadomain.www"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode 3
        versionName "0.1.9"
        testInstrumentationRunner "androidx.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 'androidx.appcompat:appcompat:1.0.2'
    implementation 'com.github.GoogleChrome.custom-tabs-client:customtabs:d08e93fce3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

My AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.mypwadomain.www">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="PWAAppName"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">
        <meta-data
            android:name="asset_statements"
            android:resource="@string/asset_statements" />
        <activity
            android:name="android.support.customtabs.trusted.LauncherActivity">

            <meta-data
                android:name="android.support.customtabs.trusted.DEFAULT_URL"
                android:value="https://www.mypwadomain.com/login" />

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE"/>

                <data
                    android:scheme="https"
                    android:host="www.mypwadomain.com"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

My strings.xml

<resources>
    <string name="app_name">PWAAppName</string>
    <string name="asset_statements">
        [{
            \"relation\": [\"delegate_permission/common.handle_all_urls\"],
            \"target\": {
                \"namespace\": \"web\",
                \"site\": \"https://www.mypwadomain.com\"}
        }]
    </string>
</resources>

My assetlinks.json

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "web",
    "site": "https://www.mypwadomain.com"
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target" : { "namespace": "android_app", "package_name": "com.mypwadomain.www",
    "sha256_cert_fingerprints": ["...Google Signed Fingerprint..."] }
}]

Аудит в Маяке дляСамо приложение возвращается с совместимостью 100 PWA, и добавление на домашний экран хорошо работает как на устройствах Android, так и на iOS.

Я довольно новичок в этом.Я в первую очередь разработчик PHP, и само приложение работает нормально.Я буквально установил Android Studio впервые несколько дней назад.С другой стороны, я использую PHPStorm, который также сделан JetBrains, так что эта часть помогла с кривой обучения.

Любая помощь или совет относительно того, что еще я могу проверить, будет принята с благодарностью.

РЕДАКТИРОВАТЬ: Я загрузил LogCat через Android Studio (я работаю на Windows).Затем я запустил приложение в режиме отладки, и в результате журнал ниже.Нет экземпляров OriginVerifier или digital_asset_links

2019-06-20 11:18:12.440 12042-12042/? E/Zygote: accessInfo : 1
2019-06-20 11:18:12.444 12042-12042/? I/SELinux: SELinux: seapp_context_lookup: seinfo=default, level=s0:c94,c257,c512,c768, pkgname=com.mypwaapp.www 
2019-06-20 11:18:12.453 12042-12042/? I/m.mypwaapp.ww: Late-enabling -Xcheck:jni
2019-06-20 11:18:12.609 12042-12042/com.mypwaapp.www W/ActivityThread: Application com.mypwaapp.www is waiting for the debugger on port 8100...
2019-06-20 11:18:12.610 12042-12042/com.mypwaapp.www I/System.out: Sending WAIT chunk
2019-06-20 11:18:13.814 12042-12042/com.mypwaapp.www I/System.out: Debugger has connected
2019-06-20 11:18:13.815 12042-12042/com.mypwaapp.www I/System.out: waiting for debugger to settle...
2019-06-20 11:18:14.017 12042-12042/com.mypwaapp.www I/chatty: uid=10350(com.mypwaapp.www) identical 1 line
2019-06-20 11:18:14.220 12042-12042/com.mypwaapp.www I/System.out: waiting for debugger to settle...
2019-06-20 11:18:14.423 12042-12042/com.mypwaapp.www I/System.out: waiting for debugger to settle...
2019-06-20 11:18:14.625 12042-12042/com.mypwaapp.www I/System.out: waiting for debugger to settle...
2019-06-20 11:18:14.828 12042-12042/com.mypwaapp.www I/System.out: waiting for debugger to settle...
2019-06-20 11:18:15.032 12042-12042/com.mypwaapp.www I/chatty: uid=10350(com.mypwaapp.www) identical 1 line
2019-06-20 11:18:15.235 12042-12042/com.mypwaapp.www I/System.out: waiting for debugger to settle...
2019-06-20 11:18:15.440 12042-12042/com.mypwaapp.www I/System.out: debugger has settled (1500)
2019-06-20 11:18:15.457 12042-12042/com.mypwaapp.www D/ConnectivityManager_URSP: Ursp sIsUrsp=false, sIsCheckUrsp=false, uid=10350
2019-06-20 11:18:15.478 12042-12042/com.mypwaapp.www D/Proxy: urspP is null: 10350
2019-06-20 11:18:15.788 12042-12042/com.mypwaapp.www W/m.mypwaapp.ww: JIT profile information will not be recorded: profile file does not exits.
2019-06-20 11:18:15.831 12042-12042/com.mypwaapp.www I/chatty: uid=10350(com.mypwaapp.www) identical 10 lines
2019-06-20 11:18:15.835 12042-12042/com.mypwaapp.www W/m.mypwaapp.ww: JIT profile information will not be recorded: profile file does not exits.
2019-06-20 11:18:15.948 12042-12042/com.mypwaapp.www I/InstantRun: starting instant run server: is main process
2019-06-20 11:18:16.101 12042-12063/com.mypwaapp.www D/libEGL: loaded /vendor/lib64/egl/libGLES_mali.so
2019-06-20 11:18:16.403 12042-12042/com.mypwaapp.www D/TWAProviderPicker: Found Custom Tabs provider: com.sec.android.app.sbrowser
2019-06-20 11:18:16.404 12042-12042/com.mypwaapp.www D/TWAProviderPicker: Found no TWA providers, using first Custom Tabs provider: com.sec.android.app.sbrowser
2019-06-20 11:18:16.410 12042-12042/com.mypwaapp.www D/TWALauncherActivity: Using URL from Manifest (https://www.mypwaapp.com/login).
2019-06-20 11:18:17.330 12042-12042/com.mypwaapp.www W/m.mypwaapp.ww: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
2019-06-20 11:18:17.335 12042-12042/com.mypwaapp.www W/m.mypwaapp.ww: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
2019-06-20 11:18:17.506 12042-12042/com.mypwaapp.www D/OpenGLRenderer: Skia GL Pipeline
2019-06-20 11:18:17.528 12042-12042/com.mypwaapp.www D/EmergencyMode: [EmergencyManager] android createPackageContext successful
2019-06-20 11:18:17.678 12042-12042/com.mypwaapp.www D/InputTransport: Input channel constructed: fd=81
2019-06-20 11:18:17.686 12042-12042/com.mypwaapp.www D/ViewRootImpl@c9324c2[LauncherActivity]: setView = DecorView@fe5f2d3[LauncherActivity] TM=true MM=false
2019-06-20 11:18:17.717 12042-12042/com.mypwaapp.www D/ViewRootImpl@c9324c2[LauncherActivity]: Surface release. android.view.WindowManagerGlobal.setStoppedState:669 android.app.Activity.performStop:7646 android.app.ActivityThread.callActivityOnStop:4352 android.app.ActivityThread.performStopActivityInner:4330 android.app.ActivityThread.handleStopActivity:4405 android.app.servertransaction.StopActivityItem.execute:41 android.app.servertransaction.TransactionExecutor.executeLifecycleState:145 android.app.servertransaction.TransactionExecutor.execute:70 
2019-06-20 11:18:17.779 12042-12042/com.mypwaapp.www D/ViewRootImpl@c9324c2[LauncherActivity]: dispatchAttachedToWindow
2019-06-20 11:18:17.839 12042-12042/com.mypwaapp.www D/ViewRootImpl@c9324c2[LauncherActivity]: Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x1 surface={valid=false 0} changed=false

РЕДАКТИРОВАТЬ 2: Я нашел это в ленте logcat:

2019-06-20 12:23:56.772 6226-11769/? I/SingleHostAsyncVerifier: Verification result: checking for a statement with source a: # bpti@709f0232
    w: 29
    , relation delegate_permission/common.handle_all_urls, and target b <
      a: "com.mypwaapp.www"
      b: # bptg@e7d522a2
      w: 118
    >
    w: 120
     --> false.

Не уверен, актуально или нет.

1 Ответ

0 голосов
/ 27 июня 2019

Мой браузер по умолчанию должен был сброситься до браузера Samsung, когда я очистил настройки на своем телефоне (Samsung Note 9), когда я устранял проблему.Я установил браузер по умолчанию в Chrome.Работает нормально.

Спасибо andreban:)

...