當前位置:首頁 » 編程軟體 » 編譯方式gradle

編譯方式gradle

發布時間: 2023-05-02 10:38:18

⑴ Gradle--多環境編譯打包

前段時間產品經理提了個需求,測試環境,預發布環境,生產環境編譯下的app需要在同一步手機同時存在,實現是可以的,但是得有三個環境下的不同applicationId,網路地圖key,域名,桌面logo,剛開始是想需要什麼環境就換什麼類型,很麻煩,每次都要換一次重新編譯,我就在想有什麼便捷的方法一鍵設置更換,gradle其中的Flavors功能可以實現我想要的。

這個是主項目中build.gradle中的配置,有三個環境我命名為 xiaoming_test,xiaoming_ready,xiaoming_proct,並有不同的applicationId,BAIDU_MAP_KEY,HTTP_HEAD,HTTP_HEAD_java,app_icon,(解釋一下,有兩條域名是因為後面後台是用java開發而做的區分),到這里應該大家有疑問,舉個栗子,我們一般開發的第三方key是在mainifests進行注冊申請的,而我們gradle如何去引用資源的。這里有兩種引用方式,直接引用,自定義引用。

引用logo在application的icon屬性命名為app_icon,$表示引用這個命名,對應的是gradle的配置。

在mainifests自定義為HTTP_HEAD,value值通過${HTTP_HEAD}引用,getHttpHead()獲取自定義注冊的域名值。從而實現每次請求對應的域名,只需在gradle里設置。

只需打開studio的BuildVariarts設置,選擇需要的環境即可重新編譯不同的apk,方便快捷的做到一鍵設置快速打包。

⑵ 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編譯-APK編譯過程

在早期的Android設備中(Android5.0以下)都是使用的Dalvik虛擬機,Dalvik支持經過轉換的.dex文件。.dex格式是專為Dalvik設計的一種適合內存和處理器速度有限的系統。

但是在Android5.0,google用ART全面取代的Dalvik。Android7.0中又添加了JIT編譯器,使得Android性能也有不少提升。

上圖為從Android源文件開始,最終到APK的過程。
下面博客文章詳細介紹了dalvik虛擬機,可供參考學習。
https://www.cnblogs.com/lao-liang/p/5111399.html

dvm(art)和jvm屬於不同的虛擬機平台,不同平台要求執行的文件類型也就不一樣
dvm(art)--.dex文件
jvm--.class文件

在編譯和生成上
java source --.class文件 ---jvm執行
java source --.class文件 ---.dex文件 --- dvm執行

Android Runtime (ART) 是 Android 上的應用和部分系統服務使用的託管式運行時。ART 及其前身 Dalvik 最初是專為 Android 項目打造的。作為運行時的 ART 可執行 Dalvik 可執行文件並遵循 Dex 位元組碼規范。

ART 和 Dalvik 是運行 Dex 位元組碼的兼容運行時,因此針對 Dalvik 開發的應用也能在 ART 環境中運作。不過,Dalvik 採用的一些技術並不適用於 ART。

ART的功能
1.預先 (AOT) 編譯
使用ART編譯器時,應用程序在安裝期間就已經把dex位元組碼翻譯並存儲在設備上,運行時,只需要執行這些翻譯好的就可以了,因此執行速度也快了不少。
2.垃圾回收方面的優化

3.開發和調試方面的優化

構建流程涉及許多將項目轉換成 Android 應用軟體包 (APK) 的工具和流程。構建流程非常靈活,因此了解它的一些底層工作原理會很有幫助。

⑷ 怎麼將已有的代碼用gradle編譯工具編譯

1. 為什麼選擇Gradle?

2. 簡單入門
2.1 使用Intellij Idea創建gradle項目
首先在Idea中啟用Gradle支持:Settings->Plugins: Gradle
然後創建一個gradle項目或模塊,會發現目錄結構和maven的很像,其中build.gradle是gradle的配置文件,類似於maven中pom.xml文件,以下是build.gradle的簡單示例:
apply plugin: 'java'

group = 'org.yousharp'
version = '1.0-SNAPSHOT'

sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
mavenCentral()
maven { url "repo.maven.apache.org/maven2" }
}
dependencies {
compile group: 'com.google.guava', name: 'guava', version:'17.0'
compile group: 'redis.clients', name: 'jedis', version:'2.6.0'
testCompile group: 'junit', name: 'junit', version:'4.11'
}

