IOSで完全に動作する反応ネイティブがありますが、Android studioでコンパイルできません。MainApplicationとMainActivityのインポートの問題が原因です。ReactネイティブFBSDKガイドラインに従いました。
MainApplicationで、インポートステートメントに「シンボルを解決できません」と表示されます。
import com.facebook.react.ReactApplication; import com.facebook.react.ReactNativeHost;
そして次のエラー:
エラー:(7、8)エラー:MainActivityは抽象ではなく、ReactActivityの抽象メソッドgetPackages()をオーバーライドしませんエラー:タスク ':app:compileDebugJavaWithJavac'の実行に失敗しました。
コンパイルに失敗しました。詳細については、コンパイラエラー出力を参照してください。
私のMainApplicationは次のようになります。
package com.ExampleApp;
import Android.app.Application;
import com.facebook.react.ReactApplication;
import com.tradle.react.UdpSocketsModule;
import com.peel.react.TcpSocketsModule;
import com.peel.react.rnos.RNOSModule;
import com.masteratul.exceptionhandler.ReactNativeExceptionHandlerPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.Shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.facebook.CallbackManager;
import com.facebook.FacebookSdk;
import com.facebook.reactnative.androidsdk.FBSDKPackage;
import com.facebook.appevents.AppEventsLogger;
import Java.util.Arrays;
import Java.util.List;
public class MainApplication extends Application implements ReactApplication {
private static CallbackManager mCallbackManager = CallbackManager.Factory.create();
protected static CallbackManager getCallbackManager() {
return mCallbackManager;
}
@Override
public void onCreate() {
super.onCreate();
// Use AppEventsLogger to log custom events.
AppEventsLogger.activateApp(this);
}
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new UdpSocketsModule(),
new TcpSocketsModule(),
new RNOSModule(),
new ReactNativeExceptionHandlerPackage(),
new VectorIconsPackage(),
new FBSDKPackage(mCallbackManager)
);
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
}
そして私のMainActivity:
import Android.content.Intent;
import com.facebook.react.ReactActivity;
public class MainActivity extends ReactActivity {
/**
* Returns the name of the main component registered from JavaScript.
* This is used to schedule rendering of the component.
*/
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
MainApplication.getCallbackManager().onActivityResult(requestCode, resultCode, data);
}
@Override
protected String getMainComponentName() {
return "ExampleApp";
}
}
反応ネイティブプロジェクトをExpoから切り離した後も、同じことが起こりました。
MainApplicationで、これらのインポートに対して「エラーはシンボルを解決できません」がありました。
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
私が使用したpackage.jsonファイルで:
"react-native": "https://github.com/expo/react-native/archive/sdk-29.0.0.tar.gz",
問題は、Androidがそのようなnode_modulesのディレクトリを見つけられないことでした。
私がしなければならなかった問題を修正するために:
それを次のように変更します。
"反応ネイティブ": "^ 0.57.8"、
node_modulesファイルを削除する
それが私の問題を解決したものです。私が助けてくれたことを願っています。
反応ネイティブのアップグレード:
react-native upgrade