ionic3+我的ionic

Cordova@6.4.0以上灵活修改配置

2018-06-04  本文已影响50人  IT晴天

还记得我在此文【技巧】ionic3优雅解决启动前、后黑白屏问题中添加了一个勾子插件cordova-custom-config来修改配置的主题。

Cordova在6.4.0版本以后,增加了config-file和edit-config两个标签项,使得不需要再借用上述勾子插件即可修改配置,见文档

其中注意一下,config-file是用于添加配置项,而edit-config是用于编辑配置项的.

现在cordova默认添加都7.0以上了,而降级到6.4.0也能兼容旧项目,那尝试去掉勾子插件去把上述文章中的配置方式改一下。

打开config.xml,添加配置项:

<platform name="android">
     <edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application/activity[@android:name='MainActivity']">
            <activity android:theme="@style/WelcomeStyle" />
     </edit-config>
</platform>

然后执行命令看效果:

ionic cordova build android

此时会抛出异常:

cordova AAPT: error: unbound prefix

搜索之,首先找到此文:
https://stackoverflow.com/questions/21115471/android-phonegap-error-error-parsing-xml-unbound-prefix
里面回复的意思是,用到一个未知标签或属性时要先绑定一个前缀。如用到了<gap:plugin>,所以应该先绑定以下命名空间:

xmlns:gap="http://phonegap.com/ns/1.0"

为了验证这种想法,又搜索此文:
https://forum.ionicframework.com/t/cordova-ionic-cli-hooks-for-modifying-androidmanifest-xml-or-ios-plist-file/12293/20

看标题和我们的使用场景有点出入,但还是我常说的一句话——殊途同归,原理差不多,等找到此人 AshConnell 的回复,便尝试一下,在widget标签中添xmlns:android="http://schemas.android.com/apk/res/android",变成:

<widget xmlns:android="http://schemas.android.com/apk/res/android"> 

再跑一次命令ionic cordova build android,没有错误,能正常生成。此时打开platform/android/AndroidManifest.xml 文件观察下效果:

    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@style/WelcomeStyle" 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>

发现正确合并替换主题theme,至此大功告成。

总结:为什么要引入xmlns:android这个命名空间前缀,是因为config.xml里面用到了这句<activity android:theme="@style/WelcomeStyle" />,不加入无法识别。

上一篇下一篇

猜你喜欢

热点阅读