插件(plugin):是gradle的一種擴展,gradle預定義了很多插件,常見的如java插件、war插件等;java插件中定義了一些有用的task,如編譯源碼、執行單元測試、生成jar包、約定默認的目錄結構等; repositories定義倉庫,dependencies定義項目的依賴,比maven的XML定義更簡潔;
那麼,如何編譯、測試,以及運行gradle的項目呢?
剛才說到java插件預定義了很多task,其中就包括編譯、測試、生成jar包等task,可以在命令行通過 $ gradle tasks 查看項目已定義的所有task以及含義,如java插件中常用的task有:
+ assemble: 編譯
+ build:編譯並執行測試
+ clean:刪除build目錄
+ jar: 生成jar包
+ test:執行單元測試

2.2 將Java項目從maven遷移到gradle
如何將一個java項目從maven遷移到gradle呢?gradle集成了一個很方便的插件:Build Init Plugin,使用這個插件可以很方便地創建一個新的gradle項目,或者將其它類型的項目轉換為gradle項目。
要將maven項目轉換為gradle項目,只需要在項目的pom文件所在的目錄下執行以下命令:
$ gradle init --type pom

上面的命令會根據pom文件自動生成gradle項目所需的文件和配置,然後以gradle項目重新導入即可。

⑸ Android Studio開發解讀 - gradle編譯項目的build目錄結構

轉自:http://www.cnblogs.com/bbqzsl/p/5926591.html

本文針對android studio工具下的ndk開發。

build目錄就是項目模塊構建過程和結果使用到的位置。

項目根目錄下有一個build目錄。

項目根目錄下各模塊子目錄下各自有一個build目錄。

build目錄下一般由4個子目錄組成:

generated由aapt工具根據資源數據自動生成的java類

intermediates中間過程

outputs輸出結果

tmp編譯日誌

根目錄下的build目錄,這個build服務於整個項目,在本文中稱其做項目build,以區分模塊build。

項目build一般只有generated和intermediates兩個子目錄,用於生成這個項目的buildTools。

generated目錄會生成一個mockable-android-${buildToolsVersion}.jar。

intermediates目錄根據需要生成dex-cache,這個目錄纖謹下的xml文件配置jar包在編譯過程中如何緩沖使用。

模塊build目錄在make mole ${MOD_NAME}後就會生成4個子目錄。

我們來看intermediates目錄,中間生成和編譯過程使用到的目錄。

這個目錄下有這么幾個比較關心的子目錄:

binaries                  NDK,生成c++連接庫

bundles                  模塊鏈接到的自定義毀櫻基jar包和各abi版本的c++鏈接庫都捆綁在這里

classes模塊中生成的自定義java類

exploded-aar          由aar包解壓出來的資源,jar包和so鏈接文件等。用於本模塊的鏈接和集成。

jniLibs                   在build.grade中你指定的jniLibs目錄整個拷貝。模塊鏈接到的庫文件會被捆到bundles目錄。

objectFiles              NDK,生成c++中間對象(.o)文件。

transforms              根據你當前選擇的proctFlavor和其包含的abiFilter,從bundles和binaries取出鏈接庫。

接著就是output目錄:

aar如果模塊是android library

jar                         如果模塊是java library

apk                        如果是Activity應用程序

最後就是tmp目錄:

compile$(NDK_Mole)$(ABI)$(BUILD_TYPE)$(PRODUCT_FLAVOR)MainCpp               ndk編譯日誌

link$(NDK_Mole)$(ABI)$(BUILD_TYPE)$(PRODUCT_FLAVOR)$(LIB_TYPE)                ndk鏈接日誌

編譯的子目錄由三要素組合頌磨而成,分別是

BUILD_TYPE := debug|release

ProctFlavor := 你在gradle文件中創建的flavor

abiFilter :=

逆向深入objc,c++ windows下仿objc動畫層UI引擎

熱點內容
php壁紙源碼 發布:2025-07-08 03:04:26 瀏覽:319
android應用層 發布:2025-07-08 02:42:32 瀏覽:301
大唐存儲銷量 發布:2025-07-08 02:41:11 瀏覽:582
腳本怎麼打開 發布:2025-07-08 02:41:06 瀏覽:822
貴州電信iPtv升級伺服器地址 發布:2025-07-08 02:38:48 瀏覽:412
電腦怎麼鏈接本地伺服器 發布:2025-07-08 02:34:22 瀏覽:147
android調試webview 發布:2025-07-08 02:26:28 瀏覽:358
壓縮袋鞋子 發布:2025-07-08 02:21:30 瀏覽:752
為什麼安卓打吃雞感覺有延遲 發布:2025-07-08 02:09:32 瀏覽:168
課題組伺服器如何使用 發布:2025-07-08 02:09:27 瀏覽:44