当前位置: 首页 > news >正文

Android组件化 -> Debug模式下,本地构建module模块的AAR和APK

本地构建module模块的AAR

gradle.properties

isCommonApp = false

模块的build.gradle

  • apply plugin: 'com.android.library'module模块编译
  • manifest.srcFile 'src/main/AndroidManifest.xml':读取没有启动AppActivity的配置文件
if (isCommonApp.toBoolean()){apply plugin: 'com.android.application'
}else{apply plugin: 'com.android.library'
}
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'android {namespace 'com.example.lib_common'compileSdk 34sourceSets{main{// 如果是app, 独立调试,如果是module, 壳工程调试if (isCommonApp.toBoolean()) {manifest.srcFile 'src/main/java/moduleDebug/AndroidManifest.xml'} else {manifest.srcFile 'src/main/AndroidManifest.xml'}}}signingConfigs{release{storeFile file('../build_keystore/release.jks')storePassword '19980226'keyAlias 'release_key'keyPassword '19980226'}}defaultConfig {if (isCommonApp.toBoolean()){applicationId "com.example.lib_common"}minSdk 24testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"consumerProguardFiles "consumer-rules.pro"}buildTypes {release {signingConfig signingConfigs.releaseminifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}kotlinOptions {jvmTarget = '17'}}dependencies {api libs.androidx.core.ktxapi libs.androidx.appcompatapi libs.materialapi libs.androidx.activityapi libs.androidx.constraintlayoutapi libs.junitapi libs.androidx.junitapi libs.androidx.espresso.coreapi "androidx.lifecycle:lifecycle-process:2.6.2"
}

读取没有启动页的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest>
</manifest>

Gradle指令编译AAR

./gradlew :lib_common:assembleDebug

在这里插入图片描述

本地构建module模块的APK

gradle.properties

isCommonApp = true

模块的build.gradle

  • apply plugin: 'com.android.application'app模块编译
  • manifest.srcFile 'src/main/java/moduleDebug/AndroidManifest.xml':读取指定启动AppActivity的配置文件
if (isCommonApp.toBoolean()){apply plugin: 'com.android.application'
}else{apply plugin: 'com.android.library'
}
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'android {namespace 'com.example.lib_common'compileSdk 34sourceSets{main{// 如果是app, 独立调试,如果是module, 壳工程调试if (isCommonApp.toBoolean()) {manifest.srcFile 'src/main/java/moduleDebug/AndroidManifest.xml'} else {manifest.srcFile 'src/main/AndroidManifest.xml'}}}signingConfigs{release{storeFile file('../build_keystore/release.jks')storePassword '19980226'keyAlias 'release_key'keyPassword '19980226'}}defaultConfig {if (isCommonApp.toBoolean()){applicationId "com.example.lib_common"}minSdk 24testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"consumerProguardFiles "consumer-rules.pro"}buildTypes {release {signingConfig signingConfigs.releaseminifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}kotlinOptions {jvmTarget = '17'}}dependencies {api libs.androidx.core.ktxapi libs.androidx.appcompatapi libs.materialapi libs.androidx.activityapi libs.androidx.constraintlayoutapi libs.junitapi libs.androidx.junitapi libs.androidx.espresso.coreapi "androidx.lifecycle:lifecycle-process:2.6.2"
}

读取有启动页的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"><application android:name=".LibCommonApp"android:theme="@style/Theme.AppCompat"><activity android:name=".LibCommonActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
</manifest>

Gradle指令编译APK

./gradlew :lib_common:assembleDebug

在这里插入图片描述

http://www.xdnf.cn/news/297487.html

相关文章:

  • Nginx安全防护与HTTPS部署
  • 如何搭建spark yarn模式集群的集群
  • OpenKylin安装Elastic Search8
  • 多线程“CPU 飙高”问题:如何确保配置的线程数与CPU核数匹配(Java、GoLang、Python )中的最佳实践解决方案
  • 数据分析指标体系
  • 深度剖析:可视化如何重塑驾驶舱信息交互模式
  • [Linux]多线程(一)充分理解线程库
  • 天文探秘学习小结
  • 【Linux系统】探索进程等待与程序替换的奥秘
  • Java引用RabbitMQ快速入门
  • 2025 后端自学UNIAPP【项目实战:旅游项目】1、创建项目框架
  • Linux之基础开发工具二(makefile,git,gdb)
  • react naive 网络框架源码解析
  • React Hooks 深入浅出
  • EasyRTC嵌入式音视频通信SDK技术,助力工业制造多场景实时监控与音视频通信
  • Apache Velocity代码生成简要介绍
  • css3伸缩盒模型第二章(侧轴相关)
  • 薪技术|0到1学会性能测试第45课-apache调优技术
  • 2025年03月电子学会青少年软件编程 图形化二级考级真题——风车
  • 智能修复大模型生成的 JSON 字符串:Python 实现与优化
  • VMware搭建ubuntu保姆级教程
  • 智能推理DeepSeek-R1+Word深度整合业级智能办公构建
  • 手机携号转网查询,一键查看号码是否可转网!
  • (undone) xv6-labs-2020 补充 LAB lazy page allocation (Day11 xv6-2020 LAB5 懒分配)
  • 双ISP(双互联网服务提供商)
  • eNSP中路由器OSPF协议配置完整实验和命令解释
  • 在Unity AR应用中实现摄像头切换功能
  • STL?string!!!
  • 【Azure Redis】Redis导入备份文件(RDB)失败的原因
  • P56-P60 统一委托,关联游戏UI,UI动画,延迟血条