精华内容
下载资源
问答
  • 什么你配置不好support.v7库 其实搜索android.support.v7的配置,百度上会出来很多回答。但是按照教程上面走了,其实也配置不好support.v7库。这什么呢?其实不一定教程错,也不一定你跟错,而是教程太老...

    为什么你配置不好support.v7库

    其实搜索android.support.v7的配置,百度上会出来很多回答。但是按照教程上面走了,其实也配置不好support.v7库。这是为什么呢?其实不一定是教程错,也不一定是你跟错,而是教程太老了,和你的Android Studio版本相差太大。
    现在(我写博客的日期是2020.3.1)Android Studio是默认使用androix的,引起导入support.v7库不起作用的根本原因是下面这两句话,但是现在很多博客根本没有提到这点。要配置support.v7库,必须将其注释(配置support.v7完整过程请往后看):
    在这里插入图片描述
    下面我们介绍两种遇到support.v7库报错的解决方法吧。

    佛系做法——直接使用androidx

    我们遇到support.v7库的情况通常分为两种:

    1. 在github之类的地方拷下来了别人的整个工程,其中包含support.v7库。这种情况直接打开工程等待项目Sync完成就行了(注意要联网,联网后Android Studio会帮我们自动下载很多需要的依赖)。
    2. 在教程、书本中读到和support.v7库相关的程序片段。这个其实也好办,直接把对应的support.v7库中的内容换成androidx中对应的内容就行了。具体的替换方法:
    • Java代码中,删除所有与v7相关的import项,然后四处Alt + Enter, 系统会给你自动androix中对应的import项。比如,删除本行:

      import android.support.v7.app.AppCompatActivity;
      

      Alt + Enter后系统会加上:

      import androidx.appcompat.app.AppCompatActivity;
      
    • xml代码中,也是同样的方法,替换。直接删除原有控件名称,再输入时,系统就会自动提示androidx中对应的控件。比如,我将support.v7库中的Toolbar控件直接粘贴到使用androidx的项目中,控件是灰色的,说明不能用。
      在这里插入图片描述
      删除原有的控件名(android.support.v7.widget.Toolbar),输入Toolbar,直接Enter选择系统提供的Toolbar控件。
      在这里插入图片描述
      变白了,说明现在的控件是正确的,得到了替换。
      在这里插入图片描述
      强烈推荐直接使用androidx中的控件替换v7库中的控件,反正v7有的anroidx都有,而且v7库已经比较老了。。。不过如果你一定要配置好v7库的话,那么请往下看吧。

    注意:support.v7库中的控件所用函数会和androidx中稍有不同。

    折腾做法——support.v7库的配置

    我使用的Android Studio版本如图所示,最个版本的已经默认使用androidx中的控件了。下面我们来禁用androidx,配置support.v7。
    在这里插入图片描述

    1. 首先新建一个项目,这里就叫做TestSupportV7吧。在这里插入图片描述
    2. 尝试在项目中import android.support.v7相关的库,失败,这个时候可以看到是不行的。
      在这里插入图片描述
    3. 找到app目录下的build.gradle,替换dependencies{}中的内容。
      在这里插入图片描述
      原始的dependencies{}中有很多和androidx相关的内容,我们将其删掉:
      在这里插入图片描述
      用下面的内容替换:(顺带提一下,大家在网上可能会看到有用compile而不是implementation的,这可能是早期的设置,现在没有用compile的了)
    	implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    

    替换后内容如下,记得点击“Sync Now”更新依赖。
    在这里插入图片描述
    4. 这时候会发现support.v7库那一行标红。这是因为support.v7库能够支持的最高的sdkVersion为28,而我们现在项目中的是29。将build.gradle中android{}标签中的29都换成28即可。
    在这里插入图片描述
    5. 很多教程进行到上一步就停止了,但是我们尝试在Activity中导入support.v7库,系统仍然不会有自动提示,说明实际上配置没有成功。
    在这里插入图片描述
    6. 这时候就用到我们一开始说的能够根本原因——现在的Android Studio是默认使用androidx的,我们需要将androidx禁用才可以是使用v7库。打开gradle.properties,并注释下面两句话即可达到目的。
    gradle.properties在项目的位置
    在这里插入图片描述
    最后Sync Now:
    需要注释的两句话
    7. 尝试导入v7库,成功。这时其实v7库的导入已经成功了。
    在这里插入图片描述
    在这里插入图片描述
    8. 最后删除项目中一些标红的、和androidx有关的部分即可。
    这里有个比较隐蔽的错误,ConstrainLayout也是与androidx有关的控件,我们前面设置dependencies已经把他的依赖删除了,所以下图中界面呈现灰色(不可用),需要换成别的控件。否则即使没报错也会出错。
    在这里插入图片描述
    可以把最外层控件换成LinearLayout或者别的;下面打x的是ConstrainLayout中的特有属性,不报错,但是也需要删除:
    在这里插入图片描述
    10. 删完和androix相关的那些我们就可以运行程序啦:
    在这里插入图片描述
    最后分享一下自己之前用support.v7库的时候的一些dependencies设置吧。并非必须的设置,加进去用support.v7库写界面会比较方便。当然我们也说了,现在当然推荐默认的androidx啦。

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test.ext:junit:1.1.1'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
        implementation 'com.android.support:design:28.0.0'
        implementation 'de.hdodenhof:circleimageview:3.1.0'
        implementation 'com.android.support:recyclerview-v7:28.0.0'
        implementation 'com.android.support:cardview-v7:28.0.0'
        implementation 'com.github.bumptech.glide:glide:3.7.0'
    }
    
    展开全文
  • Android Support V4, V7, V13是什么? 本质上就是三个java library。 为什么要有support? 如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support。 三个...

    Android Support V4, V7, V13是什么?

    本质上就是三个java library。


    为什么要有support库?

    如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support库。


    三个Support 库的区别和作用是什么?

    • Android Support v4

    v4是最早(2011年4月份)实现的库。用在Android1.6 (API lever 4)或者更高版本之上。它包含了相对V4, V13大的多的功能。
    例如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabAtrip,Loader,FileProvider 等。
    详细API 参考 http://developer.android.com/reference/android/support/v4/app/package-summary.html

    • Android Support v7

    这个包是为了考虑Android2.1(API level 7) 及以上版本而设计的,但是v7是要依赖v4这个包的,也就是如果要使用,两个包得同时被引用。v7支持了Action Bar。

    • Android Support v13

    这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。


    如何使用?

    首先要保证Android Support Library 被安装

    然后在工程中增加(例如 support-v4 Library)

    在ADT中需要按照以下步骤:
    1、右击当前工程,查找Properties
    2、选择Java Build Path
    3、选择Libraries tab,点击右边面板的Add External JARs按钮
    4、选择android-support-v4.jar文件,这一文件的常见路径为:YOUR_DRIVE\android-sdks\extras\android\support\v4\android-support-v4.jar

    5、完成添加后,选择Order and Export标签,确认即可。


    内容补充

    • support-v4

    在 support-v4包中,它所拥有的类还是很多的,主要包含了对应用组件的支持,用户交互体验的一些工具类,一些数据网络方面的工具类。

    1.系统组件部分

    Fragment:其实 Fragment 是直到 Android3.0才正式进入 Android 框架体系的,但是 Android 为了低版本的兼容,因此他帮我们在低版本也适配了 Fragment 框架

    NotificationCompat:这是通知栏的一些适配,可以帮助你在低版本的通知栏显示更加丰富的信息

    LocalBroadcastManager:这个是用于本地广播通知的,当你希望发送的通知只被本应用接收时,你就应该使用它

    2.用户界面交互部分

    ViewPager,这个相信我不用怎么说了,他主要用于帮助我们进行界面间的滑动交互

    PagerTitleStrip,PagerTabStrip 这两个算是 ViewPager 的帮助类吧,他们的作用是进行 Tab 栏的切换辅助显示

    DrawerLayout,主要用于侧滑栏的实现

    SlidingPaneLayout,这个类也是用于侧滑栏的实现,和 DrawerLayout 不同的是,DrawerLayout 侧滑栏出来的时候,默认是覆盖在当前页面上,而 SlidingPaneLayout 则是会将当前页面移走。

    3. Accessbility访问的帮助类

    ExploreByTouchHelper,帮助自定义 View 实现 Accessibility 的工具类

    AccessbilityEventCompat, AccessbilityNodeInfoCompat, AccessbilityNodeProviderCompat, AccessbilityDelegateCompat,这几个都是用作 Accessibility 功能适配的类

    4.数据访问帮助类

    Loader,主要用于异步加载数据

    FileProvider,提供应用间的文件分享功能

     

    • support-v7

    1.Appcompat

    这个包的主要作用是为了在低版本实现 Android 的 Holo 风格界面而引入的,与之类似的有一个开源项目叫做 SherlockActionbar

    2.CardView

    卡片布局是最近在 android5.0发布的时候才引入的新包,在我看来,他主要效果是让应用进行卡片花显示

    3.GridLayout

    网格布局能够帮助你将整个布局按照一格两格的格子形式进行排列

    4.MediaRouter

    这个布局主要是用来支持 GoogleCast 的,主要用于进行设备间的音频,视频交换显示

    5.Palette

    这个包也是最新出来的,他的作用是帮助 Android 实现他的 MaterialDesign,让你的 Actionbar 能够根据界面进行对应的颜色改变

    7.RecyclerView

    这个包同样也是刚出来的,他的作用是替换 ListView 和 GridView,但是可惜是没有实现 OnItemClick 这些接口,你需要自己处理它

     

    • support-v8

    support-v8中其实只有一格特性,就是用来渲染脚本

     

    • support-v13

    这个包的作用主要是为 Android3.2级以上的系统提供更多地 Framgnet 特性支持,使用它的原因在于,android-support-v4包中虽然也对 Fragment 做了支持,由于要兼容低版本,导致他是自行实现的 Fragment 效果,在高版本的 Fragment 的一些特性丢失了,而对于 v13以上的 sdk 版本,我们可以使用更加有效,特性更多的代码

     

    • support-v17

    这个包得主要作用是用于支持电视设备,并为电视设备提供了很多组件

    例如下面的:

    BrowseFragment, DetailFragment, PlaybasckOverlayFragment, SearchFragment

    展开全文
  • 网上冲浪了好久,都没找到有人解释什么时候需要加入这些,什么时候不需要,都是在说armeabi,armeabi-v7a和x86这些兼容。...现在问题是什么时候需要加入这些什么时候不需要。</p>
  • 原来appcompat_v7是Google自己的一个兼容包,就是一个支持,能让2.1以上全使用上4.0版本的界面。下面就让笔者带你慢慢走近这个问题并解决它。 你会发现项目创建好后,workspace栏里除了我们创建的...

    做Android开发的朋友最近会发现,更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容。并且是创建一个新的内容就会出现。这到底是怎么回事呢?原来appcompat_v7是Google自己的一个兼容包,就是一个支持库,能让2.1以上全使用上4.0版本的界面。下面就让笔者带你慢慢走近这个问题并解决它。

    你会发现项目创建好后,workspace栏里除了我们创建的“test”项目,还多了一个名为“appcompat_v7”的包,而且这个包显示有错误(红色x号),而“test”包显示一个红色的感叹号。

     

    解决办法:如果你依旧对appcompat_v7包耿耿于怀,我告诉你一个建项目时不出现appcompat_v7包的方法。既然appcompat_v7包是一个能让2.1以上全使用上4.0版本的界面的支持库,那么如图所示,我们建项目时直接把最小SDK选在Android4.0以上不就不需要这个支持库了吗?结果证明我们的想法是对的。

    转载于:https://www.cnblogs.com/efreer/p/3722154.html

    展开全文
  • 原来appcompat_v7是Google自己的一个兼容包,就是一个支持,能让2.1以上全使用上4.0版本的界面。下面就让笔者带你慢慢走近这个问题并解决它。 你会发现项目创建好后,workspace栏里除了我们创

    做Android开发的朋友最近会发现,更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容。并且是创建一个新的内容就会出现。这到底是怎么回事呢?原来appcompat_v7是Google自己的一个兼容包,就是一个支持库,能让2.1以上全使用上4.0版本的界面。下面就让笔者带你慢慢走近这个问题并解决它。

    你会发现项目创建好后,workspace栏里除了我们创建的“test”项目,还多了一个名为“appcompat_v7”的包,而且这个包显示有错误(红色x号),而“test”包显示一个红色的感叹号。

     

    解决办法:如果你依旧对appcompat_v7包耿耿于怀,我告诉你一个建项目时不出现appcompat_v7包的方法。既然appcompat_v7包是一个能让2.1以上全使用上4.0版本的界面的支持库,那么如图所示,我们建项目时直接把最小SDK选在Android4.0以上不就不需要这个支持库了吗?结果证明我们的想法是对的。

    展开全文
  • ABI的概念: ABI(ApplicationBinaryInterface)实际就是指应用程序基于哪种指令集来进行编译,能用到的ABI也就四种armeabi,armeabi-v7a ,x86和mips,前两者最常见的。其次这4个编译选项的含义:1.‘armeabi’ ...
  • 在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了...那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢?  armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips
  • 不知从什么时候开始,总是会时不时听到AndroidX这个名词,这难道又是什么新出技术吗?相信有很多朋友也会存在这样的疑惑,那么今天我就来写一篇科普文章,向大家介绍AndroidX的前世今生。 Android系统在刚刚面世...
  • 1.在Android APK的根目录有一个 libs文件夹(一般会有,但最新版的studio好像没有),此文件夹下包含了armeabi 和armeabi-v7a两个文件夹,我们的c代码编译成的本地(各种.so)就会放在这两个文件夹其中的一个。...
  • 因为原项目应用的都v4v7包,谷歌改成androidx后就升级了一番,首先在properties文件 然后在菜单里点击升级,studio会帮你把报名什么的都改掉 打开项目,发现都自动改掉了,完美,然而做为一个android开发,我怀疑...
  • armeabi 和armeabi-v7a

    2016-08-15 15:59:12
    ABI=Application Binary Interface 在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了armeabi 和armeabi...那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢? armeabi和armeabi-v7a是表示cpu的类型
  • armeabi-v7a 与 armeabi

    2019-09-13 06:56:05
    在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了armeabi 和armeabi-v7a两个文件夹,我们的c代码编译成的本地(各种.so)就会放在这...那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢? ar...
  • 前言  Google提供了Android Support Library package 系列的包来保证来高版本sdk开发的向下兼容性,即...我们常见的Android Support V4, V7, V13是什么呢?其实本质上就是三个java library。为什么要用support呢...
  • 关于Android中 appcompat_v7 介绍

    千次阅读 2014-11-24 15:20:31
    亲们,更新ADT至22.6.0版本之后,创建新...下面让我来给你介绍一下appcompat_v7 到底是什么东东。appcompat_v7是Google自己的一个兼容包,就是一个支持,能让2.1以上全使用上4.0版本的界面。对开发是没有没有影响的。
  • armeabi和armeabi-v7a

    2015-01-08 18:43:34
    在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了...那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢?  armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips
  • armeabi与armeabi-v7a

    千次阅读 2014-12-25 15:32:38
    在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了...那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢?  armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips
  • 1, Android Support V4, V7, V13是什么?本质上就是三个java library。2, 为什么要有support?如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support3, 三个...
  • ABI=Application Binary Interface在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了armeabi 和...那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢?armeabi和armeabi-v7a是表示cpu的类型,我们知...
  • 在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了...那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢?  armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips
  • 我在armeabi下增加了百度的: libBaiduMapSDK_v2_4_1.so 可是却报错说找不到。我发如今libs下还有另外一个目录...那这两个目录有什么差别呢? 经过一番查找,发现大概这种 : armeabi通用性强,但速度慢...
  • 1, Android Support V4, V7, V13是什么? 本质上就是三个java library。 2, 为什么要有support? 如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support。...
  • 在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了...那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢?  armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mi

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 179
精华内容 71
关键字:

v7库是什么