Gradle .mk .bp三者差異

一茂卦、配置資源 映射與舉例

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

二荠诬、結(jié)果對比

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方法

首先在源碼目錄啟動編譯環(huán)境 :

source build/envsetup.sh

如果是盤古項目需要額外執(zhí)行:AOSP不需要

export BUILD_TARGET_PEODUCT=zeus

選擇對應(yīng)項:

lunch 47 // missi 一般為47 

構(gòu)建項目:

方式一: cd 到對應(yīng)目錄位仁,執(zhí)行 mm
方式二: mmm 對應(yīng)目錄全路徑 
后面可加參數(shù) -jx x可根據(jù)設(shè)備性能設(shè)置柑贞。

gradle工具常用編譯指令

檢查依賴并編譯打包
./gradlew build

編譯并打Debug包
./gradlew assembleDebug --info

編譯并安裝debug包
./gradlew installDebug

編譯并打Release的包
./gradlew assembleRelease --info

編譯并安裝Release包
./gradlew installRelease

卸載Release模式包
./gradlew uninstallRelease

清除build文件夾
./gradlew clean 

查看所有任務(wù)
./gradlew tasks --all

更多gradle說明 見 官方

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市聂抢,隨后出現(xiàn)的幾起案子钧嘶,更是在濱河造成了極大的恐慌,老刑警劉巖琳疏,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件有决,死亡現(xiàn)場離奇詭異,居然都是意外死亡轿亮,警方通過查閱死者的電腦和手機疮薇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來我注,“玉大人按咒,你說我怎么就攤上這事〉牵” “怎么了励七?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長奔缠。 經(jīng)常有香客問我掠抬,道長,這世上最難降的妖魔是什么校哎? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任两波,我火速辦了婚禮,結(jié)果婚禮上闷哆,老公的妹妹穿的比我還像新娘腰奋。我一直安慰自己,他們只是感情好抱怔,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布劣坊。 她就那樣靜靜地躺著,像睡著了一般屈留。 火紅的嫁衣襯著肌膚如雪局冰。 梳的紋絲不亂的頭發(fā)上测蘑,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音康二,去河邊找鬼碳胳。 笑死,一個胖子當(dāng)著我的面吹牛赠摇,可吹牛的內(nèi)容都是我干的固逗。 我是一名探鬼主播浅蚪,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼藕帜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惜傲?” 一聲冷哼從身側(cè)響起洽故,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盗誊,沒想到半個月后时甚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡哈踱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年荒适,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片开镣。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡刀诬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邪财,到底是詐尸還是另有隱情陕壹,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布树埠,位于F島的核電站糠馆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏怎憋。R本人自食惡果不足惜又碌,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绊袋。 院中可真熱鬧毕匀,春花似錦、人聲如沸愤炸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽规个。三九已至凤薛,卻和暖如春姓建,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缤苫。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工速兔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人活玲。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓涣狗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親舒憾。 傳聞我的和親對象是個殘疾皇子镀钓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容