Skip to content

Commit a8d7129

Browse files
authored
Add support for android string resource id in application label. (#146)
Fixes #145 * New android metadata field 'apk_name' used for apk file naming (fall back to artifact name). * Remove useless 'android:name' field from android manifest. * CHANGELOG.md, README.md and formatting fixes. * CHANGELOG.md version and notes fixed. * Rewrite changelog entry and remove date for *unreleased* version
1 parent 7936944 commit a8d7129

File tree

6 files changed

+25
-3
lines changed

6 files changed

+25
-3
lines changed

cargo-apk/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# Unreleased
2+
3+
- Added `apk_name` field to android metadata for APK file naming (defaults to Rust library name if unspecified).
4+
The application label is now no longer used for this purpose, and can contain a string resource ID from now on.
5+
16
# 0.6.0 (2021-04-20)
27

38
- **Breaking:** uses `ndk-build`'s new (de)serialized `Manifest` struct to properly serialize a toml's `[package.metadata.android]` to an `AndroidManifest.xml`. The `[package.metadata.android]` now closely resembles the structure of [an android manifest file](https://developer.android.com/guide/topics/manifest/manifest-element). See [README](README.md) for an example of the new `[package.metadata.android]` structure and all manifest attributes that are currently supported.

cargo-apk/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ resources = "path/to/resources_folder"
3838
# If not specified, assets will not be included in the APK.
3939
assets = "path/to/assets_folder"
4040

41+
# Name for final APK file.
42+
# Defaults to package name.
43+
apk_name = "myapp"
44+
4145
# See https://developer.android.com/guide/topics/manifest/uses-sdk-element
4246
#
4347
# Defaults to a `min_sdk_version` of 23 and `target_sdk_version` is based on the ndk's default platform.

cargo-apk/src/apk.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,16 @@ impl<'a> ApkBuilder<'a> {
121121
)
122122
.to_owned()
123123
});
124+
let apk_name = self
125+
.manifest
126+
.apk_name
127+
.clone()
128+
.unwrap_or_else(|| artifact.name().to_string());
124129

125130
let config = ApkConfig {
126131
ndk: self.ndk.clone(),
127132
build_dir: self.build_dir.join(artifact),
133+
apk_name,
128134
assets,
129135
resources,
130136
manifest,

cargo-apk/src/manifest.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use std::path::Path;
66

77
pub struct Manifest {
88
pub version: String,
9+
pub apk_name: Option<String>,
910
pub android_manifest: AndroidManifest,
1011
pub build_targets: Vec<Target>,
1112
pub assets: Option<String>,
@@ -24,6 +25,7 @@ impl Manifest {
2425
.unwrap_or_default();
2526
Ok(Self {
2627
version: toml.package.version,
28+
apk_name: metadata.apk_name,
2729
android_manifest: metadata.android_manifest,
2830
build_targets: metadata.build_targets,
2931
assets: metadata.assets,
@@ -50,6 +52,7 @@ struct PackageMetadata {
5052

5153
#[derive(Clone, Debug, Default, Deserialize)]
5254
struct AndroidMetadata {
55+
apk_name: Option<String>,
5356
#[serde(flatten)]
5457
android_manifest: AndroidManifest,
5558
#[serde(default)]

ndk-build/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# Unreleased
2+
3+
- New `ApkConfig` field `apk_name` is now used for APK file naming, instead of the application label.
4+
15
# 0.2.0 (2021-04-20)
26

37
- **Breaking:** refactored `Manifest` into a proper (de)serialization struct. `Manifest` now closely matches [`an android manifest file`](https://developer.android.com/guide/topics/manifest/manifest-element).

ndk-build/src/apk.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use std::process::Command;
88
pub struct ApkConfig {
99
pub ndk: Ndk,
1010
pub build_dir: PathBuf,
11+
pub apk_name: String,
1112
pub assets: Option<PathBuf>,
1213
pub resources: Option<PathBuf>,
1314
pub manifest: AndroidManifest,
@@ -22,12 +23,11 @@ impl ApkConfig {
2223

2324
fn unaligned_apk(&self) -> PathBuf {
2425
self.build_dir
25-
.join(format!("{}-unaligned.apk", self.manifest.application.label))
26+
.join(format!("{}-unaligned.apk", self.apk_name))
2627
}
2728

2829
fn apk(&self) -> PathBuf {
29-
self.build_dir
30-
.join(format!("{}.apk", self.manifest.application.label))
30+
self.build_dir.join(format!("{}.apk", self.apk_name))
3131
}
3232

3333
pub fn create_apk(&self) -> Result<UnalignedApk, NdkError> {

0 commit comments

Comments
 (0)