如何在Meteor cordova项目上添加应用程序链接



我有一个Meteor 1.8.1,它使用Cordova 7.1.4进行Android构建。我想添加应用程序链接,这样当用户单击myApp.com链接时,应用程序就会打开,而不是浏览器。

我在mobile-config.js中添加了以下内容:

App.appendToConfig(`
<platform name="android">
<config-file target="app/src/main/AndroidManifest.xml" parent="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<activity android:name="MainActivity" android:label="@string/title_myApp" >
<intent-filter android:label="@string/filter_view_http_myApp">
<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.myApp.com" android:pathPrefix="/" />
<data android:scheme="https" android:host="myApp.com" android:pathPrefix="/" />
</intent-filter>
</activity>
</config-file>
</platform>
`)

当我试图编译APK时,我得到以下错误:

BUILD FAILED in 1s
27 actionable tasks: 4 executed, 23 up-to-date
=> Errors executing Cordova commands:         
While building Cordova app for platform Android:
Error: /home/meteor/myApp/app/.meteor/local/cordova-build/platforms/android/gradlew: Command failed with exit code 1 Error output:
/home/meteor/myApp/app/.meteor/local/cordova-build/platforms/android/app/build/intermediates/manifests/full/debug/AndroidManifest.xml:100: AAPT: error: unexpected element <intent-filter>
found in <manifest><application>.
/home/meteor/myApp/app/.meteor/local/cordova-build/platforms/android/app/build/intermediates/manifests/full/debug/AndroidManifest.xml:111: AAPT: error: unexpected element <intent-filter>
found in <manifest><application>.
/home/meteor/myApp/app/.meteor/local/cordova-build/platforms/android/app/build/intermediates/manifests/full/debug/AndroidManifest.xml:130: AAPT: error: unexpected element <receiver> found
in <manifest><application><activity>.
/home/meteor/myApp/app/.meteor/local/cordova-build/platforms/android/app/build/intermediates/manifests/full/debug/AndroidManifest.xml:100: error: unexpected element <intent-filter> found
in <manifest><application>.
/home/meteor/myApp/app/.meteor/local/cordova-build/platforms/android/app/build/intermediates/manifests/full/debug/AndroidManifest.xml:111: error: unexpected element <intent-filter> found
in <manifest><application>.
/home/meteor/myApp/app/.meteor/local/cordova-build/platforms/android/app/build/intermediates/manifests/full/debug/AndroidManifest.xml:130: error: unexpected element <receiver> found in
<manifest><application><activity>.

生成的/home/meteor/myApp/app/.meteor/local/cordova-build/platforms/android/app/build/intermediates/manifests/full/debug/AndroidManifest.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myApp.app"
android:hardwareAccelerated="true"
android:versionCode="10003"
android:versionName="1.0.3" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="28" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- for android -->
<!-- <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/> -->
<!-- <uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS"/> -->
<!-- <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> -->
<!-- <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /> -->
<!-- for Samsung -->
<uses-permission android:name="com.sec.android.provider.badge.permission.READ" />
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" /> <!-- for htc -->
<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT" /> <!-- for sony -->
<uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE" />
<uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE" /> <!-- for apex -->
<uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT" /> <!-- for solid -->
<uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE" /> <!-- for huawei -->
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE" />
<uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS" /> <!-- for ZUK -->
<uses-permission android:name="android.permission.READ_APP_BADGE" /> <!-- for OPPO -->
<uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS" /> <!-- for EvMe -->
<uses-permission android:name="me.everything.badger.permission.BADGE_COUNT_READ" />
<uses-permission android:name="me.everything.badger.permission.BADGE_COUNT_WRITE" /> <!-- Required by older versions of Google Play services to create IID tokens -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="com.myApp.app.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.myApp.app.permission.C2D_MESSAGE" />
<application
android:name="android.support.multidex.MultiDexApplication"
android:debuggable="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/icon"
android:label="@string/app_name"
android:supportsRtl="true" >
<activity
android:name="com.myApp.app.MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:label="@string/activity_name"
android:launchMode="singleTop"
android:theme="@android:style/Theme.DeviceDefault.NoActionBar"
android:windowSoftInputMode="adjustResize" >
<intent-filter android:label="@string/launcher_name" >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.adobe.phonegap.push.PushHandlerActivity"
android:exported="true"
android:permission="com.myApp.app.permission.PushHandlerActivity" />
<receiver android:name="com.adobe.phonegap.push.BackgroundActionButtonHandler" />
<receiver android:name="com.adobe.phonegap.push.PushDismissedHandler" />
<service android:name="com.adobe.phonegap.push.FCMService" >
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="com.adobe.phonegap.push.PushInstanceIDListenerService" >
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<receiver
android:name="com.appsflyer.MultipleInstallBroadcastReceiver"
android:exported="true" />
<intent-filter android:label="@string/filter_view_http_myApp" >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.myApp.com"
android:pathPrefix="/"
android:scheme="https" />
</intent-filter>
<intent-filter android:label="@string/filter_view_http_myApp" >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.myApp.com"
android:pathPrefix="/"
android:scheme="https" />
<data
android:host="myApp.com"
android:pathPrefix="/"
android:scheme="https" />
</intent-filter>
<activity
android:name="com.myApp.app.ShareActivity"
android:label="@string/title_myApp" >
<receiver
android:name="com.appsflyer.MultipleInstallBroadcastReceiver"
android:exported="true" />
<intent-filter android:label="@string/filter_view_http_myApp" >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.myApp.com"
android:pathPrefix="/"
android:scheme="https" />
<data
android:host="myApp.com"
android:pathPrefix="/"
android:scheme="https" />
</intent-filter>
</activity>
<!--
FirebaseMessagingService performs security checks at runtime,
no need for explicit permissions despite exported="true"
-->
<service
android:name="com.google.firebase.messaging.FirebaseMessagingService"
android:exported="true" >
<intent-filter android:priority="-500" >
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<receiver
android:name="com.google.android.gms.measurement.AppMeasurementReceiver"
android:enabled="true"
android:exported="false" >
</receiver>
<receiver
android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver"
android:enabled="true"
android:exported="true"
android:permission="android.permission.INSTALL_PACKAGES" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<service
android:name="com.google.android.gms.measurement.AppMeasurementService"
android:enabled="true"
android:exported="false" />
<service
android:name="com.google.android.gms.measurement.AppMeasurementJobService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.myApp.app" />
</intent-filter>
</receiver>
<!--
FirebaseInstanceIdService performs security checks at runtime,
no need for explicit permissions despite exported="true"
-->
<service
android:name="com.google.firebase.iid.FirebaseInstanceIdService"
android:exported="true" >
<intent-filter android:priority="-500" >
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<provider
android:name="com.google.firebase.provider.FirebaseInitProvider"
android:authorities="com.myApp.app.firebaseinitprovider"
android:exported="false"
android:initOrder="100" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
</manifest>

您可以执行meteor reset,它通常会修复这些问题。它所做的事情与删除.metreol/local文件夹相同。

我的.meteor/local文件夹上的文件出现问题,删除了它,删除并添加了android平台,现在它可以正确编译了。

相关内容

最新更新