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

Android Studio新建项目在源码中编译

新建空白项目

用AS新建默认空项目,代码目录如下:

MyApplication$ tree  -L 4
.
├── Android.bp    // bp编译脚本
├── Android.mk.bak   // mk编译脚本
├── app   // 下面目录结构是AS新建工程目录
│   ├── build.gradle
│   ├── proguard-rules.pro
│   └── src
│       ├── androidTest
│       │   └── java
│       ├── main
│       │   ├── AndroidManifest.xml
│       │   ├── java
│       │   └── res
│       └── test
│           └── java
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
├── proguard.flags
└── settings.gradle

源码中编译

编写mk或者bp脚本后,可以将工程拷贝到系统源码中,然后进行单编

mk脚本:

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)
LOCAL_USE_AAPT2 := true // 使用aapt2进行编译LOCAL_MODULE_TAGS := optional // 所有平台下进行编译
LOCAL_PACKAGE_NAME := MyApplication // 应用名
LOCAL_PRIVATE_PLATFORM_APIS := true // sdk的hide的api來编译
LOCAL_MULTILIB=32 // 编译32位app 
LOCAL_STATIC_ANDROID_LIBRARIES := \ // 引用Android系统库android-support-v4 \android-support-v7-appcompat \android-support-v13 \android-support-design \LOCAL_SRC_FILES := $(call all-java-files-under, app/src/main) // 指定java源代码文件
LOCAL_MANIFEST_FILE := app/src/main/AndroidManifest.xml // 指定AndroidManifest
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/app/src/main/res // 指定res  LOCAL_CERTIFICATE := platform // 使用平台签名LOCAL_DEX_PREOPT := false // 不进行odex优化
LOCAL_PROGUARD_ENABLED := disabled // 不进行混淆
include $(BUILD_PACKAGE) // 编译生成apk

bp脚本:可以参考~/source/packages/apps/Music

android_app {// 编译生成apkname: "MyApplication", // 应用名srcs: ["app/src/main/**/*.java"], // 指定java源代码文件resource_dirs: ["app/src/main/res"], // 指定res  manifest: "app/src/main/AndroidManifest.xml", // 指定AndroidManifest,如果manifest和bp在同一目录,可以不指定static_libs: [ // 引用Android系统库"android-support-v4","android-support-v7-appcompat","android-support-v7-appcompat","android-support-design"],sdk_version: "current",// 类似mk中LOCAL_SDK_VERSION,指定后不能使用系统hideapiproduct_specific: true, // 编译出来放在/product目录下(默认是放在/system目录下)optimize: { // 优化混淆配置proguard_flags_files: ["proguard.flags"],},
}
http://www.lryc.cn/news/508718.html

相关文章:

  • ubuntu使用ffmpeg+ZLMediaKit搭建rtsp推流环境
  • vue中的css深度选择器v-deep 配合!important
  • Python读写JSON文件
  • 重温设计模式--外观模式
  • 云原生服务网格Istio实战
  • linux蓝牙模块和手机配对
  • dockerfile文档编写(1):基础命令
  • 在 Go 中利用 ffmpeg 进行视频和音频处理
  • 【机器学习】探索机器学习与人工智能:驱动未来创新的关键技术
  • React Refs 完整使用指南
  • 程控电阻箱应用中需要注意哪些安全事项?
  • C/C++基础知识复习(43)
  • 苍穹外卖-day05redis 缓存的学习
  • VSCode搭建Java开发环境 2024保姆级安装教程(Java环境搭建+VSCode安装+运行测试+背景图设置)
  • PHP MySQL 插入多条数据
  • Oracle安装报错:将配置数据上载到资料档案库时出错
  • JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
  • Deformable DETR:Deformable Transformers for End-to-End Object Detection论文学习
  • 机器学习-43-可解释性机器学习库LIME
  • 【Unity功能集】TextureShop纹理工坊(五)选区
  • Spring Cloud OpenFeign快速入门demo
  • 研发效能DevOps: Vite 使用 Element Plus
  • sfnt-pingpong -测试网络性能和延迟的工具
  • Kubernetes、Docker 和 Docker Registry 关系是是什么?
  • docker部署微信小程序自动构建发布和更新
  • 模仿elementui的Table,实现思路
  • Unity中使用环形缓冲区平滑抖动值
  • 【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
  • SpringBoot使用 AOP 实现自定义日志记录并保存在Mysql
  • 谷歌开源最强天气预报AI模型 GenCast