Android

Android/app/src/main/java/com/项目名下创建文件VersionInfo.kt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.项目名

import android.content.Context
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import com.facebook.react.bridge.ReactMethod
import com.facebook.react.bridge.Promise

class VersionInfo(private val reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
override fun getName(): String {
return "VersionInfo"
}

@ReactMethod
fun getAndroidVersion(promise: Promise) {
val version = reactContext.packageManager.getPackageInfo(reactContext.packageName, 0).versionName
promise.resolve(version)
}

@ReactMethod
fun getAndroidVersionCode(promise: Promise) {
val versionCode = reactContext.packageManager.getPackageInfo(reactContext.packageName, 0).versionCode
promise.resolve(versionCode)
}
}

Android/app/src/main/java/com/项目名/MainApplication.kt中 新增代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 导入需要用的包
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.NativeModule
import com.facebook.react.uimanager.ViewManager

// 在getPackages中添加自定义包
override fun getPackages(): List<ReactPackage> =
PackageList(this).packages.apply {
// 其他包...
add(VersionInfoPackage()) // 添加这一行
}

// 添加VersionInfoPackage类
class VersionInfoPackage : ReactPackage {
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
return listOf(VersionInfo(reactContext))
}

RN中的使用方式

1
2
3
4
5
6
7
import {NativeModules} from 'react-native';

const {VersionInfo} = NativeModules;

VersionInfo.getAndroidVersion().then((versionName) => {
console.log(versionName)
});

版本号修改
android/app/build.gradle中 修改versionName字段

IOS

还没写呢😜