Gradle .mk .bp三者差异

2022-07-18  本文已影响0人  super超_9754

一、配置资源 映射与举例

1、Source Code (java代码)

image.png

2、Resource Files (xml资源)

image.png

3、AIDL Files

image.png

4、jni(c cpp so)

image.png
image.png

5、assets

image.png

6、AndroidManifest

image.png

7、Dependencies

以MiuiExtraPhoto为例
需要依赖本地资源: jar、aar如下;
需要依赖maven资源: miuix.recyclerview、miuix.appcompat


image.png
image.png image.png
image.png

二、结果对比

Android.bp


package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

android_app {
    name: "GeoLocation",
    certificate: "platform",

    ...

    # manifest
    manifest: "AndroidManifest.xml",

    # src
    srcs: ["src/**/*.java"],

    # res
    resource_dirs: [
        "app/res",
        "res",
    ]

    # assets
    asset_dirs: [
        "assets"
    ]

    # dependencies
    libs: [
        "geo_izatsdk",
        "geo_AMap2DMap",
        "geo_rxjava",
        "geo_rxandroid",
        "androidx.vectordrawable_vectordrawable-animated",
        "androidx.exifinterface_exifinterface",
        "androidx.swiperefreshlayout_swiperefreshlayout",
        "androidx.localbroadcastmanager_localbroadcastmanager",
        "androidx.appcompat_appcompat-latest",
    ],

    android_static_libs: [
            "androidx.fragment_fragment-latest",
            "androidx.appcompat_appcompat-resources-latest",
            "androidx.appcompat_appcompat-latest",
            "androidx.preference_preference-latest",
            "androidx.vectordrawable_vectordrawable-animated",
            "androidx.exifinterface_exifinterface",
            "androidx.swiperefreshlayout_swiperefreshlayout",
            "androidx.localbroadcastmanager_localbroadcastmanager",
            "androidx.legacy_legacy-support-v13",
            "androidx.recyclerview_recyclerview",
            "androidx.annotation_annotation"
    ]
}

Android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_PACKAGE_NAME := GeoLocation
LOCAL_CERTIFICATE := platform

...

# src
LOCAL_SRC_FILES := $(call all-java-files-under, src)

# res
LOCAL_RESOURCE_DIR += \
        $(addprefix $(LOCAL_PATH)/app/, res) \
        $(addprefix $(LOCAL_PATH)/, res)

# assets
LOCAL_ASSET_DIR := $(LOCAL_PATH)/assets

# dependencies
LOCAL_JAVA_LIBRARIES := \
        miui-gson \
        miui-eventbus \
        MiCloudSDK-v18 \

LOCAL_STATIC_JAVA_LIBRARIES := \
        geo_izatsdk \
        geo_AMap2DMap \
        geo_rxjava \
        geo_rxandroid \
        androidx.vectordrawable_vectordrawable-animated \
        androidx.exifinterface_exifinterface \
        androidx.swiperefreshlayout_swiperefreshlayout \
        androidx.localbroadcastmanager_localbroadcastmanager \
        androidx.appcompat_appcompat-latest

LOCAL_STATIC_ANDROID_LIBRARIES := \
        androidx.fragment_fragment-latest \
        androidx.appcompat_appcompat-resources-latest \
        androidx.appcompat_appcompat-latest \
        androidx.preference_preference-latest \
        androidx.vectordrawable_vectordrawable-animated \
        androidx.exifinterface_exifinterface \
        androidx.swiperefreshlayout_swiperefreshlayout \
        androidx.localbroadcastmanager_localbroadcastmanager \
        androidx.legacy_legacy-support-v13 \
        androidx.recyclerview_recyclerview \
        androidx.annotation_annotation \

include $(BUILD_PACKAGE)

include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=  \
        geo_izatsdk:libs-mk/izatsdk.jar \
        geo_AMap2DMap:libs-mk/AMap2DMap_6.0.0_AMapSearch_7.3.0_AMapLocation_5.0.0_20200609.jar \
        geo_rxjava:libs-mk/rxjava-1.1.0.jar \
        geo_rxandroid:libs-mk/rxandroid-0.24.0.jar \

include $(BUILD_MULTI_PREBUILT)

include $(call all-makefiles-under,$(LOCAL_PATH))

build.gradle


buildscript {
    repositories {
        maven { url 'http://sdk.pt.miui.com/miuisdk/maven2/' }
        maven { url 'http://sdk.pt.miui.com/miuisdk/miuix/' }
        maven { url 'http://artifactory.d.xiaomi.net/artifactory/artifactory-releases/' }
        google()
        jcenter()
        mavenCentral()

    }
    dependencies {
        classpath 'com.miui.tools.build:gradle:3.4.0'
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "com.miui.geolocation"
        multiDexEnabled true
    }

    sourceSets {
        main {
            manifest.srcFile "AndroidManifest.xml"
            java.srcDirs = [
                    "src",
            ]
            res.srcDirs = [
                    "res",
                    "app/res",
            ]
            assets.srcDirs = [
                    "assets",
            ]
        }
    }

    ...

    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
}

dependencies {
    implementation "com.google.code.gson:gson:2.6.2"
    implementation files('libs-mk/izatsdk.jar')
    implementation files('libs-mk/AMap2DMap_6.0.0_AMapSearch_7.3.0_AMapLocation_5.0.0_20200609.jar')
    implementation files('libs-mk/rxjava-1.1.0.jar')
    implementation files('libs-mk/rxandroid-0.24.0.jar')
    implementation "androidx.vectordrawable:vectordrawable-animated:1.1.0"
    implementation "androidx.exifinterface:exifinterface:1.2.0"
    implementation "androidx.appcompat:appcompat:1.2.0"
    implementation "androidx.legacy:legacy-support-v13:1.0.0"
    implementation "androidx.recyclerview:recyclerview:1.1.0"
}

allprojects {
    repositories {
        maven { url 'http://sdk.pt.miui.com/miuisdk/maven2/' }
        maven { url 'http://sdk.pt.miui.com/miuisdk/miuix/' }
        maven { url 'http://artifactory.d.xiaomi.net/artifactory/artifactory-releases/' }
        maven { url 'https://jitpack.io' }
        google()
        jcenter()
        mavenCentral()
    }
}

三、操作差异

Android.bp 与 Android.mk 编译apk方法

首先在源码目录启动编译环境 :

source build/envsetup.sh

如果是盘古项目需要额外执行:AOSP不需要

export BUILD_TARGET_PEODUCT=zeus

选择对应项:

lunch 47 // missi 一般为47 

构建项目:

方式一: cd 到对应目录,执行 mm
方式二: mmm 对应目录全路径 
后面可加参数 -jx x可根据设备性能设置。

gradle工具常用编译指令

检查依赖并编译打包
./gradlew build

编译并打Debug包
./gradlew assembleDebug --info

编译并安装debug包
./gradlew installDebug

编译并打Release的包
./gradlew assembleRelease --info

编译并安装Release包
./gradlew installRelease

卸载Release模式包
./gradlew uninstallRelease

清除build文件夹
./gradlew clean 

查看所有任务
./gradlew tasks --all

更多gradle说明 见 官方

上一篇 下一篇

猜你喜欢

热点阅读