'Попытка вызвать виртуальный метод \'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 проходят