AndroidManifest serializer and deserializer for Rust. This library will also likely continue to stay up to date with the official AndroidManifest specification as changes happen.
# Cargo.toml
[dependencies]
android-manifest = "*"
Create AndroidManifest.xml
by yourself:
let manifest = AndroidManifest {
package: "com.example.toggletest".to_string(),
version_code: Some(1),
version_name: Some("1.0".to_string()),
application: Application {
allow_backup: Some(true.into())),
icon: Some(MipmapOrDrawableResource::mipmap("ic_launcher", None)),
label: Some(StringResourceOrString::resource("app_name", None)),
theme: Some(StyleResource::new("AppTheme", None)),
activity: vec![Activity {
label: Some(StringResourceOrString::resource("app_name", None)),
name: "com.example.toggletest.MainActivity".to_string(),
intent_filter: vec![IntentFilter {
action: vec![Action {
name: Some("android.intent.action.MAIN".to_string()),
}],
category: vec![Category {
name: Some("android.intent.category.LAUNCHER".to_string()),
}],
..Default::default()
}],
..Default::default()
}],
..Default::default()
},
..Default::default()
};
let serialized_manifest = android_manifest::to_string_pretty(&manifest).unwrap();
Or parse any AndroidManifest.xml
file:
let xml = r#"
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.toggletest"
android:versionCode="1"
android:versionName="1.0">
<application android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:label="@string/app_name"
android:name="com.example.toggletest.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>"#;
let manifest: AndroidManifest = android_manifest::from_str(xml).unwrap();
This project is licensed under Apache License, Version 2.0, (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in toml-rs by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.