当前位置: 首页> 科技> 互联网 > 网页设计模板html代码百度云_赣州网站优化_百度权重_杭州网络整合营销公司

网页设计模板html代码百度云_赣州网站优化_百度权重_杭州网络整合营销公司

时间:2025/8/3 8:50:44来源:https://blog.csdn.net/learnframework/article/details/147017736 浏览次数:0次
网页设计模板html代码百度云_赣州网站优化_百度权重_杭州网络整合营销公司

背景:

经常有学员朋友反馈一些Android.bp不知道如何写,希望有一个比较全面的文档进行说明进行学习。其实这个问题很多同学应该都有,不过在这里我其实不建议大家刚开始就一直想着要全面掌握Android.bp相关语法为目的方式进行学习,主要原因有以下几个:

1、这种方式大大耗费大家的时间,而且大家耗费时间去学习一堆的语法,学习了前面忘记了后面,最后还是很多不懂

2、学习了很多Android.bp相关语法,可能大部分都是平常不用的,或者是基本上用不上的。

这个就有点类似大家刚开始去学习某个编程语言,一上来就想要一个很全面文档介绍来学习掌握,这种肯定不是正确方式,正确Android.bp快速学习方式建议如下:

1、一定要先从简单的案例开始进行实战编写掌握,比如大家可以刚开始不需要在乎什么语法,属性等,直接在系统写简单的Android.bp,主要包含常见的native程序,so库,apk程序,jar包等目标类型的bp。不需要多么复杂的功能,只需要可以实现最基本的既可以。

2、要多参考学习aosp系统中现有的一些Android.bp,完全可以基于它们改造成自己的项目Android.bp.

3、不用纠结于实战过程中有偶尔不懂的属性语法,这种正常,遇到时候再进查询理解既可以

4、如果本身Android.mk,可以用命令进行转换,或者研究命令转换源码

Android.bp相关介绍

定位与作用‌:Android.bp 是 Android 构建系统(Soong)的核心配置文件,用于定义模块的构建规则及依赖关系。它替代了传统的 Android.mk 文件,语法类似 JSON,但更简洁高效,支持模块化管理‌。

发展历程‌:从 Android 7.0 开始引入,Android 8.0 后成为默认配置‌,基于 Ninja 构建框架,通过 Blueprint 解析,最终生成 Ninja 文件执行编译‌

常见模块案例

Java 库模块‌
模块类型‌: java_library
用于编译 Java 代码生成 .jar 文件。

java_library {         //模块类型为 java 库,这个类型与 java_library_static 是完全一样的name: "api.test",  //模块名installable: true, //下面详细说明srcs: ["java/**/*.java", //文件列表],static_libs: ["xxxx"],  // 依赖其他库
}

installable 配置有必要作下说明

java_library builds and links sources into a .jar file for the device, and possibly for the host as well. By default, a java_library has a single variant that produces a .jar file containing .class files that were compiled against the device bootclasspath. This jar is not suitable for installing on a device, but can be used as a static_libs dependency of another module. Specifying installable: true will product a .jar file containing classes.dex files, suitable for installing on a device.

简单的说就是如果不指定 installable: true, 则编译出来的 jar 包里面是 .class 文件。这种包是没法安装到系统上的,只能给其他 java 模块作为 static_libs 依赖。
指定 installable: true, 则编译出来的 jar 包里面是 classes.dex 文件。这种才是 Android 虚拟机可以加载的格式。

‌Android 应用模块‌

‌模块类型‌: android_app
构建 APK 应用。

android_app {name: "MyApp",srcs: ["src/**/*.java"],manifest: "src/main/AndroidManifest.xml",resource_dirs: ["res"],static_libs: ["mylibrary"],  // 依赖内部 Java 库certificate: "platform",      // 使用系统签名
}

‌native共享库模块‌

