React Native Android 本机模块在调试时运行良好但在发布时不起作用
React Native Android Native Module Works Well on Debug but Doesn't Work on Release
我在我的 React Native 应用程序中创建了一个 Android 本机模块来获取用户安装的应用程序列表。它在 Debug 上运行良好但在 Release 上不起作用。
*注意:我也尝试过使用一个名为 react-native-android-installed-apps 的 npm 包,但它
不起作用,所以我决定创建一个本机模块。
我不知道是什么问题导致我的原生模块在 Debug 上工作但在 Release 上不工作。这将是很棒的,如果有人能向我指出问题所在,我将非常感激。
这是我的代码:
@ReactMethod
public void getUserInstalledApps(Callback successCallback) throws JSONException {
PackageManager pm = reactContext.getPackageManager();
WritableArray array = new WritableNativeArray();
List<AppList> apps = new ArrayList<AppList>();
Gson g = new Gson();
List<PackageInfo> packs = reactContext.getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
if ((!isSystemPackage(p))) {
String appName = p.applicationInfo.loadLabel(reactContext.getPackageManager()).toString();
String packages = p.applicationInfo.packageName;
apps.add(new AppList(appName, packages));
}
}
for (AppList co : apps) {
JSONObject jo = new JSONObject(g.toJson(co));
WritableMap wm = convertJsonToMap(jo);
array.pushMap(wm);
}
successCallback.invoke(array);
}
private boolean isSystemPackage(PackageInfo pkgInfo) {
return (pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
}
public class AppList {
private String name;
private String packages;
public AppList(String name, String packages) {
this.name = name;
this.packages = packages;
}
public String getName() {
return name;
}
public String getPackages() {
return packages;
}
}
我已经通过为我的原生模块添加一些 pro-guard 规则来修复它
我在我的 React Native 应用程序中创建了一个 Android 本机模块来获取用户安装的应用程序列表。它在 Debug 上运行良好但在 Release 上不起作用。
*注意:我也尝试过使用一个名为 react-native-android-installed-apps 的 npm 包,但它 不起作用,所以我决定创建一个本机模块。
我不知道是什么问题导致我的原生模块在 Debug 上工作但在 Release 上不工作。这将是很棒的,如果有人能向我指出问题所在,我将非常感激。
这是我的代码:
@ReactMethod
public void getUserInstalledApps(Callback successCallback) throws JSONException {
PackageManager pm = reactContext.getPackageManager();
WritableArray array = new WritableNativeArray();
List<AppList> apps = new ArrayList<AppList>();
Gson g = new Gson();
List<PackageInfo> packs = reactContext.getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
if ((!isSystemPackage(p))) {
String appName = p.applicationInfo.loadLabel(reactContext.getPackageManager()).toString();
String packages = p.applicationInfo.packageName;
apps.add(new AppList(appName, packages));
}
}
for (AppList co : apps) {
JSONObject jo = new JSONObject(g.toJson(co));
WritableMap wm = convertJsonToMap(jo);
array.pushMap(wm);
}
successCallback.invoke(array);
}
private boolean isSystemPackage(PackageInfo pkgInfo) {
return (pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
}
public class AppList {
private String name;
private String packages;
public AppList(String name, String packages) {
this.name = name;
this.packages = packages;
}
public String getName() {
return name;
}
public String getPackages() {
return packages;
}
}
我已经通过为我的原生模块添加一些 pro-guard 规则来修复它