IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 最全app build.gradle常用语法 -> 正文阅读

[移动开发]最全app build.gradle常用语法

1.增加签名文件
    signingConfigs {
        sign_q {
            keyAlias 'key1'
            keyPassword '111111'
            //签名文件
            storeFile file('storefile/sskey.jks')
            storePassword '111111'
        }
    }
    
        buildTypes {
        release {
            // 打包时去除无用的资源
            shrinkResources true
            minifyEnabled false
             //混淆
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            对release 版本用sskey.jks文件签名
            signingConfig signingConfigs.sign_q
        }
        debug {
            minifyEnabled false
            signingConfig signingConfigs.sign_q
        }
        
    }

对于android 系统中,如何制作系统签名jks,可以参考我这篇文章 各位大佬都是怎么开发调试系统应用的

2.输出特定apk名称
    android.applicationVariants.all { variant ->
        variant.outputs.all {
            //将apk输出到outputs 下
            variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + File.separator + "outputs")
            //编译生成的apk 名字为 appname_release_20211019.apk
            def apkName = "${variant.productFlavors.name}_${variant.buildType.name}_${variant.productFlavors[0].versionName}"
            outputFileName = apkName + ".apk"
        }
    }
3.分渠道编译

可参考另一篇文章android 差异化多渠道打包

    flavorDimensions "os_backup"
    productFlavors {
        os_backup {
            applicationId 'com.test.backup'
            versionCode 2
            versionName "2.0".concat("_").concat(releaseTime())
        }

        os_phoneclone {
            applicationId 'com.test.phoneclone'
            versionCode 4
            //这里可以动态管理apk版本号
            versionName "2.0".concat("_").concat(releaseTime())
            minSdkVersion 21
        }
    }
//可以自定义加方法
def releaseTime() {
    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}
4.选择性打包
  defaultConfig {
        applicationId "com.example.miracastdemo"
        minSdkVersion 28
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
      //为了包体积优化,这里可以选择性的打包资源和语言
        resConfigs("xxhdpi","xxxhdpi")
        resConfigs("en","zh","zh-rCN")
        ndk {
            abiFilters 'armeabi-v7a'
        }
    }

sourceSets {
    //当分渠道编译时,可以选择性的编译不同的资源文件或者代码文件等等。
        os_backup {
            res.srcDirs = ['res']
            java.srcDirs = ['src', 'src_plugins']
            manifest.srcFile 'AndroidManifest-common.xml'
        }
       os_phoneclone {
            res.srcDirs = ['res']
            java.srcDirs = ['src', 'src_plugins']
            manifest.srcFile 'AndroidManifest-common.xml'
        }
        }
5 .引入依赖
    implementation 'android.arch.lifecycle:extensions:1.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    // 引入libs 下的所有jar 包和aar 包
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation fileTree(include: ['*.aar'], dir: 'libs')
    //noinspection GradleCompatible,GradleCompatible
    implementation 'com.android.support:support-v13:26.1.0'
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    // 引入libs单个的aar 包
    compile(name: 'zxing-android-embedded-3.6.0', ext: 'aar')
    compile(name: 'lottie-2.7.0', ext: 'aar')
6.混淆
      buildTypes {
        release {
            minifyEnabled false
            //混淆
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.sign_wingos_q
        }
        debug {
            minifyEnabled false
            signingConfig signingConfigs.sign_wingos_q
        }
        
    }
7. android.mk 中选择性文件打包
LOCAL_PATH := $(call my-dir)include$(CLEAR_VARS)# 是否开启混淆
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_DEX_PREOPT:=false
LOCAL_MODULE_TAGS := optional

LOCAL_CERTIFICATE := platform

LOCAL_STATIC_ANDROID_LIBRARIES := \
        android-support-v7-appcompat \
        android-support-v17-leanback 

LOCAL_STATIC_JAVA_LIBRARIES := \
        com.mediatek.support.tv \
        androidx.annotation_annotation
LOCAL_PRIVATE_PLATFORM_APIS := true
// mk 打包时选择性的引入对应的文件
LOCAL_SRC_FILES := $(call all-java-files-under, app/src/main/java)
LOCAL_ASSET_DIR := $(LOCAL_PATH)/app/src/main/assets
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/app/src/main/res
LOCAL_MANIFEST_FILE := app/src/main/AndroidManifest.xml
LOCAL_PACKAGE_NAME := Demo
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:36:02  更:2021-10-20 12:37:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:46:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码