中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

超實用!打包、配置項目必備的Gradle實戰技巧!

發布時間:2020-07-02 14:57:19 來源:網絡 閱讀:1040 作者:星恒Android 欄目:移動開發

官方參考

https://developer.android.com/studio/build/gradle-tips.html

以下都是經過實戰總結、多次調整的gradle配置方案,歡迎采用,提意見

一 自動命名打包的不同版本

 

applicationVariants.all { variant ->
variant.outputs.each { output ->
if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) {
if ("debug" == variant.buildType.name) {
def apkFile = new File(
output.outputFile.getParent(),
"XXX_App_${variant.versionName}_${buildTime()}_debug.apk")
output.outputFile = apkFile
} else if ("release" == variant.buildType.name) {
def apkFile = new File(
output.outputFile.getParent(),
"XXX_App_${variant.versionName}_release.apk")
output.outputFile = apkFile
}
}
}

if (variant.buildType.name == "debug") {
variant.mergedFlavor.versionName = variant.mergedFlavor.versionName + "." + buildTime();
}

}
def buildTime() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMdd')
    return formattedDate
}

二 統一全module的配置

在build.gradle中改寫引用方式   

 compileSdkVersion rootProject.ext.android["compileSdkVersion"]

在config.gradle中配置如下

 

ext {
android = [
compileSdkVersion: 23,
buildToolsVersion: "25.0.0",
minSdkVersion : 15,
targetSdkVersion : 22,
minifyEnabled : false,
minifyFile : rootProject.file('proguard-rules.pro'),
]

version = [
"supportVersion" : "25.0.0"
]

dependencies = [
"support_v4": "com.android.support:support-v4:${version["supportVersion"]}",
"appcompat-v7" : "com.android.support:appcompat-v7:${version["supportVersion"]}",
"recycleview" : "com.android.support:recyclerview-v7:${version["supportVersion"]}",
"multidex" : "com.android.support:multidex:1.0.1",
"junit" : "junit:junit:4.12",

//Baidu location
"baidu" : "libs/BaiduLBS_Android.jar"
] }

三 混合使用productFlavors 和 meta

manifestPlaceholders 可以在清單文件中配置好,格式如下

 

    <meta-data
            android:name="appid"
            android:value="12334"/>

同時在build.gradle中引用

 

productFlavors {

        normal {
            applicationId "com.xxx"
            manifestPlaceholders = [xxx: "0", appid: "xxx" , host:"xxx"];
        }

        productone {
 applicationId "com.xxx"
            manifestPlaceholders = [xxx: "0", appid: "xxx" , host:"xxx"];
        }

        producttwo {
            
 applicationId "com.xxx"
            manifestPlaceholders = [xxx: "0", appid: "xxx" , host:"xxx"];
        }

    }

配置不同product的資源和jni來源

 

sourceSets{
        normal {
            jniLibs.srcDirs = ['src/normalIn/jniLibsIn/']
            assets.srcDirs = ['src/normalIn/assetsIn']
        }

        productone {
            jniLibs.srcDirs = ['src/normalIn/jniLibsIn/']
            assets.srcDirs = ['src/normalIn/assetsIn']
        }
    }

代碼中調用方法:

 

  try {
            ApplicationInfo info = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
            if (info != null && info.metaData != null) {
                meta = info.metaData.getInt("appid");
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }


四 flavor版本判斷

 

// build.gradle in application module

android {
    productFlavors {
        googlePlay {
        }
        wandoujia {
        }
    }
}
if (getGradle().getStartParameter().getTaskRequests().toString().contains("GooglePlay")) {
    // Google Play 版本才應用該插件
    apply plugin: 'com.google.gms.google-services'
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

聊城市| 南澳县| 旌德县| 繁峙县| 贵德县| 通山县| 罗城| 临颍县| 临沭县| 和平区| 巴青县| 界首市| 丹棱县| 汉沽区| 二连浩特市| 阆中市| 出国| 太原市| 浦江县| 闽清县| 陆河县| 泸水县| 科技| 阿城市| 兰西县| 天气| 贞丰县| 娱乐| 嵩明县| 黎川县| 普陀区| 思南县| 淮北市| 罗甸县| 嵊州市| 蓝田县| 鹤壁市| 酉阳| 吴桥县| 德江县| 彭阳县|