Closed xseignard closed 1 year ago
should look like something like (on andorid) this according to https://support.singular.net/hc/en-us/articles/360038415852
import { AndroidConfig, ConfigPlugin, withProjectBuildGradle } from '@expo/config-plugins';
// see: https://support.singular.net/hc/en-us/articles/360038415852
const withSingularPermissions: ConfigPlugin = (config) => {
return AndroidConfig.Permissions.withPermissions(config, [
'android.permission.INTERNET',
'android.permission.ACCESS_NETWORK_STATE',
'com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE',
'com.android.vending.CHECK_LICENSE',
'com.google.android.gms.permission.AD_ID',
]);
};
const withSingularProjectBuildGradle: ConfigPlugin = (config) => {
return withProjectBuildGradle(config, async (config) => {
const singularMaven = "maven { url 'https://maven.singular.net/' }";
if (!config.modResults.contents.includes(singularMaven)) {
const anchor = `allprojects {\n repositories {`;
config.modResults.contents = config.modResults.contents.replace(
`${anchor}`,
`${anchor}\n ${singularMaven}`,
);
}
return config;
});
};
const withSingularSetup: ConfigPlugin = (config) => {
config = withSingularPermissions(config);
config = withSingularProjectBuildGradle(config);
return config;
};
export default withSingularSetup;
We also need something like this, as we do not have direct access to the iOS/Android projects
We had to slightly tweak this to use a regex to match the repositories block in the gradle file:
const { AndroidConfig, withProjectBuildGradle } = require('@expo/config-plugins');
const withSingularPermissions = (config) => {
return AndroidConfig.Permissions.withPermissions(config, [
'android.permission.INTERNET',
'android.permission.ACCESS_NETWORK_STATE',
'com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE',
'com.android.vending.CHECK_LICENSE',
'com.google.android.gms.permission.AD_ID',
]);
};
const withSingularProjectBuildGradle = (config) => {
return withProjectBuildGradle(config, async (config) => {
config.modResults.contents = config.modResults.contents.replace(
/allprojects {(?:.|\n)*repositories {/m,
str => `${str}\n maven { url 'https://maven.singular.net/' }`
)
return config;
});
};
module.exports = (config) => {
config = withSingularPermissions(config);
config = withSingularProjectBuildGradle(config);
return config;
};
hello @shefdanny @jzviaginSingular (as last committers on this repo)
any ETA? any thoughts? 🤷
@xseignard added support in latest release 3.1.18 Thank you for your input.
Thanks @shefdanny, eager to test and drop my custom plugin!
Hello, Regarding he installation docs: https://support.singular.net/hc/en-us/articles/360038415852 There's extra few steps that prevent the lib to be used on a expo managed workflow
One great addition to this lib would be to provide an
expo-config-plugin
see the common mods here