public static AndroidManifest createManifest(String applicationPackage, String applicationClassName, List<String> componentQualifiedNames, Map<String, MetaDataInfo> metaDataQualifiedNames, List<String> permissionQualifiedNames, int minSdkVersion, int maxSdkVersion, int targetSdkVersion, boolean debugabble) { return new AndroidManifest(false, applicationPackage, applicationClassName, componentQualifiedNames, metaDataQualifiedNames, permissionQualifiedNames, minSdkVersion, maxSdkVersion, targetSdkVersion, debugabble); }
public void applicationRegistered(Element element, AndroidManifest manifest, ElementValidation valid) { if (manifest.isLibraryProject()) { return; } String applicationClassName = manifest.getApplicationClassName(); if (applicationClassName != null) { TypeElement typeElement = (TypeElement) element; String componentQualifiedName = typeElement.getQualifiedName().toString(); String generatedComponentQualifiedName = componentQualifiedName + classSuffix(); if (!typeElement.getModifiers().contains(Modifier.ABSTRACT) && !applicationClassName.equals(generatedComponentQualifiedName)) { if (applicationClassName.equals(componentQualifiedName)) { valid.addError("The AndroidManifest.xml file contains the original component, and not the AndroidAnnotations generated component." + " Please register " + generatedComponentQualifiedName + " instead of " + componentQualifiedName); } else { valid.addWarning("The component " + generatedComponentQualifiedName + " is not registered in the AndroidManifest.xml file."); } } } else { valid.addError("No application class registered in the AndroidManifest.xml"); } }
public String getRClassPackageName(AndroidManifest manifest) { String resourcePackageName = environment.getOptionValue(OPTION_RESOURCE_PACKAGE_NAME); if (resourcePackageName != null) { return resourcePackageName; } else { return manifest.getApplicationPackage(); } }
public void hasPermission(AndroidManifest androidManifest, ElementValidation valid, String permissionQualifiedName) { List<String> permissionQualifiedNames = androidManifest.getPermissionQualifiedNames(); if (!permissionQualifiedNames.contains(permissionQualifiedName)) { if (androidManifest.isLibraryProject()) { valid.addWarning("Your library should require the " + permissionQualifiedName + " permission."); } else { valid.addError("Your application must require the " + permissionQualifiedName + " permission."); } } }
public void componentRegistered(Element element, AndroidManifest androidManifest, boolean printWarning, ElementValidation valid) { TypeElement typeElement = (TypeElement) element; if (typeElement.getModifiers().contains(Modifier.ABSTRACT)) { return; } if (androidManifest.isLibraryProject()) { return; } String componentQualifiedName = typeElement.getQualifiedName().toString(); String generatedComponentQualifiedName = componentQualifiedName + classSuffix(); List<String> componentQualifiedNames = androidManifest.getComponentQualifiedNames(); if (!componentQualifiedNames.contains(generatedComponentQualifiedName)) { String simpleName = typeElement.getSimpleName().toString(); String generatedSimpleName = simpleName + classSuffix(); if (componentQualifiedNames.contains(componentQualifiedName)) { valid.addError("The AndroidManifest.xml file contains the original component, and not the AndroidAnnotations generated component. Please register " + generatedSimpleName + " instead of " + simpleName); } else { if (printWarning) { valid.addWarning("The component " + generatedSimpleName + " is not registered in the AndroidManifest.xml file."); } } } }
protected boolean shouldGuardActivityOptions() { return androidManifest.getMinSdkVersion() < MIN_SDK_WITH_ACTIVITY_OPTIONS; } }
return AndroidManifest.createLibraryManifest(applicationPackage, minSdkVersion, maxSdkVersion, targetSdkVersion); permissionQualifiedNames.addAll(usesPermissionQualifiedNames); return AndroidManifest.createManifest(applicationPackage, applicationClassQualifiedName, componentQualifiedNames, metaDataQualifiedNames, permissionQualifiedNames, minSdkVersion, maxSdkVersion, targetSdkVersion, applicationDebuggableMode);
public void isDebuggable(AndroidManifest androidManifest, ElementValidation valid) { if (!androidManifest.isDebuggable()) { valid.addError("The application must be in debuggable mode. Please set android:debuggable to true in your AndroidManifest.xml file."); } }
protected boolean hasFragmentInClasspath() { boolean fragmentExistsInSdk = androidManifest.getMinSdkVersion() >= MIN_SDK_WITH_FRAGMENT_SUPPORT; return fragmentExistsInSdk && elementUtils.getTypeElement(CanonicalNameConstants.FRAGMENT) != null; }
public void hasPermission(AndroidManifest androidManifest, ElementValidation valid, String permissionQualifiedName) { List<String> permissionQualifiedNames = androidManifest.getPermissionQualifiedNames(); if (!permissionQualifiedNames.contains(permissionQualifiedName)) { if (androidManifest.isLibraryProject()) { valid.addWarning("Your library should require the " + permissionQualifiedName + " permission."); } else { valid.addError("Your application must require the " + permissionQualifiedName + " permission."); } } }
public void componentRegistered(Element element, AndroidManifest androidManifest, boolean printWarning, ElementValidation valid) { TypeElement typeElement = (TypeElement) element; if (typeElement.getModifiers().contains(Modifier.ABSTRACT)) { return; } if (androidManifest.isLibraryProject()) { return; } String componentQualifiedName = typeElement.getQualifiedName().toString(); String generatedComponentQualifiedName = componentQualifiedName + classSuffix(); List<String> componentQualifiedNames = androidManifest.getComponentQualifiedNames(); if (!componentQualifiedNames.contains(generatedComponentQualifiedName)) { String simpleName = typeElement.getSimpleName().toString(); String generatedSimpleName = simpleName + classSuffix(); if (componentQualifiedNames.contains(componentQualifiedName)) { valid.addError("The AndroidManifest.xml file contains the original component, and not the AndroidAnnotations generated component. Please register " + generatedSimpleName + " instead of " + simpleName); } else { if (printWarning) { valid.addWarning("The component " + generatedSimpleName + " is not registered in the AndroidManifest.xml file."); } } } }
return AndroidManifest.createLibraryManifest(applicationPackage, minSdkVersion, maxSdkVersion, targetSdkVersion); permissionQualifiedNames.addAll(usesPermissionQualifiedNames); return AndroidManifest.createManifest(applicationPackage, applicationClassQualifiedName, componentQualifiedNames, metaDataQualifiedNames, permissionQualifiedNames, minSdkVersion, maxSdkVersion, targetSdkVersion, applicationDebuggableMode);
public void isDebuggable(AndroidManifest androidManifest, ElementValidation valid) { if (!androidManifest.isDebuggable()) { valid.addError("The application must be in debuggable mode. Please set android:debuggable to true in your AndroidManifest.xml file."); } }
private boolean shouldUseContextMethod() { return getEnvironment().getAndroidManifest().getMinSdkVersion() >= minSdkWithMethod; }
public void applicationRegistered(Element element, AndroidManifest manifest, ElementValidation valid) { if (manifest.isLibraryProject()) { return; } String applicationClassName = manifest.getApplicationClassName(); if (applicationClassName != null) { TypeElement typeElement = (TypeElement) element; String componentQualifiedName = typeElement.getQualifiedName().toString(); String generatedComponentQualifiedName = componentQualifiedName + classSuffix(); if (!typeElement.getModifiers().contains(Modifier.ABSTRACT) && !applicationClassName.equals(generatedComponentQualifiedName)) { if (applicationClassName.equals(componentQualifiedName)) { valid.addError("The AndroidManifest.xml file contains the original component, and not the AndroidAnnotations generated component." + " Please register " + generatedComponentQualifiedName + " instead of " + componentQualifiedName); } else { valid.addWarning("The component " + generatedComponentQualifiedName + " is not registered in the AndroidManifest.xml file."); } } } else { valid.addError("No application class registered in the AndroidManifest.xml"); } }
@Override public void assignValue(JBlock targetBlock, IJAssignmentTarget fieldRef, EComponentWithViewSupportHolder holder, Element element, Element param) { String bindingClassQualifiedName; if (!param.asType().toString().contains(".")) { // the class is generated in this round, so only the simple name is available String resourcePackageName = getEnvironment().getOptionValue(ProjectRClassFinder.OPTION_RESOURCE_PACKAGE_NAME); if (resourcePackageName == null) { resourcePackageName = getEnvironment().getAndroidManifest().getApplicationPackage(); } bindingClassQualifiedName = resourcePackageName + ".databinding." + param.asType().toString(); } else { bindingClassQualifiedName = param.asType().toString(); } JDirectClass bindingClass = getCodeModel().directClass(bindingClassQualifiedName); targetBlock.add(fieldRef.assign(JExpr.cast(bindingClass, holder.getDataBindingField()))); } }
public static AndroidManifest createLibraryManifest(String applicationPackage, int minSdkVersion, int maxSdkVersion, int targetSdkVersion) { return new AndroidManifest(true, applicationPackage, "", Collections.<String> emptyList(), new HashMap<String, MetaDataInfo>(), Collections.<String> emptyList(), minSdkVersion, maxSdkVersion, targetSdkVersion, false); }
public void getChildFragmentManagerMethodIsAvailable(Element element, ElementValidation validation) { boolean childFragment = annotationHelper.extractAnnotationParameter(element, "childFragment"); if (childFragment) { TypeElement enclosingElement = (TypeElement) element.getEnclosingElement(); TypeElement fragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.FRAGMENT); TypeElement supportFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.SUPPORT_V4_FRAGMENT); TypeElement androidxFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT); if (supportFragment != null && annotationHelper.isSubtype(enclosingElement, supportFragment)) { if (!methodIsAvailableIn(supportFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + ", update your support library version."); } } else if (androidxFragment != null && annotationHelper.isSubtype(enclosingElement, androidxFragment)) { if (!methodIsAvailableIn(androidxFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.ANDROIDX_FRAGMENT + ", update your support library version."); } } else if (fragment != null && annotationHelper.isSubtype(enclosingElement, fragment) && environment().getAndroidManifest().getMinSdkVersion() < 17) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.FRAGMENT + " (from API 17). Increment 'minSdkVersion' or use " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + " or " + CanonicalNameConstants.ANDROIDX_FRAGMENT + "."); } } }
public String getRClassPackageName(AndroidManifest manifest) { String resourcePackageName = environment.getOptionValue(OPTION_RESOURCE_PACKAGE_NAME); if (resourcePackageName != null) { return resourcePackageName; } else { return manifest.getApplicationPackage(); } }
public static AndroidManifest createManifest(String applicationPackage, String applicationClassName, List<String> componentQualifiedNames, Map<String, MetaDataInfo> metaDataQualifiedNames, List<String> permissionQualifiedNames, int minSdkVersion, int maxSdkVersion, int targetSdkVersion, boolean debugabble) { return new AndroidManifest(false, applicationPackage, applicationClassName, componentQualifiedNames, metaDataQualifiedNames, permissionQualifiedNames, minSdkVersion, maxSdkVersion, targetSdkVersion, debugabble); }