【问题标题】:Ionic android build error after migrating to androidx迁移到 androidx 后 Ionic android 构建错误
【发布时间】:2019-11-02 00:43:23
【问题描述】:

我正在开发一个 ionic 3 项目。由于突然的构建问题,我不得不迁移到 androidx。我用 cordova-android@8.0.0 版本创建了 android 平台,我做了必要的但现在我在构建 android 平台时遇到了一些其他错误

我用cordova-android 8.0.0版创建了android平台。

在 gradle.properties 文件中添加以下行

android.useAndroidX=true android.enableJetifier=true

将插件更新到最新版本

这是我的 project.properties 文件

target=android-28
android.library.reference.1=CordovaLib
android.library.reference.2=app
cordova.gradle.include.2=cordova-plugin-appsflyer-sdk/userapp-cordovaAF.gradle
cordova.system.library.1=com.facebook.android:facebook-android-sdk:4.40.0
cordova.gradle.include.3=cordova-plugin-firebase/userapp-build.gradle
cordova.system.library.2=com.google.android.gms:play-services-tagmanager:+
cordova.system.library.10=com.google.firebase:firebase-core:17.0.0
cordova.system.library.11=com.google.firebase:firebase-messaging:19.0.0
cordova.system.library.12=com.google.firebase:firebase-config:18.0.0
cordova.system.library.13=com.google.firebase:firebase-perf:18.0.0
cordova.gradle.include.4=cordova-plugin-googlemaps/userapp-tbxml-android.gradle
cordova.gradle.include.5=cordova-plugin-googlemaps/userapp-apikey.gradle
cordova.system.library.7=com.google.android.gms:play-services-maps:15.0.1
cordova.system.library.8=com.google.android.gms:play-services-location:15.0.1
cordova.system.library.9=com.android.support:support-core-utils:27.+
cordova.system.library.10=com.mixpanel.android:mixpanel-android:5.6.0
cordova.system.library.11=com.google.android.gms:play-services-base:+
cordova.system.library.14=com.android.support:support-v4:28.+
cordova.system.library.15=com.android.support:appcompat-v7:28.+
cordova.system.library.3=com.android.support:support-v4:28.+
cordova.system.library.4=com.android.support:appcompat-v7:28.+

当我现在构建项目时,我遇到了下面提到的错误

error: cannot find symbol
import android.support.v4.app.ActivityCompat;
                             ^
 cannot find symbol
import android.support.v4.os.EnvironmentCompat;

error: cannot find symbol
          public void onConnectionFailed(@NonNull ConnectionResult result) {
                                          ^

任何帮助将不胜感激。谢谢

【问题讨论】:

  • project.properties 仍然引用com.android.support。这有意义吗?
  • 当我把它改成这个 `cordova.system.library.9=androidx:support-core-utils:27.+ cordova.system.library.14=androidx:support-v4:28. + cordova.system.library.15=androidx:appcompat-v7:28.+ `我低于错误`找不到任何匹配的 androidx:support-v4:28.+ 因为没有可用的 androidx:support-v4 版本.找不到 androidx:appcompat-v7:28.+ 的任何匹配项,因为没有可用的 androidx:appcompat-v7 版本。 `

标签: android cordova ionic-framework ionic3 cordova-android


【解决方案1】:

出现错误是因为您的 Android 项目包含引用 Android 支持库的 Java 源代码(可能是 Cordova 插件的形式),但您在项目中启用了 AndroidX。
AndroidX 和 Android 支持库不能同时存在于同一个 Android 项目中 - 这样做会导致诸如此类的构建失败。
从您的 project.properties 可以看出,支持库作为 Gradle 依赖项被拉入(例如 cordova.system.library.3=com.android.support:support-v4:28.+)。

AndroidX (Jetpack) 是Android Support Library 的继承者。
请注意,AndroidX 现在由latest versions of Play Services & Firebase libraries 使用。
支持库被许多现有插件使用,例如cordova-plugin-firebase

要解决此问题,请在您的 Cordova 项目中添加以下两个插件:

有关测试项目中的工作示例,请参阅my comment on this Github issue

注意:如果您使用cordova-plugin-firebase 并遇到错误,您可以改用my fork of that plugin,它以cordova-plugin-firebasex 发布,已修复以解决新的Firebase SDK 引起的问题。以下是最安全的迁移方式:

rm -Rf platforms/android
cordova plugin rm cordova-plugin-firebase
rm -Rf plugins/ node_modules/
npm install
cordova plugin add cordova-plugin-firebasex
cordova platform add android

【讨论】:

  • 感谢您的解决方案。我按照您提到的步骤操作,上面提到的那些错误都消失了。但我收到错误cannot find symbol import com.google.firebase.iid.FirebaseInstanceIdService;
  • 我删除了 firebase 插件,现在它构建良好.. 但我也需要 firebase 插件。但它给了我错误annot find symbol import com.google.firebase.iid.FirebaseInstanceIdService; 可能是什么原因?
  • cordova-plugin-firebase 对于 Firebase SDK 中的最新更改已过时(该类已被删除)。您可以直接从已修复该问题的my fork 安装。
  • 我正在尝试通过像这样<plugin name="cordova-plugin-firebase" spec="https://github.com/dpa99c/cordova-plugin-firebase.git" /> 将它添加到 config.xml 来安装你的 fork,但它卡在了这个 Discovered plugin "cordova-plugin-firebase" in config.xml. Adding it to the project
  • 谢谢 Dave,因为我被屏蔽了 2 天,并且使用了你的 cordova 插件,现在它可以工作了,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多