Gradle Android客戶端程式打包

来源:http://www.cnblogs.com/Freedoms/archive/2016/01/27/5163919.html
-Advertisement-
Play Games

一、前言 android客戶端開發進入尾聲,負責SEO同事突然發給我一個涉及45個發佈渠道的噩耗,之前只發佈自有渠道的工作方式已經不滿足需求,所以引入最近比較流行的gradle打包技術。 gradle基於groovy語言,引入的原因也方便了以後從現在使用的eclipse開發環境遷移到Android


  

一、前言
  android客戶端開發進入尾聲,負責SEO同事突然發給我一個涉及45個發佈渠道的噩耗,之前只發佈自有渠道的工作方式已經不滿足需求,所以引入最近比較流行的gradle打包技術。
  gradle基於groovy語言,引入的原因也方便了以後從現在使用的eclipse開發環境遷移到Android Studio,所以blablabla……,不多說了,先上代碼。

二、簡單項目Gradle打包腳本配置
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
    }
}
//項目配置版本號,與apk輸出目錄
ext.appVersionCode = 2
ext.appVersionName = "2.0"
ext.appReleaseDir = "/Users/freedoms/Desktop/release"

apply plugin: 'com.android.application'

//獲取時間戳
def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMdd')
    return formattedDate
}

//程式包配置
android {
    compileSdkVersion 19
    buildToolsVersion "21.1.2"

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

   //項目中含有so包,需增加jni相關目錄配置,否則程式運行到調用so時將發生錯誤
            jniLibs.srcDir(['libs'])  
        }

        instrumentTest.setRoot('tests')

        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
//打包開始時,lint運行將有可能發生錯誤,當有異常發生時,此設置將忽略警告,繼續運行腳本,若忽略,打包過程將被強行終止
lintOptions { 
  abortOnError false
 } 
  //簽名配置
    signingConfigs {
   		myConfig {
        	storeFile file("/Users/freedoms/Desktop/產品需求文檔/android.keystore")
        	storePassword "123123"
        	keyAlias "android.keystore"
        	keyPassword "123123"
   		}
  	}

   //混淆配置
  	buildTypes{
		release {
	    	signingConfig  signingConfigs.myConfig
	    	runProguard true
	    	proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
	    }
	}

  //自定義配置
	productFlavors {
	    //百度
	    baidu{
	     	manifestPlaceholders = [UMENG_CHANNEL_VALUE:"baidu_android_channel",BAIDU_CHANNEL_VALUE:"baidu_baidu_android_channel"]
	    }
	    //360
	    "360"{//若配置渠道名為數字開頭,必須加引號
	     	manifestPlaceholders = [UMENG_CHANNEL_VALUE:"360_android_channel",BAIDU_CHANNEL_VALUE:"baidu_360_android_channel"]
	    }
	}
	
    //打包重命名演算法,輸出XXX_Android_v2.0_20160127_baidu.apk到腳本前配置的輸出目錄當中
	android.applicationVariants.all { variant ->
        def file = variant.outputFile
        if(variant.buildType.name.equals('release')){
        	variant.outputFile = new File(appReleaseDir + '/','XXX_Android_v' + appVersionName +getDate()+ '_' + variant.productFlavors[0].name + '.apk')
        }
    }
}

//編碼配置
tasks.withType(Compile) {  
   	options.encoding = "UTF-8"  
} 

三、帶有項目依賴關係的gradle打包腳本配置

1、依賴項目
  a)如果使用eclipse作為開發環境,首先需要生成gradle配置
  b)修改gradle腳本中apply plugin為以下配置
apply plugin: 'android-library'

   c)其他配置同主項目,可參考簡單項目gradle腳本配置

 2、主項目

  




 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • js checkbox <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="htt
  • 如何使用jQuery獲取滑鼠指針的當前坐標:在實際應用中,可能需要獲取當前滑鼠的坐標,下麵就來簡單介紹一下如何實現此功能。當然例子非常簡單,大家可以根據實際需要靈活的應用和擴展。代碼實例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8">
  • css預重置樣式代碼:預重置css樣式代碼幾乎在每一個稍有經驗編寫的css文件中都有應用,這足以說明它的有點,關於它到底有哪些好處這裡就不多介紹了,大家可以自行查閱,下麵直接分享此代碼。代碼如下: body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,fo
  • 手風琴方式展開和摺疊導航菜單效果:本章節分享一段代碼實例,它實現了手風琴方式展開和摺疊導航菜單效果。代碼實例如下: <!DOCTYPE html> <html> <head> <meta charset="gb2312"> <meta name="author" content="http://ww
  • 當系統版本號高於iOS7.0,那麼原來的隱藏狀態欄方式就可能不好使了. 因為你要是用修改plist的方法實現的隱藏方法,還是管用的. plist方法: key:Status bar is initially hidden value : YES 自從開啟程式,狀態欄就被隱藏了 key:View co
  • adapter.notifyDataSetChanged();
  • 最近做android開發遇到無法通過usb鏈接設備的情況,通過wifi連接設備調試也頗為方便 1、android 要root , 下載終端app 比如 BetterTerminal 2、通過以下命令開啟adbd su //如果前面顯示的符號是$ ,則運行此命令切換到root。如果是# ,可以不用此命
  • 有些項目用xcode7打開運行,打包安裝到iOS9設備上程式會閃退。如果用xcode7以下編譯,然後打包到iOS9的設備上就是正常的。這是為什麼,關鍵是,怎麼解決? 答:iOS9發佈之後,有些app在新的系統下會經常出現閃退的情況,而官方也給了許多的適配與改變。以使用戶體驗更好。所以做為開發者怎樣為
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...