将结构依赖项添加到cordova构建的android项目中的问题
您好我正在将我的cordova / phonegap应用程序的
android部分从ant迁移到gradle,我正在尝试添加结构SDK.
在cordova项目中,build.gradle似乎是自动生成的,所有更改都应该添加到build-extras.gradle中.如何在buildscript块中添加其他依赖项? 这是面料的内容应该在build.gradle中看起来的样子,如果我把它放在这里它会起作用,但它会被覆盖. buildscript { repositories { mavenCentral() // this line needs to be added maven { url 'https://maven.fabric.io/public' } } // this block needs to be added dependencies { classpath 'io.fabric.tools:gradle:1.+' } } 如果我在build-extras.gradle中添加此块,Groovy会抱怨
但是如果我将它添加到build.gradle中,它可能会被覆盖并且不会被添加到我的同事构建中(文件顶部有一个警告,它不应该被编辑). 我的build-extras.gradle buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.+' } } android { dependencies { compile('com.facebook.android:facebook-android-sdk:3.21.1') { exclude module: 'support-v4' } compile 'com.google.android.gms:play-services:7.5.0' } // dexOptions { // preDexLibraries = false // } } apply plugin: 'io.fabric' repositories { jcenter() maven { url 'https://maven.fabric.io/public' } } dependencies { // Crashlytics Kit compile('com.crashlytics.sdk.android:crashlytics:2.3.2@aar') { transitive = true } } 我对Gradle很新…在build.gradle中有这条线……也许它可以帮助我? // Allow plugins to declare Maven dependencies via build-extras.gradle. repositories { mavenCentral() }
为了解决这个问题,我目前正在使用一个before_build cordova钩子,它覆盖build.gradle和我的MainActivity.java,我自己的自定义版本存储在我的cordova项目存储库的非平台文件夹中.
修改后的MainActivity.java在loadUrl(launchUrl)之后添加了这个额外的行; Fabric.with(this,new Crashlytics()); 这是Cordova钩子. /hooks/before_build/addGradleExtras.sh #!/bin/sh if [ -d "platforms/android" ]; then echo "copying extra gradle configuration to android directory" cp resources/build-extras.gradle platforms/android/build-extras.gradle echo "OVERWRITING GENERATED build.gradle IN PROJECT,AS LONG AS WE DO NOT FIND A BETTER WAY" cp resources/build.gradle platforms/android/build.gradle echo "Adding fabric.properties file" cp resources/fabric.properties platforms/android/fabric.properties echo "Overwriting mainactivity with our changes" cp resources/MainActivity.java platforms/android/src/com/updatemi/app2/MainActivity.java 在build.gradle中,您只需要在buildscript之后添加它{ repositories { mavenCentral() maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.+' } 在build-extras.gradle中,在最后的依赖项块中 compile('com.crashlytics.sdk.android:crashlytics:2.3.2@aar') { transitive = true } 这不是最终的解决方案,只是一种非常黑客的方式才能使其发挥作用.它可能会破坏cordova更新. 如果我找到更好的解决方案,我会再次回答.如果您有Linux,并且可能有Mac系统,则此bash脚本将起作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |