我正在处理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) {
^
任何帮助将不胜感激。谢谢
答案 0 :(得分:3)
由于您的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的后继产品。
请注意,latest versions of Play Services & Firebase libraries现在使用AndroidX。
许多现有的插件(例如cordova-plugin-firebase)都使用了支持库。
要解决此问题,请在Cordova项目中添加以下两个插件:
有关测试项目中此示例的工作示例,请参见my comment on this Github issue。
注意:如果您使用的是cordova-plugin-firebase并且遇到错误,则可以改用cordova-plugin-firebasex
发布的my fork of that plugin来解决引起的问题由新的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