Android Studio項目整合PullToRefresh的問題記錄


  PullToRefresh下拉刷新在App中應用非常頻繁,然而PullToRefresh是在ADT下開發完成的。如果要將其整合到Android Studio目錄下的話頗費周折。前面的文章“Android Studio項目引入外部庫注意事項(PullToRefresh)”介紹了如何將PullToRefresh的library引入到項目中。如果想直接運用PullToRefresh的例子的話還需要引入extras下的PullToRefreshListFragment和PullToRefreshViewPager兩個庫。

  然而,PullToRefreshListFragment和PullToRefreshViewPager兩個庫的引入卻大動干戈。其實問題不大,只是對Gradle不熟悉,折騰了好久才知道問題所在。記錄如下:

  1、包重復引入

Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\Program Files\Java\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 2

  將android-support-v4.jar包刪除以后又報如下異常:

D:\AndroidStudioProjects\AndoridNewsApp\PullToRefreshExtras\PullToRefreshListFragment\src\com\handmark\pulltorefresh\extras\listfragment\PullToRefreshBaseListFragment.java
Error:(19, 30) 錯誤: 程序包android.support.v4.app不存在
Error:(28, 106) 錯誤: 找不到符號
符號: 類 ListFragment
Error:(32, 2) 錯誤: 方法不會覆蓋或實現超類型的方法
Error:(34, 17) 錯誤: 找不到符號
符號:   變量 super
位置: 類 PullToRefreshBaseListFragment<T>
其中, T是類型變量:
T擴展已在類 PullToRefreshBaseListFragment中聲明的PullToRefreshBase<? extends AbsListView>

  解決辦法:

    a、將extras\PullToRefreshListFragment\libs下的android-support-v4.jar刪除

    b、添加包依賴( File --> project structure --> dependencies )

    也可以直接在extras\PullToRefreshListFragment\build.gradle中的dependencies下直接添加compile 'com.android.support:support-v4:23.0.1'

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':PullToRefresh')
    compile 'com.android.support:support-v4:23.0.1'
}

  2、最小sdk版本

Error:Execution failed for task ':PullToRefreshExtras:PullToRefreshListFragment:processDebugAndroidTestManifest'.
> java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 1 cannot be smaller than version 4 declared in library [AndoridNewsApp:PullToRefresh:unspecified] D:\AndroidStudioProjects\AndoridNewsApp\PullToRefreshExtras\PullToRefreshListFragment\build\intermediates\exploded-aar\AndoridNewsApp\PullToRefresh\unspecified\AndroidManifest.xml
    Suggestion: use tools:overrideLibrary="com.handmark.pulltorefresh.library" to force usage

  在extras\PullToRefreshListFragment\build.gradle中最小sdk版本設置

android {
    ......//其它配置

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
    }

    ......//其它配置
}

  最終extras\PullToRefreshListFragment\build.gradle如下:

apply plugin: 'com.android.library'
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['aidl']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':PullToRefresh')
    compile 'com.android.support:support-v4:23.0.1'
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM