當前位置:首頁 » 安卓系統 » androidgradle源碼

androidgradle源碼

發布時間: 2023-05-13 14:09:22

⑴ Gradle獲取源碼sourceSets

在寫gradle插件時可能會使用到源碼文件,如作源碼文件的版本對比,源旅余碼分析等,但源碼如何來獲取呢?一般gradle項目的源碼默認都是在固定的位置,如project/app/src/main/java 。但源碼的位置並非一定要在此,這只是一個 默認位置 ,在Gradle的配置文件build.gradle里是可以配置源碼的位置的,下面可以看下在Android和Java項目中是如何配置的。

Android源碼配置是在android下面的sourceSets參數里進行配置。

Java項目sourceSets與Android項目的不同,它在最外層直接配置。

我們知道在gradle的配置文件中,每個名稱都是一個Extension,每個Extension可以配置指定的參數列表。如android{},是由AppPlugin通過project.getExtensions().create("android",AppExtension)來創建的,而AppExtension類的成員變數定義了gradle參數,如defaultConfig,proctFlavors,buildTypes,signingConfigs等老培。然而事實並非如何,gradle里還有一種配置自定義參數的方式,即Convention。Convention方式侍鎮唯中每個成員變數對應的是一個extension。其中Java項目中的sourceSets即是使用如何方式進行配置的。
下面看一下如何獲取獲取項目的源碼。既然源碼是通過自定義參數配置的,那麼獲取的時候通過拿到自定義的參數對象,獲取其sourceSets欄位即可。

android使用的是BaseExension對象配置的參數,所有通過Plugin獲取到extension對象,取其中的sourceSets欄位。

Java項目是通過Convention配置的,所以需要找到Convention對象,即JavaPluginConvention。通過此對象來獲取Java項目的源碼文件

注意Java項目創建了Jar任務用來打包,而Jar也有一個getSource方法,此方法獲取的並不是源碼文件,而是編譯過的class文件。

⑵ 初學android studio如何保存項目源碼全部保存也太大了,有40左右mb!

從Eclipse中導出1.將你的ADT插件版本升級到22.0以上。2.在Eclipse中,選擇File-->Export。3.在彈出的導出窗口中,打開Android的文件夾,選擇「GenerateGradleBuildFiles」。4.選中你想要導入到AndroidStudio中的項目,Finish。PS:導出的項目將會和原來的項目在同一目錄,覆蓋原來的同時,會新增一個叫build.gradle的文件,導入AndroidStudio時將首先讀取這個文件。導入到AndroidStudio1.在AndroidStudio中,首先關掉你當前的打開的項目。2.在歡迎界面,點擊ImportProject(註:也是可以直接在菜單選擇Importproject的)3.選中你在Eclipse中導出的項目,目錄,點擊build.gradle文件,然後OK4.在之後的彈出對話框中,會要求你選擇Gradle的配置,選中Usegradlewrapper.(註:也可以自定義你本機裝的Gradle)PS:如果沒有Gradebuild文件,也是可以將普通的安卓項目導入到AndroidStudio中,它會用現有的Antbuild.但為了更好地使用之後的功能和充分使用構建變數,還是強烈地建議先從ADT插件中生成Gradle文件再導入AndroidStudio~~~

⑶ 如何用Android Studio查看build.gradle源碼

build.gradle 里的每一行代碼基本都是在調用一個方法,既然是這樣,我們就可以用 android studio(下面簡稱as) 去查看它源碼的方法注釋說明,這樣就可以理解每個方法是做什麼的了,就算猜歷是在大神的 build.gradle 遇見一些沒看懂的代碼,也可以點進去看方法介紹來理解。就像我們在查看 SDK 里的各種方法一樣。
但是有個問題,應該也有小夥伴跟我一樣吧,每次在大神的 build.gradle 看到一堆不懂的代碼時,按住 Ctrl 鍵後,滑鼠移到代碼上時有個跳轉的手勢時總是很開心,總是心想原來可以看源碼啊,那就點進去看看介紹,看這個是幹嘛的吧。可是每次一點進去,打開的卻是 class 代碼文件,頂多就只有方法名,一點注釋都沒有,而且方法參數命名還混淆過,也猜不出來是幹嘛的。又不懂怎麼去官方文檔里查找,只能去網上用關鍵字查找,找出來的又跟自己碰到的問題不一樣,越找越氣乾脆不找了,放一邊去穗租搜,以後再說。
是吧,如果可以直接通過 as 看源碼的注釋該多好。好了,廢話到這,下面開始正型咐文。
https://www.cnblogs.com/dasusu/p/6650782.html?utm_source=tuicool&utm_medium=referral

⑷ github上的android源碼沒有gradle怎麼運行

Android Studio 使用Gradle構建系統。如果你下載的Android項目中有Gradle,那應該是用Android Studio開發的項目,你用Android Studio導入就好了。

⑸ 如何用Android Studio查看build.gradle源碼

我們來舉個例子,就像系列一的博客里介紹的 build.gradle 里有這樣一段代碼:

藉助 as,我們甚至可以很容易的查到 android{...} 這個括弧里能使用的喊敗方法都有哪些,如果要看各自的作用是干什麼的,再繼續點進去查看注釋就行了。是不是發現,我們在 build.gradle 里的 android{...} 使用過的標簽名原來都在這里的啊。

以後就算是再碰到大神的 build.gradle 文件里各種沒看見過的標簽名,不用再擔心看不懂了。不懂就看源碼注釋嘛,so easy!

當然,大神的 build.gradle 文件里還是會出現一些 groovy 代碼或者是 task 之類的,這些就不是 gradle 源碼里能夠查到的了,需要稍微了解一下 groovy 和 gradle 語言的基礎,有興趣的可以繼續閱讀下我寫的這個系列裡的相關博客,當然能力不夠,如果你希望更好的學習,網上資料也很多。

⑹ gradle可以編譯android源碼嗎

方法/步驟

1
(可以省略)通過cmd命令行下載gradle源碼:
git clone https://github.com/spring-guides/gs-gradle-android.git
2
下載最新的gradle安裝包,地址:
http://gradle.org/downloads
點擊下載二進制文件

3
解壓到d盤,路徑為:D:\gradle-2.4
4
打開「計算機」-「右鍵」-「屬性」-「更改設置」-「高級」-「環境變數」,
在系統變數中,點擊新建,屬性名為GRADLE_HOME,屬性值為"D:\gradle-2.4"

5
打開「計算機」-「右鍵」-「屬性」-「更改設置」-「高級」-「環境變數」,
在系統變數中,找到Path,將";D:\gradle-2.4\bin"加入到Path中

6
打開cmd命令行,執行gradle,如果出現如圖所示,則說明gradle安裝成功

7
打開cmd命令行,進入android工程目錄,找到build.gradle文件,在目錄執行執行
gradle build
既可開始使用gradle打包apk,在成功後會在同目錄生成build文件夾,

⑺ gradle解壓源碼,重新打包

這幾天工作上遇到一個問題,三方的jar包在liunx下解壓不了,用gradle又能正常編譯,我們的apk是在liunx下用mk進行編譯的,編譯的過程中需要對jar包進行解壓,這樣就導致編譯失敗。
錯誤信息如下:以後再遇到這個錯誤,可能就jar包的問題。
FAILED: /bin/bash -c "(mkdir -p out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res ) && (unzip -qo /home/x/xx/xxx/APK92_GNBJ_EDO/code/libs/xxx-sdk-java20171027120314.jar -d out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res ) && (find out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res -iname \"*.class\" -delete ) && (JACK_VERSION=3.36.CANDIDATE out/host/linux-x86/bin/jack @build/core/jack-default.args --verbose error -D jack.import.resource.policy=keep-first -D jack.import.type.policy=keep-first -D jack.android.min-api-level=1 --import /home/x/xx/xxx/APK92_GNBJ_EDO/code/libs/xxx-sdk-java20171027120314.jar --import-resource out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res --output-jack out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack ) && (rm -rf out/target/common/obj/JAVA_LIBRARIES/xxx-sdk_intermediates/classes.jack.tmpjill.res )" warning: stripped absolute path spec from / mapname: conversion of failed ninja: build stopped: subcommand failed. build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed

解決方法:對jar包源碼重新打包

解壓jar包源碼,注意,是帶源碼的jar包,如果是編譯過的jar,是不能重新打包的。
步驟:
1.新建build.gradle文件,因為gradle會默認找到當前目錄下的build.gradle下的文件去執行;
2.在終端執行gradle unzip,執行這個task
以下命令將這個目錄 app/libs/xxx-sdk-java20171027120314.jar 下的jar包解壓到了 unpacked/dist 目錄。

解壓之後的源碼就是文件夾,重新打包的時候需要注意,包名和源碼的路徑名一致。現在利用Android studio進行打包。
步驟:
1.新建lib mole,選擇Android Libeary/Java Library;
2.注意修改包名與jar包路徑相同,eg:jar包解壓之後的路徑 dist/com/example/api ,那麼為了確保新生成的jar包里的Java文件import路徑相同,mole的包名也要命名為 com.example.api ;
3.將解壓之後的源碼java文件復制到lib model中;
4.在 app mole 下添加 lib mole 依賴。這是一種取巧的方法,當你添加了lib mole依賴之後,項目會重新rebuild,這個過程會將mole依賴編譯成jar包,存放在lib mole的 build/libs 目錄下,由於Android Studio版本不同,這個目錄可能有有所不同,但是都在build目錄下,找新的jar包就可以了。
這一部可能會報jar包找不到,或者lib mole中的import失敗,可能是因為lib mole依賴的jar包沒導入,導入之後在lib mole的build.gradle里配置一下就可以了。

這個時候,其實直接用這個jar包也可以了,如果向修改jar包名字,可以執行下面的gradle命令:

想了解更多可以參考 這里
然後在項目里測試一下jar包就可以了。
重新打包之後就可以在liunx下解壓了,正常編譯通過。

最後記錄一下mk編譯的一個錯誤 # [ERROR: Dex writing phase: classes.dex has too many IDs. Try using multi-dex](https://stackoverflow.com/questions/45472852/error-dex-writing-phase-classes-dex-has-too-many-ids-try-using-multi-dex) 在stackoverflow上找到了解決方法。

在mk文件中添加

參考:
https://stackoverflow.com/questions/39457116/gradle-build-hanging-when-jackoptions-is-enabled-for-java-1-8
https://stackoverflow.com/questions/45472852/error-dex-writing-phase-classes-dex-has-too-many-ids-try-using-multi-dex

⑻ Android gradle打包涉及task源碼解析(六)

所以 packageDebug 任務就是打apk包的。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:944
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:741
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:372