Добавьте android:name="кое-что" в AndroidManifest.xml тег "application" из Cordova plugin.xml
Я решил открыть новый вопрос, потому что ни один из тех, которые уже размещены, не имеет хорошего ответа.
Мне нужно обновить AndroidManifest.xml "из plugin.xml", чтобы тег
android:name="mypackage"
Как это сделать?
Спасибо
3 ответа
У меня была та же проблема, и я использовал крюк Cordova, чтобы сделать работу.
Сначала отредактируйте свой config.xml
файл для добавления крючка:
<platform name="android">
<hook type="after_prepare" src="scripts/android_app_name.js" />
</platform>
Создайте файл с именем scripts/android_app_name.js
(установите его исполняемым), а внутри просто используйте функцию поиска / замены. Это должно выглядеть так:
#!/usr/bin/env node
module.exports = function(context) {
var fs = context.requireCordovaModule('fs'),
path = context.requireCordovaModule('path');
var platformRoot = path.join(context.opts.projectRoot, 'platforms/android');
var manifestFile = path.join(platformRoot, 'AndroidManifest.xml');
if (fs.existsSync(manifestFile)) {
fs.readFile(manifestFile, 'utf8', function (err,data) {
if (err) {
throw new Error('Unable to find AndroidManifest.xml: ' + err);
}
var appClass = 'YOU_APP_CLASS';
if (data.indexOf(appClass) == -1) {
var result = data.replace(/<application/g, '<application android:name="' + appClass + '"');
fs.writeFile(manifestFile, result, 'utf8', function (err) {
if (err) throw new Error('Unable to write into AndroidManifest.xml: ' + err);
})
}
});
}
};
Самый простой и последний (Cordova версия 8.1.2) способ сделать это использовать edit-config
пометить как ниже:
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:name="mypackage" />
</edit-config>
Аналогичным образом вы можете редактировать и другие конфигурации.
Надеюсь, это будет полезно!
Действительно, как отметил Илреймендес, правильный путь таков:
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application android:name="com.mypackage.MyApplication"/>
</edit-config>
Также обратите внимание, что изменения будут отменены, если вы удалите плагин, что не произойдет с трюком ловушки.
Я думаю, что у меня была такая же проблема, как и у вас. Я нашел это в документации к кордове.
https://cordova.apache.org/docs/en/4.0.0/plugin_ref_spec.md.html
Если вы ищете в заголовке "Элемент config-file", вы найдете пример:
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity android:name="com.foo.Foo" android:label="@string/app_name">
<intent-filter>
</intent-filter>
</activity>
</config-file>