обновление eas не работает должным образом для моего проекта
Я использую сборку и обновление eas в своем выставочном приложении, следил за документацией по реализации, и все работало нормально. Но я только вчера протестировал его, и сейчас он не работает.
Но я понял, что когда я обновляю приложение 2 раза (как указано в документах), оно не загружает никаких новых обновлений, но если я делаю это несколько раз (почти 5 раз), хотя обновление работает на этом конкретном обновлении. но активы (изображения и значки) исчезли.
И если я снова обновлю приложение, то обновление исчезнет, и активы вернутся, как будто оно вернется к старому обновлению (которое на самом деле является самой сборкой).
Прямо сейчас я использую app.config.js, а также app.json (мне нужен app.json для рекламы Google, так как он не читает конфигурацию из app.config.js).
Вот файлы конфигурации;
app.config.js
import "dotenv/config";
export default {
expo: {
backgroundColor: "#1A1A1A",
owner: "owner",
name: "name",
slug: "slug",
version: "1.0.0",
assetBundlePatterns: ["**/*"],
extra: {
eas: {
projectId: "<project id>",
},
...
},
runtimeVersion: "1.0.1", // changed the runtime version from 1.0.0 to 1.0.1 as i thought this may be the reason
updates: {
url: "https://u.expo.dev/<project id>",
},
android: {
...,
},
},
};
app.json
{
"react-native-google-mobile-ads": {
"android_app_id": "ca-app-pub-****************" // my google ads id
}
}
androidManifest.xml
<meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://u.expo.dev/<project id>"/>
<meta-data android:name="expo.modules.updates.ENABLED" android:value="true"/>
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/>
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/>
<meta-data android:name="expo.modules.updates.EXPO_RUNTIME_VERSION" android:value="1.0.1"/>
Я думаю, что это единственный соответствующий код для обновлений eas и eas.
Любая помощь приветствуется.
Спасибо
1 ответ
Я использовал этот код для доступа к переменным env;
В моем app.config.js внутри объекта;
extra: {
BASE_URL: process.env.BASE_URL
}
Это загрузитBASE_URL
из .env во время сборки.
Теперь, чтобы получить к нему доступ в моем коде, я использовал;
import Constants from 'expo-constants'
const baseUrl = Constants.manifest.extra.BASE_URL
Проблема заключается вConstants.manifest
, он становится неопределенным после того, как мы отправим обновлениеextra
в этом случае не определено, что нарушает работу приложения. И если приложение ломается из-за обновления, eas откатывается к предыдущему обновлению.
Чтобы исправить это, используйте Constants.expoConfig.extra.BASE_URL
.
Еще одна вещь, на которую следует обратить внимание: при отправке обновления нам также необходимо загрузить переменные env с новым обновлением, что делается следующим образом;
BASE_URL=https://example.com ANOTHER_VAR=some_value eas update --branch preview --message "some message"