'Попытка вызвать виртуальный метод \'android.content.Context android.app.Application.getApplicationContext()\'для ссылки на пустой объект'

Я использую https://github.com/AppsFlyerSDK/react-native-appsflyer в нашем приложении-родном приложении.

  • Мне удалось настроить часть iOS и успешно выполнить интеграционные тесты.
  • но я борюсь с интеграцией Android.

1-я проблема:

  • Когда я создаю приложение на моем устройстве, я получаю эту ошибку:

'Attempt to invoke virtual method \'android.content.Context android.app.Application.getApplicationContext()\' on a null object reference'

внутри appsFlyer.initSdk

2-я проблема:

  • Когда я запускаю тест интеграции Android SDK:

Я получаю этот результат (см. Скриншот)

Вот мой код:

`` `

...
...

// appsFlyer options
const options = {
  devKey: 'Bl9i45ho07lp43',
  isDebug: true,
};

if (Platform.OS === 'ios') {
  options.appId = '1165972436';
}

this.onInstallConversionDataCanceller = appsFlyer.onInstallConversionData(
 (data) => {
   console.log(data);
 }
);

appsFlyer.initSdk(options,
  (result) => {
    console.log(result);
 },
  (error) => {
    console.error('error inside appsFlyer.initSdk ==>', error);
 }
);

.....
.....

class App extends React.PureComponent {


  state = {
    appState: AppState.currentState,
  }

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    if (this.onInstallConversionDataCanceller) {
      this.onInstallConversionDataCanceller();
    }
    AppState.removeEventListener('change', this._handleAppStateChange);
  }

  _handleAppStateChange = (nextAppState) => {
    if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
      if (Platform.OS === 'ios') {
        appsFlyer.trackAppLaunch();
      }
   }

  if (this.state.appState.match(/active|foreground/) && nextAppState === 'background') {
    if (this.onInstallConversionDataCanceller) {
      this.onInstallConversionDataCanceller();
    }
  }

  this.setState({ appState: nextAppState });
 }
}

`` `

1 ответ

Я нашел решение:

  • Первоначально я следовал документации, добавив new RNAppsFlyerPackage(MainApplication.this) внутри getPackages() метод в MainApplication.java но я продолжал иметь ошибку, говоря, что я не мог использовать аргументы с RNAppsFlyerPackage()

  • Мне пришлось удалить аргументы, чтобы я мог построить проект, но это не сделало тесты интеграции Android

1 - Решение было очистить проект

2 - удалить node_modules, используя:

rm -rf /node_modules

3 - после этого мне предложили использовать аргументы внутри метода

new RNAppsFlyerPackage(MainApplication.this)

и теперь тесты интеграции Android проходят

Другие вопросы по тегам