Android Material和Appcompat Manifest合并在react-native或ExpoKit中失败

时间:2019-06-18 05:40:29

标签: android react-native react-native-android expo

我将'android.support:appcompat-v7'更新为<th>

但是它带来了构建错误。

$(function() {
    $(':checkbox').on('change', function() {
        var $checkbox = $(this);
        var state = $checkbox.prop('checked'); // true -> show, false -> hide

        // iterate all <th> referenced by <input data-target="">
        $($checkbox.data('target')).each(function() {
            var index = $(this).index(); // get its n-th position

           // iterate all rows, show/hide the n-th column
            $('table tr').each(function() {
                if (state) {
                    $(this).find('th:eq(' + index + ')').show();
                    $(this).find('td:eq(' + index + ')').show();
                } else {
                    $(this).find('th:eq(' + index + ')').hide();
                    $(this).find('td:eq(' + index + ')').hide();
                }
            });
        });
    });
});

然后我在Logcat中收到此错误:

  

清单合并失败

我的app.gradle:

28.0.0

我该如何解决?

我需要您的解决方案。

谢谢。

13 个答案:

答案 0 :(得分:49)

version 2.1.2升级到"services-gcm:+"为我解决了该错误。参见github.com/facebook/react-native/issues/25294#issuecomment-503024749

简而言之:该库使用{{1}}作为依赖项,而最新的gcm版本导致了此问题。

答案 1 :(得分:13)

根本原因是与向<?php $product_id = $wpdb->get_var("SELECT term_id FROM re_terms WHERE name = 'contract'"); echo $product_id; if ($product_id == '15'): ?> <div class="grid__medium-4 grid__columns grid__columns_mobile text-c buttons"> <a href="<?php echo get_site_url(); ?>/stockists"><span class="button_light">Find a stockist!!!!</span></a> <a href="<?php echo get_site_url(); ?>/brochure"><span class="button_light">Request a brochure</span></a> </div> <?php else: ?> <div class="grid__medium-4 grid__columns grid__columns_mobile text-c buttons"> <a href="<?php echo get_site_url(); ?>/stockists"><span class="button_light">Find a stockist</span></a> <a href="<?php echo get_site_url(); ?>/brochure"><span class="button_light">Request a brochure</span></a> </div> <?php endif ?> 的迁移有关,Google Play服务已更新为androidX 感谢MR03web这个问题属于react-native-device-info吗?最好的选择是使用

升级Accept: application / json
Androidx

,或者如果您不想升级,则应像这样从react-native-device-info中排除yarn upgrade react-native-device-info@2.1.2 cd android && gradlew clean react-native run-android 。谢谢

com.google.android.gms

答案 2 :(得分:7)

将以下内容添加到gradle.properties中,然后清理/重建

<div class="menu-item">Text</div>

答案 3 :(得分:5)

通过搜索@MehulSolanki答案,我找到了解决方案。

我添加

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

在我的AndroidManifest.xml

并更新com.android.tools.build:gradl:

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
  }

并将其添加到gradle.properties文件中

android.useAndroidX=true
android.enableJetifier=true
  

错误:[TAG]无法解析变量'$ {animal.sniffer.version}'

     

错误:[TAG]无法解析变量'$ {junit.version}'

出现上述错误

  1. 文件->使缓存无效/重新启动
  2. 构建->清理项目
  

错误:程序包android.support.annotation不存在   错误:找不到符号类可为空

出现上述错误

添加implementation 'androidx.annotation:annotation:1.1.0'

更改import android.support.annotation.Nullable; => androidx.annotation.Nullable;

更改import android.support.annotation.NonNull; => androidx.annotation.NonNull;

  

编译版本目标版本应为 28。

答案 4 :(得分:4)

'tools:replace="android:appComponentFactory"'标签内的AndroidManifest.xml中添加<application>

您的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="ru.chopcode.myapplication">

    <application
        tools:replace="android:appComponentFactory"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
   </application>

答案 5 :(得分:4)

降级Google Play服务版本。在android/app/build.gradle中更改

compile 'com.google.android.gms:play-services-<service_name>:+'

compile 'com.google.android.gms:play-services-<service_name>:16.0.0'

因此,在我的情况下, location。但是在其他情况下,它可能是任何其他Google Play服务(如此处列表中的http://www.androiddocs.com/google/play-services/setup.html)。

答案 6 :(得分:3)

在此问题上待了一整天之后。终于,我解决了这个问题。

我从react-native-device-info和react-native-fast-image库中得到了该错误。 我只是从package.json文件中删除该库,然后安装

“ react-native-device-info”:“ ^ 2.1.2”,   “ react-native-fast-image”:“ ^ 6.0.3” 最新版本

我使用了低于gradle版本的

classpath 'com.android.tools.build:gradle:3.3.1'

我使用了以下属性版本

distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

我使用了以下版本

buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"

答案 7 :(得分:2)

根据@Frank's的回答,该库使用services-gcm:+作为依赖项,而最新的gcm版本导致了此问题。

我在项目中使用了:react-native-admob。所以我只是在android/app/build.gradle

中更改了以下几行

发件人:

implementation project(':react-native-admob')

TO:

implementation(project(":react-native-admob"),  {
        exclude group: "com.google.android.gms"
})
implementation "com.google.android.gms:play-services-ads:16.0.0"

答案 8 :(得分:2)

This答案应该对大多数人有帮助。如果仍然不能解决该问题(不是很好)的方法是您在android studio中打开android项目。那应该获取所有gradle文件。在右侧,视图应为android。

enter image description here

从这里只需在Google Play服务或Firebase服务或任何此类库之前检查每个gradle构建文件是否有 + 标志。 this答案中也对此进行了说明。

之后,您可以按照上面的答案中的说明进行更改。 像这样

implementation(project(":react-native-admob"),  {
        exclude group: "com.google.android.gms"
})
implementation "com.google.android.gms:play-services-ads:16.0.0"

或者,如果库正在使用一个变量,或者提供了最后的选择,则可以提供一个变量。

我在这里输入它的原因是,让任何厌倦了这个错误的新手(突然间突然出现)都能有效地解决它,而不会死。大声笑。

答案 9 :(得分:1)

我遇到了同样的问题,只需升级struct并运行以下命令

react-native-device-info

答案 10 :(得分:1)

react-native-device-info升级到2.1.2版

答案 11 :(得分:1)

如果您没有使用react-native-device-info,但有相同的错误,则可能是项目中的另一个库。

使用它查找有问题的库:

cd your-react-native-project/android
./gradlew app:dependencies > deps.txt

然后检查deps.txt文件中的关键字“ androidx”。然后,您可以快速找到正在使用它的本机模块。

在我的情况下是react-native-camera,上面的解决方案虽然不错,但还不够,所以我必须将其添加到local.properties:

firebaseVersion=17.6.0
googlePlayServicesVersion=16.1.0
googlePlayServicesVisionVersion=16.2.0

编辑: 完成这些修复后,运行./gradlew app:dependencies > deps.txt并搜索“ androidx”不会返回任何结果-这就是我们所要的。

在项目上运行 clean 后,构建成功。

答案 12 :(得分:1)

Google Play服务带来了巨大的变化。参见Release Notes

解决此问题的简单方法是更改​​Google Play服务的版本。

将所有com.google.android.gms:play-services-*依赖项更改为版本16