Если вы хотите создать один каталог, используйте mkdir
new File("/path/directory").mkdir();
Если вы хотите создать иерархию структуры папок, используйте mkdirs
new File("/path/directory").mkdirs();
строковые ресурсы могут использоваться в сочетании с исходными наборами .
при определении значений производства в main
и переопределении в debug
, этого должно быть достаточно.
Например:
src/main/res/values/strings.xml
(main
по умолчанию для всех типов сборки). src/debug/res/values/strings.xml
(модульные тесты также имеют тип сборки debug
). эти файлы будут объединены при сборке; и он переопределит значения, где совпадает имя строкового ресурса. source-set debug
может иметь только несколько файлов, потому что он имеет только переопределения.
В AdMob проблема заключается просто в том, что у каждого типа сборки разные имена пакетов (что не поддерживается); недавно закончились добавлением альтернативного имени пакета с суффиксом .debug
.
Вы можете использовать либо метод buildConfigField , либо метод resValue блока buildType в плагине Android Gradle. Первый генерирует глобальные константы Java, а второй - ресурсы Android.
Вы можете просмотреть официальные документы, демонстрируя пример использования здесь .
В любом случае, я уточню здесь, если это поможет.
Сначала вы определяете одно или несколько полей конфигурации или значения res в вашем файле build.gradle
. В качестве примера для идентификатора AdMob вы должны определить строковые константы.
android {
buildTypes {
release {
buildConfigField "String", "ADMOB_ID", '"ConstantIdForRelease"'
resValue "string", "admob_id", "StringResourceForRelease"
}
debug {
buildConfigField "String", "ADMOB_ID", '"ConstantIdForDebug"'
resValue "string", "admob_id", "StringResourceForDebug"
}
}
При этом будут созданы BuildConfig.java
и временные generated.xml
файлы для вариантов выпуска и отладки:
Релиз:
/ app / build / сгенерированный / source / buildConfig / релиз /your/package/app/BuildConfig.java:
public final class BuildConfig {
public static final String ADMOB_ID = "ConstantIdForRelease";
}
/ app / build / генерированный / res / resValues / выпуск ] /values/generated.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Values from build type: releaes -->
<string name="admob_id" translatable="false">StringResourceForRelease</string>
</resource>
Отладка:
/ app / build / generate / source / buildConfig / debug / your /package/app/BuildConfig.java:
public final class BuildConfig {
public static final String ADMOB_ID = "ConstantIdForDebug";
}
/ app / build / generate / res / resValues / debug /values/generated.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Values from build type: debug -->
<string name="admob_id" translatable="false">StringResourceForDebug</string>
</resource>
[1126 ] Затем в вашем коде вы просто используете константу или ресурс, как обычно:
callMethodThatNeedsAdModId(BuildConfig.ADMOB_ID);
// OR
callMethodThatNeedsAdModId(context.getString(R.string.admob_id));
Фактическое значение переменной конфигурации сборки или строкового ресурса будет определяться на основе текущего типа / варианта сборки. [ 1127]
В любом случае, так что вы должны использовать? Если вам нужен доступ к строке конфигурации в ресурсах XML (скажем, вы хотите изменить label
действия в файле AndroidManifest.xml
при отладке), вы должны использовать этот ресурс. В противном случае просто используйте свойство build config, так как вам не нужен контекст для доступа к нему.
Надеюсь, это поможет!