File tree 3 files changed +25
-30
lines changed
3 files changed +25
-30
lines changed Original file line number Diff line number Diff line change 10
10
11
11
``` toml
12
12
[lib ]
13
- crate-type = [" cdylib" ]
13
+ crate-type = [" lib " , " cdylib" ]
14
14
```
15
15
16
16
``` rust
17
17
#[cfg(target_os = " android" )]
18
- #[no_mangle]
19
- pub unsafe extern " C" fn ANativeActivity_onCreate (
20
- activity : * mut std :: os :: raw :: c_void ,
21
- saved_state : * mut std :: os :: raw :: c_void ,
22
- saved_state_size : usize ,
23
- ) {
24
- ndk_glue :: init (
25
- activity as _ ,
26
- saved_state as _ ,
27
- saved_state_size as _ ,
28
- app_main ,
29
- );
30
- }
18
+ ndk_glue :: ndk_glue! (main );
31
19
32
- pub fn app_main () {
20
+ fn main () {
33
21
println! (" hello world" );
34
22
}
35
23
```
Original file line number Diff line number Diff line change 1
1
#[ cfg( target_os = "android" ) ]
2
- #[ no_mangle]
3
- pub unsafe extern "C" fn ANativeActivity_onCreate (
4
- activity : * mut std:: os:: raw:: c_void ,
5
- saved_state : * mut std:: os:: raw:: c_void ,
6
- saved_state_size : usize ,
7
- ) {
8
- std:: env:: set_var ( "RUST_BACKTRACE" , "1" ) ;
9
- ndk_glue:: init (
10
- activity as _ ,
11
- saved_state as _ ,
12
- saved_state_size as _ ,
13
- app_main,
14
- ) ;
15
- }
2
+ ndk_glue:: ndk_glue!( main) ;
16
3
17
- pub fn app_main ( ) {
4
+ fn main ( ) {
18
5
println ! ( "hello world" ) ;
19
6
}
Original file line number Diff line number Diff line change @@ -14,6 +14,26 @@ use std::ptr::NonNull;
14
14
use std:: sync:: { RwLock , RwLockReadGuard } ;
15
15
use std:: thread;
16
16
17
+ #[ macro_export]
18
+ macro_rules! ndk_glue {
19
+ ( $main: ident) => {
20
+ #[ no_mangle]
21
+ unsafe extern "C" fn ANativeActivity_onCreate (
22
+ activity: * mut std:: os:: raw:: c_void,
23
+ saved_state: * mut std:: os:: raw:: c_void,
24
+ saved_state_size: usize ,
25
+ ) {
26
+ std:: env:: set_var( "RUST_BACKTRACE" , "1" ) ;
27
+ $crate:: init(
28
+ activity as _,
29
+ saved_state as _,
30
+ saved_state_size as _,
31
+ $main,
32
+ ) ;
33
+ }
34
+ }
35
+ }
36
+
17
37
pub fn android_log ( level : Level , tag : & CStr , msg : & CStr ) {
18
38
use android_log_sys:: LogPriority ;
19
39
let prio = match level {
You can’t perform that action at this time.
0 commit comments