.NET for Android 构建项详解:掌握项目构建的核心元素

.NET for Android 构建项详解:掌握项目构建的核心元素

android .NET for Android provides open-source bindings of the Android SDK for use with .NET managed languages such as C# android 项目地址: https://gitcode.com/gh_mirrors/android6/android

前言

在 .NET for Android 开发中,构建项(Build Items)是控制应用程序或库项目构建过程的关键元素。本文将深入解析各种构建项的作用、用法及最佳实践,帮助开发者更好地掌握 .NET for Android 项目的构建机制。

核心构建项解析

1. AndroidAdditionalJavaManifest

用于 Java 依赖验证场景,指定额外的 POM 文件以验证依赖关系。通常用于处理 Java 库引用的父级或导入的 POM 文件。

<ItemGroup>
  <AndroidAdditionalJavaManifest 
    Include="mylib-parent.pom" 
    JavaArtifact="com.example:mylib-parent" 
    JavaVersion="1.0.0" />
</ItemGroup>

技术要点

  • 必须包含 JavaArtifact 元数据(格式:{GroupId}:{ArtifactId}
  • 必须包含 JavaVersion 元数据
  • 仅支持 .NET 9 及以上版本

2. AndroidAsset 与 Asset Packs

支持 Android 原生 Assets 资源,并在 .NET 9 中新增了对 Asset Packs 的支持。

基础用法

<ItemGroup>
  <AndroidAsset Include="Assets/movie.mp4" />
</ItemGroup>

高级用法(Asset Packs)

<ItemGroup>
  <AndroidAsset Include="Assets/movie2.mp4" AssetPack="assets1" />
  <AndroidAsset Include="Assets/movie3.mp4" AssetPack="assets2" />
</ItemGroup>

技术要点

  • Asset Packs 仅支持 .aab 打包格式
  • 可用于规避 Google Play 的包大小限制
  • 支持使用 base 包优化资源分布

3. AndroidAarLibrary 与 AndroidJavaLibrary

用于直接引用 Android 库文件:

  • AndroidAarLibrary:处理 .aar 文件
  • AndroidJavaLibrary:处理 .jar 文件

推荐做法

<ItemGroup>
  <AndroidLibrary Include="foo.jar" />  <!-- 等同于 AndroidJavaLibrary -->
  <AndroidLibrary Include="bar.aar" />  <!-- 等同于 AndroidAarLibrary -->
</ItemGroup>

4. AndroidNativeLibrary

用于添加原生库(.so 文件),支持两种 ABI 指定方式:

路径推断方式

lib/armeabi-v7a/libfoo.so  // 自动识别为 armeabi-v7a

显式指定方式

<ItemGroup>
  <AndroidNativeLibrary Include="path/to/libfoo.so">
    <Abi>armeabi-v7a</Abi>
  </AndroidNativeLibrary>
</ItemGroup>

高级构建项

1. AndroidBoundLayout

用于指定需要生成代码后端的布局文件,即使 AndroidGenerateLayoutBindings 属性设为 false

<ItemGroup>
  <AndroidBoundLayout Include="Resources\layout\Main.axml" />
</ItemGroup>

2. AndroidEnvironment

用于设置进程启动时的环境变量和系统属性:

<ItemGroup>
  <AndroidEnvironment Include="env.txt" />
</ItemGroup>

3. AndroidMavenLibrary

简化 Maven 依赖管理,自动下载并添加 Java 库:

<ItemGroup>
  <AndroidMavenLibrary 
    Include="com.squareup.okhttp3:okhttp" 
    Version="4.9.3" 
    Repository="Central" />
</ItemGroup>

4. AndroidResource

处理 Android 资源文件,支持条件编译:

<ItemGroup Condition=" '$(Configuration)' != 'Debug' ">
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
  <AndroidResource Include="Resources-Debug\values\strings.xml"/>
</ItemGroup>

绑定项目专用构建项

1. EmbeddedJar

在绑定项目中绑定并嵌入 Java 库:

<ItemGroup>
  <AndroidLibrary Include="Library.jar" />  <!-- 推荐方式 -->
</ItemGroup>

2. EmbeddedReferenceJar

仅嵌入不绑定的 Java 库:

<ItemGroup>
  <AndroidLibrary Include="Dependency.jar" Bind="false" />
</ItemGroup>

3. JavaSourceJar

处理包含 Javadoc 的 Java 源代码 JAR:

<ItemGroup>
  <JavaSourceJar Include="library-sources.jar">
    <CopyrightFile>copyright.txt</CopyrightFile>
    <UrlPrefix>https://example.com/docs</UrlPrefix>
  </JavaSourceJar>
</ItemGroup>

最佳实践建议

  1. 统一使用 AndroidLibrary:尽可能使用 AndroidLibrary 替代特定类型的构建项,简化项目配置

  2. 合理组织资源

    • 使用条件编译管理不同配置的资源
    • 考虑使用 LogicalName 实现资源别名
  3. 原生库管理

    • 明确指定 ABI 以避免混淆
    • 按 ABI 组织目录结构
  4. 依赖管理

    • 优先使用 AndroidMavenLibrary 管理 Maven 依赖
    • 使用 AndroidIgnoredJavaDependency 处理特殊依赖场景
  5. 大型资源处理

    • 对于大文件,使用 Asset Packs 功能
    • 合理规划 base 包和扩展包的内容

结语

掌握 .NET for Android 的构建项是优化项目结构和构建过程的关键。通过合理使用这些构建项,开发者可以更精细地控制应用程序的打包过程,实现更高效的资源管理和更灵活的构建配置。建议根据项目实际需求,选择最适合的构建项组合,并遵循本文推荐的最佳实践方案。

android .NET for Android provides open-source bindings of the Android SDK for use with .NET managed languages such as C# android 项目地址: https://gitcode.com/gh_mirrors/android6/android

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅亭策Serena

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值