Cordova Camera Ошибка в выпуске, но не в отладке - PullRequest
0 голосов
/ 19 сентября 2018

Я делаю приложение для Cordova, для которого требуется плагин Cordova Camera И плагин Cordova MFP.В режиме отладки у меня камера работает просто отлично.Однако после того, как я собрал релизную версию приложения, камера перестала работать, и я каждый раз получал сообщение об ошибке.Я использую Cordova версии 6.5.0, а установленная платформа Android - версия 6.3.0.Я хотел бы также упомянуть, что я в основном ничего не делал, включая изменение предоставленного мне кода Java.Все, что я сделал, было чисто JS.

Как ни странно, камера приложения прекрасно работает в выпуске, когда МФУ не установлена.Таким образом, всякий раз, когда я делаю «плагин Cordova добавить Cordova-плагин-MFP» камера как-то сломается только в версии выпуска.Это ошибка, которую я получаю:

attempt to invoke virtual method android.content.res.XMLResourceParser android.content.pm.PackageItemInfo.loadXmlMetaData(android.content.pm.Packagemanager, java.lang.String) on a null object

Вот список моих плагинов:

cordova-plugin-camera 4.0.3 "Camera"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-dialogs 2.0.1 "Notification"
cordova-plugin-globalization 1.11.0 "Globalization"
cordova-plugin-mfp 8.0.2018090311 "IBM MobileFirst Platform Foundation"
cordova-plugin-network-information 2.0.1 "Network Information"
cordova-plugin-okhttp 2.0.0 "OkHttp"
cordova-plugin-spinner 1.1.0 "Spinner Plugin"
cordova-plugin-whitelist 1.3.3 "Whitelist"

Мой файл AndroidManifest был воспроизведен, потому что я пытался следоватьрешения, которые я нашел в Интернете.Вот мой файл AndroidManifest:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
    <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.CAMERA" />
    <application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:name="com.ibm.MFPApplication" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" 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>
        <provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/camera_provider_paths" />
        </provider>
        <activity android:name="com.worklight.wlclient.ui.UIActivity" />
        <provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="org.apache.cordova.camera.FileProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/camera_provider_paths" />
        </provider>
    </application>
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
    <uses-permission android:name="android.permission.STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

Вот почти весь мой файл config.xml, я не могу поделиться с ним верхом, но могу поделиться 95%:

    <plugin name="cordova-plugin-whitelist" spec="1" />
    <plugin name="cordova-plugin-dialogs" />
    <plugin name="cordova-plugin-camera" />
    <plugin name="cordova-plugin-spinner" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <preference name="loadUrlTimeoutValue" value="700000" />
        <allow-intent href="market:*" />
        <icon src="res/icon/android/icon-96-xhdpi.png" />
        <icon density="ldpi" src="res/icon/android/icon-36-ldpi.png" />
        <icon density="mdpi" src="res/icon/android/icon-48-mdpi.png" />
        <icon density="hdpi" src="res/icon/android/icon-72-hdpi.png" />
        <icon density="xhdpi" src="res/icon/android/icon-96-xhdpi.png" />
        <icon density="xxhdpi" src="res/icon/android/icon-144-xxhdpi.png" />
        <icon density="xxxhdpi" src="res/icon/android/icon-192-xxxhdpi.png" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
    <mfp:android>
        <mfp:sdkChecksum>3198985637</mfp:sdkChecksum>
        <mfp:appChecksum>0</mfp:appChecksum>
        <mfp:security>
            <mfp:testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3" />
        </mfp:security>
    </mfp:android>
    <mfp:ios>
        <mfp:sdkChecksum>0</mfp:sdkChecksum>
        <mfp:appChecksum>0</mfp:appChecksum>
        <mfp:security>
            <mfp:testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3" />
        </mfp:security>
    </mfp:ios>
    <mfp:windows>
        <mfp:windows8>
            <mfp:sdkChecksum>0</mfp:sdkChecksum>
            <mfp:security>
                <mfp:testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3" />
            </mfp:security>
        </mfp:windows8>
        <mfp:windowsphone8>
            <mfp:sdkChecksum>0</mfp:sdkChecksum>
            <mfp:security>
                <mfp:testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3" />
            </mfp:security>
        </mfp:windowsphone8>
        <mfp:windows10>
            <mfp:sdkChecksum>0</mfp:sdkChecksum>
            <mfp:security>
                <mfp:testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3" />
            </mfp:security>
        </mfp:windows10>
        <mfp:appChecksum>0</mfp:appChecksum>
    </mfp:windows>
    <mfp:platformVersion>8.0.0.00-20180903-073102</mfp:platformVersion>
    <mfp:clientCustomInit enabled="false" />
    <mfp:server runtime="mfp" url="http://10.0.0.1:9080" />
    <mfp:directUpdateAuthenticityPublicKey />
    <mfp:languagePreferences>en</mfp:languagePreferences>

Я начинаю сходить с ума из-за этого.Пожалуйста, помогите мне.Должна быть какая-то ошибка с флагами отладки, mfp и камерой, и я не знаю, как это исправить.

1 Ответ

0 голосов
/ 22 апреля 2019

Удалите плагин

cordova-plugin-mfp

Затем добавьте плагин камеры, затем снова добавьте плагин mfp .

Теперь все должно работать правильно.

...