Pau*_*ber 6 android gradle cordova twitter-fabric
您好我正在将我的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.+'
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在build-extras.gradle中添加此块,Groovy会抱怨
无法应用插件[id'io.fabric']未找到ID为'io.fabric'的插件.
但是如果我将它添加到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
}
}
Run Code Online (Sandbox Code Playgroud)
我对Gradle很新...在build.gradle中有这条线......也许它可以帮助我?
// Allow plugins to declare Maven dependencies via build-extras.gradle.
repositories {
mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我目前正在使用 before_build cordova 钩子,它使用存储在我的 cordova 项目存储库中的非平台文件夹中的我自己的自定义版本覆盖 build.gradle 和我的 MainActivity.java 。
修改后的 MainActivity.java 只是在 loadUrl(launchUrl); 之后添加了这一行额外的代码
Fabric.with(this, new Crashlytics());
Run Code Online (Sandbox Code Playgroud)
这是科尔多瓦钩子。
/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
Run Code Online (Sandbox Code Playgroud)
在 build.gradle 中,您只需在 buildscript { 之后添加此内容即可
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
Run Code Online (Sandbox Code Playgroud)
在 build-extras.gradle 的最后一个依赖项块中
compile('com.crashlytics.sdk.android:crashlytics:2.3.2@aar') {
transitive = true
}
Run Code Online (Sandbox Code Playgroud)
这不是最终的解决方案,只是一种非常简单的方法来使其发挥作用。它可能会在科尔多瓦更新时中断。
如果我找到更好的解决方案,我会再次回答。如果您有 Linux,也许您有 Mac 系统,这个 bash 脚本就可以工作。
| 归档时间: |
|
| 查看次数: |
1672 次 |
| 最近记录: |