gpt4 book ai didi

android - 将结构依赖项添加到 cordova build android 项目的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:09:51 25 4
gpt4 key购买 nike

你好,我目前正在将我的 cordova/phonegap 应用程序的 android 部分从 ant 迁移到 gradle,我正在尝试添加 fabric SDK。

在 cordova 项目中,build.gradle 似乎是自动生成的,所有更改都应添加到 build-extras.gradle 中。如何在 buildscript block 中添加其他依赖项?

这就是 fabric 的东西在 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 中添加这个 block ,Groovy 会提示

Failed to apply plugin [id 'io.fabric'] Plugin with id 'io.fabric' not found.

但如果我将它添加到 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 Hook ,它覆盖了 build.gradle 和我的 MainActivity.java,我自己的自定义版本存储在我的 cordova 项目存储库的非平台文件夹中。

修改后的 MainActivity.java 只是在 loadUrl(launchUrl) 之后添加了这一行;

Fabric.with(this, new Crashlytics());

这是 Cordova 钩子(Hook)。

/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 中,在最后一个依赖 block 中

    compile('com.crashlytics.sdk.android:crashlytics:2.3.2@aar') {
transitive = true
}

这不是最终的解决方案,只是一种使它起作用的非常 hacky 的方法。它可能会在 cordova 更新时中断。

如果我找到更好的解决方案,我会再次回答。如果您使用的是 Linux,或者您使用的是 Mac 系统,则此 bash 脚本可以正常工作。

关于android - 将结构依赖项添加到 cordova build android 项目的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30850523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com