All files / src/android AndroidManifest.xml.ts

100% Statements 7/7
100% Branches 0/0
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47          2x     5x                                                   5x             5x 5x 5x 5x    
import path from 'path';
import { Element } from 'xml-js';
 
import { readXmlFile, writeXmlFile, mergeXmlElements } from '../xml-manipulation';
 
const ANDROID_MANIFEST_XML_FILE_PATH = './AndroidManifest.xml';
 
function configureAndroidManifest(xml: Element): Element {
  const result = mergeXmlElements(xml, {
    elements: [
      {
        name: 'manifest',
        elements: [
          {
            name: 'application',
            attributes: {
              'android:name': '.MainApplication',
            },
            elements: [
              {
                name: 'activity',
                attributes: {
                  'android:name': '.MainActivity',
                  'android:theme': {
                    newValue: '@style/Theme.App.SplashScreen',
                  },
                },
              },
            ],
          },
        ],
      },
    ],
  });
  return result;
}
 
/**
 * @param androidMainPath Path to the main directory containing code and resources in Android project. In general that would be `android/app/src/main`.
 */
export default async function configureAndroidManifestXml(androidMainPath: string) {
  const filePath = path.resolve(androidMainPath, ANDROID_MANIFEST_XML_FILE_PATH);
  const xmlContent = await readXmlFile(filePath);
  const configuredXmlContent = configureAndroidManifest(xmlContent);
  await writeXmlFile(filePath, configuredXmlContent);
}