在android update 3.4之前,我的应用程序运行正常,但是在android升级后,我的应用程序出现合并错误:
"Duplicate class android.support.v4.app.INotificationSideChannel"
android update 3.4
upgrade gradle 5.1.1
upgrade sdk
Error:
Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.graphics.drawable.IconCompatParcelizer found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar …Run Code Online (Sandbox Code Playgroud) 我有使用支持库版本27.1.2的Android App。我想使用一个使用Android X(api 28)编写的库。
库版本的名称间距几乎没有问题。
例子...
库中有一个我想与api一起使用的对话框
Dialog.show(androidx.fragment.app.FragmentActivity activity);
Run Code Online (Sandbox Code Playgroud)
但是我所有的活动都在使用
android.support.v4.app.FragmentActivity
Run Code Online (Sandbox Code Playgroud)
并且编译器不喜欢这样。
当前无法将我的项目升级到最新版本,因此,除非这是唯一的解决方案,否则请不要升级答案。
有没有解决此不兼容问题的方法?
提前致谢。
我有一个要升级到的Android项目AndroidX。但是,我使用的模块在尚未迁移到AndroidX的其他应用程序之间共享。我想避免分叉代码,而是在将项目的重置升级为使用AndroidX时更喜欢使用模块的支持库。
目前,我无法导入任何android.support.v7类。因此例如import android.support.v7.widget.AppCompatEditText;失败。
我试图还原build.gradle迁移工具在模块中所做的更改,但这不能防止编译问题。
但是在我gradle.properties还有:
android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud) 有人可以向我解释它们之间的区别,为什么它们不能互换?
导入 android.widget.Toolbar 会导致编译错误,而导入 android.support.v7.widget.Toolbar 可以正常工作。
这两个进口有什么区别?
import android.widget.Toolbar;
...
Toolbar toolbar = findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
import android.support.v7.widget.Toolbar;
...
Toolbar toolbar = findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud) 我再次回去工作以完成我的申请,但是当应用程序开始同步时,它给了我
无法解决:androidx 受影响的模块:href="openFile:D:/.android/Step View/Application/Source Code/app/build.gradle">app
我看到这样的问题,但它对我不起作用。对不起,我的英语不好。
这是我的等级。应用程序
buildscript {
repositories {
maven { url 'https://plugins.gradle.org/m2/' }
}
dependencies {
classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.11.0, 0.99.99]'
}
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
repositories {
maven {
url 'https://maven.google.com'
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.xcoder.stepview"
minSdkVersion 17
targetSdkVersion 28
multiDexEnabled true
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.connection_light.runner.AndroidJUnitRunner"
manifestPlaceholders = [
onesignal_app_id : '6a2c7692-81ec-4d12-b973-6b78f71f380e',
// Project number pulled from dashboard, local value is ignored.
onesignal_google_project_number: 'REMOTE'
]
}
buildTypes { …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用leakcanary 1.6.3查找内存泄漏,使用没有任何问题:
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'
Run Code Online (Sandbox Code Playgroud)
现在,我想将其更新为leakcanary 2.0 alpha 2使用:
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-alpha-2
Run Code Online (Sandbox Code Playgroud)
但是当我尝试构建项目时,它给了我manifest merger failed。
ERROR: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.1] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:10:5-50:19 to override.
Run Code Online (Sandbox Code Playgroud)
如何解决此错误?
更新:我正在android.support我的项目中使用库。
我在将 onTextChanged 添加到包含布局中的 TextInputEditText 时遇到问题。
有一个 base_edittext_view.xml 如下:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/colorPrimaryText"
android:background="@drawable/textinputlayout_background"
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">
<android.support.design.widget.TextInputEditText
android:id="@+id/edittextItem"
style="@style/TextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/input_border_bottom"
android:cursorVisible="true"
android:drawableEnd="@drawable/ic_user"
android:drawablePadding="@dimen/padding_medium"
android:gravity="center|left"
android:hint="@string/email"
android:inputType="textEmailAddress"
android:maxLength="50"
android:paddingBottom="@dimen/padding_medium"
android:paddingTop="@dimen/padding_medium"
android:paddingEnd="@dimen/padding_xlarge"
android:paddingStart="@dimen/padding_medium"
android:textColor="@color/edittext_text_color"
android:textColorHint="@color/edittext_hint_text_color"
android:textSize="@dimen/textsize_medium"
/>
<!---->
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
我想向包含 base_edittext_view.xml 的布局添加一个 onTextChanged 侦听器。
android:onTextChanged="@{(text, start, before, count) -> viewModel.onTextChanged(text)}"
Run Code Online (Sandbox Code Playgroud)
添加 onClick 以包含布局没有问题,但对于 onTextChanegd 我不知道如何实现它。
笔记:
<include
android:id="@+id/edittextEmail"
layout="@layout/edittext_email_base_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/padding_xxxxlarge"
/>
Run Code Online (Sandbox Code Playgroud) android android-layout android-databinding android-include addtextchangedlistener
我想在片段中添加一个带有 pagerview(可滚动)的选项卡。
public class MyFragment extends Fragment {
private FragmentTabHost tabHost;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
tabHost = new FragmentTabHost(getActivity());
tabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);
tabHost.addTab(tabHost.newTabSpec("one").setIndicator("One"), OneFragment.class, null);
tabHost.addTab(tabHost.newTabSpec("two").setIndicator("Two"), TwoFragment.class, null);
return tabHost;
}
@Override
public void onDestroyView(){
super.onDestroyView();
tabHost=null;
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/realtabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
Run Code Online (Sandbox Code Playgroud)
我尝试了几种解决方案,但都不起作用。我需要使用片段,而不是片段活动。编写的代码工作。
我正在使用以下内容RecyclerView:
<androidx.recyclerview.widget.RecyclerView ... />
Run Code Online (Sandbox Code Playgroud)
在以下方面具有以下依赖性build.gradle:
implementation 'androidx.recyclerview:recyclerview:1.0.0'
Run Code Online (Sandbox Code Playgroud)
点击android studio RecyclerViewin Design模式前面的下载按钮后下载。我运行我的应用程序Oreo,它运行完美。
但是,当我在上运行该应用程序时KitKat,该应用程序被终止,因此我注释掉了RecyclerView及其相关的源代码,然后再次运行该应用程序,这次应用程序在上正确运行KitKat,因此我意识到问题出RecyclerView在该KitKat版本。
现在我做了一些研究,发现我必须使用:
implementation 'com.android.support:recyclerview-v7:28.0.0'
Run Code Online (Sandbox Code Playgroud)
和以下xml标签:
<android.support.v7.widget.RecyclerView ... />
Run Code Online (Sandbox Code Playgroud)
现在我的问题是
<androidx.recyclerview.widget.RecyclerView ... />
implementation 'androidx.recyclerview:recyclerview:1.0.0'
Run Code Online (Sandbox Code Playgroud)
和
<android.support.v7.widget.RecyclerView ... />
implementation 'com.android.support:recyclerview-v7:28.0.0'
Run Code Online (Sandbox Code Playgroud)
哪一个是为哪个目的而创建的,哪个应该在哪种情况下使用?为什么android studio会下载不支持的版本,KitKat而不是下载几乎先前版本的android所支持的版本?谢谢!!!
android android-support-library android-recyclerview android-support-design
android ×9
java ×4
androidx ×3
build.gradle ×2
gradle ×2
fragment ×1
leakcanary ×1
pageviews ×1
scrollable ×1
tabs ×1