今天Gradle升级了发现cordova项目报错了

转载自:https://blog.csdn.net/u014284625/article/details/79599312


今天Gradle升级了发现cordova项目报错了,如下


最后发现原来是因为android support library互相不兼容导致的,这些support library的版本不一致,导致项目中Crosswalk插件里面报了android:attr/fontVariationSettings not found等等这些错误,好了找到问题解决就快了:让这些support library强制统一版本就OK啦

在project中的build.gradle中放入

configurations.all {
resolutionStrategy {
    eachDependency { DependencyResolveDetails details ->
        if (details.requested.group == 'com.android.support') {
            details.useVersion "27.1.0"
        }
    }}}

然后cordova build android后发现


郁闷啊,怎么不支持armeabi-v7a了?后来推测肯定是Crosswalk通过productFlavors打成多个apk包方式了,也就是共享模式,这样可以缩小apk包的体积,缺点是要打出多个apk包,不同cpu架构的手机装最适合的apk包,但这样子很不方便,查下config.xml吧

咦?不对啊


crossalk设置的明明是embedded模式而不是共享模式啊,好吧最后查到app的module中的build.gradle里面

if (Boolean.valueOf(cdvBuildMultipleApks)) {
    flavorDimensions "default"

    productFlavors {
        armv7 {
            versionCode defaultConfig.versionCode*10 + 2
            ndk {
                abiFilters = ["armeabi-v7a"]
            }
        }
        arm64 {
            versionCode defaultConfig.versionCode*10 + 3
            ndk {
                abiFilters = ["arm64-v8a"]
            }
        }
        x86 {
            versionCode defaultConfig.versionCode*10 + 4
            ndk {
                abiFilters = ["x86"]
            }
        }
        x86_64 {
            versionCode defaultConfig.versionCode*10 + 5
            ndk {
                abiFilters = ["x86_64"]
            }
        }
    }
}

这段代码,说明cdvBuildMultipleApks肯定为true了,然后执行了上面这段代码,好吧那这样就去plugin里面改了:

创建一个.gradle文件,里面添加:ext.cdvBuildMultipleApks=false,保存,然后将该文件放至在platforms/android/cordova-plugin-crosswalk-webview里,我的目录里本来存在cordova-xwalk.gradle这个文件就直接把ext.cdvBuildMultipleApks=false添加在文件里面顶部就好了

最后cordova clean,然后重新编译下就好了


猜你喜欢

转载自blog.csdn.net/d_o_n_g2/article/details/80509680