2016-09-15 43 views
35

我的團隊和我開發了Android應用程序,並決定了所有應遵循的編碼準則。因此,我開始實現自定義規則皮棉按以下鏈接:在android中定製自定義庫文件

說我有實際上是在一個項目上實施這些規則皮棉的問題基礎。當我運行./gradlew clean build test install時,按照規定適用規則並且一切正常。但是,當我用./gradlew aarWrapper:assemble構建aar庫並將其添加到我的libs文件夾時,linting不起作用。

添加以下到我的build.gradle文件添加庫

repositories { 
    flatDir { 
      dirs 'libs' 
     } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile(name: 'aarWrapper-debug', ext: 'aar') 
} 

我不知道我錯過了什麼,但是當我運行./gradlew lint它運行的棉短絨,但不符合我的自定義規則..任何幫助,提示或建議非常感謝。

EDIT 1

在此運行時的gradle是終端輸出。

:app:preBuild UP-TO-DATE 
:app:preDebugBuild UP-TO-DATE 
:app:checkDebugManifest 
:app:preReleaseBuild UP-TO-DATE 
:app:prepareAarWrapperDebugLibrary UP-TO-DATE 
:app:prepareComAndroidSupportAnimatedVectorDrawable2421Library UP-TO-DATE 
:app:prepareComAndroidSupportAppcompatV72421Library UP-TO-DATE 
:app:prepareComAndroidSupportDesign2421Library UP-TO-DATE 
:app:prepareComAndroidSupportRecyclerviewV72421Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportCompat2421Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportCoreUi2421Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportCoreUtils2421Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportFragment2421Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportMediaCompat2421Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportV42421Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportVectorDrawable2421Library UP-TO-DATE 
:app:prepareComAndroidVolleyVolley100Library UP-TO-DATE 
:app:prepareComCrashlyticsSdkAndroidAnswers138Library UP-TO-DATE 
:app:prepareComCrashlyticsSdkAndroidBeta121Library UP-TO-DATE 
:app:prepareComCrashlyticsSdkAndroidCrashlytics261Library UP-TO-DATE 
:app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2310Library UP-TO-DATE 
:app:prepareComGoogleAndroidGmsPlayServicesBase961Library UP-TO-DATE 
:app:prepareComGoogleAndroidGmsPlayServicesBasement961Library UP-TO-DATE 
:app:prepareComGoogleAndroidGmsPlayServicesLocation961Library UP-TO-DATE 
:app:prepareComGoogleAndroidGmsPlayServicesMaps961Library UP-TO-DATE 
:app:prepareComGoogleAndroidGmsPlayServicesTasks961Library UP-TO-DATE 
:app:prepareIoFabricSdkAndroidFabric1312Library UP-TO-DATE 
:app:prepareDebugDependencies 
:app:compileDebugAidl UP-TO-DATE 
:app:compileDebugRenderscript UP-TO-DATE 
:app:generateDebugBuildConfig UP-TO-DATE 
:app:generateDebugResValues UP-TO-DATE 
:app:generateDebugResources UP-TO-DATE 
:app:mergeDebugResources UP-TO-DATE 
:app:processDebugManifest UP-TO-DATE 
:app:processDebugResources UP-TO-DATE 
:app:generateDebugSources UP-TO-DATE 
:app:incrementalDebugJavaCompilationSafeguard UP-TO-DATE 
:app:compileDebugJavaWithJavac UP-TO-DATE 
:app:compileDebugNdk UP-TO-DATE 
:app:compileDebugSources UP-TO-DATE 
:app:mergeDebugShaders UP-TO-DATE 
:app:compileDebugShaders UP-TO-DATE 
:app:generateDebugAssets UP-TO-DATE 
:app:mergeDebugAssets UP-TO-DATE 
:app:transformClassesWithDexForDebug UP-TO-DATE 
:app:mergeDebugJniLibFolders UP-TO-DATE 
:app:transformNative_libsWithMergeJniLibsForDebug UP-TO-DATE 
:app:processDebugJavaRes UP-TO-DATE 
:app:transformResourcesWithMergeJavaResForDebug UP-TO-DATE 
:app:validateSigningDebug 
:app:packageDebug 
:app:assembleDebug 

BUILD SUCCESSFUL 

Total time: 7.881 secs 

EDIT 2

歧路項目:https://github.com/apertomove/linette

的build.gradle:https://github.com/apertomove/linette/blob/apertomove-linette/build.gradle

編輯3 除了上面的鏈接,我發現這個post由Jason寫阿特伍德。我們也有一個運行jenkins的CI服務器,我們可以運行我們的檢查並根據我們的lint規則向開發人員通知錯誤。這很好,但是,這是一步到位。從Android Studio運行我們的項目時,從庫中運行lint檢查會更有價值,更省時,而不是隻提交我們的代碼來發現我們的項目違反了規則。

+0

運行'gradle dependencies'是否將aarWrapper顯示爲編譯時間依賴性? – RaGe

+0

@RaGe是的我相信是這樣的,上面我在我的項目中運行'./gradlew assembleDebug'後添加了終端:第5行':app:prepareAarWrapperDebugLibrary UP-TO-DATE' – hopeman

+0

您可以將原始gradle文件發佈到自定義皮棉項目..你可能已經做了類似忘記包括一個android-lint預編譯的jar例如 –

回答

1

我已經寫了一篇關於如何添加和整合自定義lint規則到你的android應用程序的帖子,你可以看看。它也有鏈接到github回購顯示如何在android項目中完成。 Link to post

對我來說,最簡單的方法是設置ANDROID_LINT_JARS路徑在gradlew文件,並將其指向這是在檢查VCS系統,這樣就可以推動的代碼之前在本地運行,以及自定義皮棉罐子。 希望它有幫助。

+0

感謝您的回覆,我將ANDROID_LINT_JARS ...添加到我的gradlew文件中,但仍無法達到預期的結果。我用.jar和.aar庫試了這個... – hopeman

+0

你能指點我的代碼庫嗎? –

+0

不幸的是該項目是一個公司項目,因此我無法分享代碼。然而,我確實使用了與我們公司項目完全相同的「gradle setup」的公共存儲庫。你可以在這裏找到它(https://github.com/hopeman15/StackOverFlow)。例如,一個規則是textview ID應該以「text_」作爲前綴,但是這並不是圖書館收集的 – hopeman

0

@hopeman將jar文件複製到/.android/lint文件夾中。 Android會選擇您的自定義lint規則。

+0

感謝您的反饋,正如您在上面的描述中所看到的,這不是我的問題。你的建議確實有效,但不是我想要的。這裏的問題是,每個開發人員都必須克隆存儲庫並不斷檢查新的更新...我們的jenkins服務器非常好,可以在更改linting項目時自動更新應用程序項目中的庫,所以我仍然尋找一種解決方案,使我能夠將庫添加到我的應用程序項目中,並按照每個項目檢查規則。 – hopeman

+0

@hopeman您是否發現此問題的解決方法 - 「自定義編制規則失敗,com.android.tools.build:gradle:2.3.0」。我一直面臨同樣的問題。任何幫助,將不勝感激。 – Madhu

+0

@Mandu對不起,只要我們知道我會很樂意分享。快樂編碼... – hopeman