‌模块类型‌: cc_library_shared
生成动态共享库(.so 文件)。

    cc_library_shared {name: "mylib",srcs: ["src/*.cpp"],shared_libs: ["liblog"],export_include_dirs: ["include"],
}

native静态库模块‌

‌模块类型‌: cc_library_static
生成静态库(.a 文件)。

cc_library_static {name: "mylib_static",srcs: ["src/*.cpp"],include_dirs: ["include"],
}

‌native可执行文件模块‌

‌模块类型‌: cc_binary
编译 C/C++ 可执行程序。

cc_binary {name: "mybin",srcs: ["main.cpp"],cflags: ["-Wall", "-Werror"],shared_libs: ["liblog"],
}

‌预编译库模块‌

‌模块类型‌: cc_prebuilt_binary
引入预编译的二进制文件。

cc_prebuilt_binary {name: "prebuilt_bin",srcs: ["prebuilt/*.so"],
}

‌Android.bp相关属性文档查阅

写Android.bp时候可能会遇到一些陌生的属性等,这些属性需要有相关文档来查询作用。
相关Android.bp属性介绍的全面文章可以查阅如下:
https://note.qidong.name/demo/soong_build/

如何基于现有Android.mk升级成Android.bp

编写bp时候如果之前有Android.mk,那其实可以直接使用androidmk命令进行转换然后改造,当然也可以自己手写,Android.mk和Android.bp中对应的关键字,其实都有对应的关系,这个也就是为啥可以命令转换的核心原理。
在这里插入图片描述
可以去目录:

build/soong/androidmk/androidmk/android.go

文件参考

var moduleTypes = map[string]string{"BUILD_SHARED_LIBRARY":        "cc_library_shared","BUILD_STATIC_LIBRARY":        "cc_library_static","BUILD_HOST_SHARED_LIBRARY":   "cc_library_host_shared","BUILD_HOST_STATIC_LIBRARY":   "cc_library_host_static","BUILD_HEADER_LIBRARY":        "cc_library_headers","BUILD_EXECUTABLE":            "cc_binary","BUILD_HOST_EXECUTABLE":       "cc_binary_host","BUILD_NATIVE_TEST":           "cc_test","BUILD_HOST_NATIVE_TEST":      "cc_test_host","BUILD_NATIVE_BENCHMARK":      "cc_benchmark","BUILD_HOST_NATIVE_BENCHMARK": "cc_benchmark_host","BUILD_JAVA_LIBRARY":             "java_library_installable", // will be rewritten to java_library by bpfix"BUILD_STATIC_JAVA_LIBRARY":      "java_library","BUILD_HOST_JAVA_LIBRARY":        "java_library_host","BUILD_HOST_DALVIK_JAVA_LIBRARY": "java_library_host_dalvik","BUILD_PACKAGE":                  "android_app","BUILD_RRO_PACKAGE":              "runtime_resource_overlay","BUILD_CTS_EXECUTABLE":          "cc_binary",               // will be further massaged by bpfix depending on the output path"BUILD_CTS_SUPPORT_PACKAGE":     "cts_support_package",     // will be rewritten to android_test by bpfix"BUILD_CTS_PACKAGE":             "cts_package",             // will be rewritten to android_test by bpfix"BUILD_CTS_TARGET_JAVA_LIBRARY": "cts_target_java_library", // will be rewritten to java_library by bpfix"BUILD_CTS_HOST_JAVA_LIBRARY":   "cts_host_java_library",   // will be rewritten to java_library_host by bpfix
}var prebuiltTypes = map[string]string{"SHARED_LIBRARIES": "cc_prebuilt_library_shared","STATIC_LIBRARIES": "cc_prebuilt_library_static","EXECUTABLES":      "cc_prebuilt_binary","JAVA_LIBRARIES":   "java_import","APPS":             "android_app_import","ETC":              "prebuilt_etc",
}

更多framework实战开发,请关注下面千里马学框架“”

关键字:网页设计模板html代码百度云_赣州网站优化_百度权重_杭州网络整合营销公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: