关于使用aa-genprof为容器应用程序自动生成配置文件的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android11ScopedStorage权限(如何管理文件管理器应用程序,文件
关于使用 aa-genprof 为容器应用程序自动生成配置文件的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android 11 Scoped Storage 权限(如何管理文件管理器应用程序,文件管理器应用程序怎么样)、android – 使用货币转换器应用程序自动获取当前货币汇率?、Android 学习使用 annotationprocessor 自动生成 java 文件、asp.net配置IIS后"服务器应用程序不可用"的解决办法 服务器应用程序不可用 您试图在此Web服务器上访问的Web应用程序当前不可用等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- 使用 aa-genprof 为容器应用程序自动生成配置文件
- Android 11 Scoped Storage 权限(如何管理文件管理器应用程序,文件管理器应用程序怎么样)
- android – 使用货币转换器应用程序自动获取当前货币汇率?
- Android 学习使用 annotationprocessor 自动生成 java 文件
- asp.net配置IIS后"服务器应用程序不可用"的解决办法 服务器应用程序不可用 您试图在此Web服务器上访问的Web应用程序当前不可用
使用 aa-genprof 为容器应用程序自动生成配置文件
如何解决使用 aa-genprof 为容器应用程序自动生成配置文件?
aa-genprof 实用程序可以为给定的应用程序自动生成 AppArmor 配置文件。 有没有办法使用 aa-genprof 为容器应用程序自动生成配置文件? 例如 对于非容器实用程序 abc.exe,可以像“$sudo aa-genprof abc.exe”一样运行 aa-genprof 但是如果将 abc.exe 捆绑为容器,那么如何在容器环境中使用 aa-genprof?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Android 11 Scoped Storage 权限(如何管理文件管理器应用程序,文件管理器应用程序怎么样)
如何解决Android 11 Scoped Storage 权限(如何管理文件管理器应用程序,文件管理器应用程序怎么样)?
从android 11我们知道写外部存储权限将不起作用,我们无法访问外部存储根路径的其他目录,但我的问题是文件管理器应用程序,如果我的应用程序是文件管理器,那该怎么办我像以前一样管理所有文件操作。例如,创建新文件或文件夹,在这里我们无法获得外部存储的根路径访问权限,那么如何管理文件管理器操作,我在开发者站点和某处阅读了他们的选项来处理该特定应用程序,Google 也提供某种方式来管理该应用程序,但我如何找不到解决方案,如果有人知道,请帮我解决这个问题。
解决方法
从android 11我们知道写外部存储权限将不起作用,我们无法访问外部存储根路径的其他目录,
请求写入外部存储没有意义,因为它已经隐式授予您的应用。
您可以从 getExternalStorageDirectory() 和 getExternalStoragePublicDirectory() 访问所有路径。
并在 getExternalStoragePublicDirectory() 中创建子目录和文件
android – 使用货币转换器应用程序自动获取当前货币汇率?
谢谢.
更新
我认为我的问题有点被误解了.获得实际的当前货币汇率对我来说并不难;困难的部分是编写代码来执行此操作.有人可以让我朝着正确的方向前进并帮助我理解如何编写代码以将它们合并到应用程序中吗?
解决方法
http://josscrowcroft.github.com/open-exchange-rates/
他们每小时更新一次数据并以json格式返回信息.
玩得开心 :)
更新到UPDATE
好的,所以你需要阅读以下内容并将它们合并到你的代码中,
>接收数据可以通过HttpUrlConnection / Apache Http Client完成. (确保执行所有长时间运行的任务,即在单独的线程中下载数据)
>大多数返回的数据通常以XML或JSON格式接收.您需要使用Android中的类来编写解析器.用于XML的XmlPullParser / Dom Parser或用于JSON的JSONObjects. Android Developer网站中有足够的信息可以做到这一点.
>一旦你解析了数据,你设计并呈现它的nhow完全取决于你.
希望这有助于您前进.
Android 学习使用 annotationprocessor 自动生成 java 文件
最近看 glide 源码,发现里面有个类必须用到的,没在源码里面,居然在 build/generated 目录下,这里面是自动生成的 Java 文件,比如 R 文件。
奇了个怪了,通过查阅大神文章知道了原来是利用了 annotationprocessor 编译器,在编译期间创建的,用到这个的出名框架比如:Butter Knife、Glide 。
注意:android-apt 这个插件官方已经宣布不再维护,插件 gradle2.2 以上的版本使用 annotationprocessor,所以我们这里跟着官方走。
否则报错:
现在我们来生成一个超级简单的 Java 文件吧
首先创建一个安卓项目如图:
主工程 build.gradle 文件如下
apply plugin: ''com.android.application''
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.example.alex.annotationprocessordemo"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
implementation fileTree(dir: ''libs'', include: [''*.jar''])
implementation ''com.android.support:appcompat-v7:26.1.0''
implementation ''com.android.support.constraint:constraint-layout:1.0.2''
annotationProcessor project('':Compiler'')
}
接下来创建一个 Java Library Module
取好 Module 名字后如下图:
这里要注意,Module 类型是 Java Library,不要选成 Android Library
编辑 build.gradle 后的样子如下:
apply plugin: ''java-library''
dependencies {
implementation fileTree(dir: ''libs'', include: [''*.jar''])
// 用于生成 Java 文件的库
compile ''com.squareup:javapoet:1.7.0''
compile ''com.google.auto.service:auto-service:1.0-rc2''
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
上面 2 个库一定要的,记得加上
接下来在 Compiler 这个 module 中创建一个类 MyProcessor.java
package com.example.alex.compiler;
import com.google.auto.service.AutoService;
import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.TypeSpec;
import java.io.IOException;
import java.util.LinkedHashSet;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Filer;
import javax.annotation.processing.Messager;
import javax.annotation.processing.ProcessingEnvironment;
import javax.annotation.processing.Processor;
import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.Elements;
/**
* @AutoService(Processor.class)
* 这个注解不要忘了,否则无法生成 Java 文件
*/
@AutoService(Processor.class)
public class MyProcessor extends AbstractProcessor{
/**
* 文件相关的辅助类
*/
private Filer mFiler;
/**
* 元素相关的辅助类
*/
private Elements mElementUtils;
/**
* 日志相关的辅助类
*/
private Messager mMessager;
/**
* 每一个注解处理器类都必须有一个空的构造函数。
* 然而,这里有一个特殊的 init () 方法,它会被注解处理工具调用,
* 并输入 ProcessingEnviroment 参数。
*
* @param processingEnvironment
*/
@Override
public synchronized void init(ProcessingEnvironment processingEnvironment) {
super.init(processingEnvironment);
mElementUtils = processingEnv.getElementUtils();
mMessager = processingEnv.getMessager();
mFiler = processingEnv.getFiler();
}
@Override
public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) {
// 类名和包名
TypeSpec finderClass = TypeSpec.classBuilder("MyGeneratedClass")
.addModifiers(Modifier.PUBLIC)
// .addSuperinterface(ParameterizedTypeName.get(TypeUtil.INJECTOR, TypeName.get(mClassElement.asType())))
// .addMethod(methodBuilder.build())
.build();
// 创建 Java 文件
JavaFile javaFile = JavaFile.builder("com.example.alex.annotationprocessordemo", finderClass).build();
try {
javaFile.writeTo(mFiler);
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
/** 这个方法必须重写,否则无法生成 Java 文件
* 这里必须指定,这个注解处理器是注册给哪个注解的。
* 注意,它的返回值是一个字符串的集合,包含本处理器想要处理的注解类型的合法全称。
* 换句话说,在这里定义你的注解处理器注册到哪些注解上。
* @return
*/
@Override
public Set<String> getSupportedAnnotationTypes() {
Set<String> types = new LinkedHashSet<>();
types.add(Override.class.getCanonicalName());
// types.add(OnClick.class.getCanonicalName());
return types;
}
}
重要函数解说
init (ProcessingEnvironment env): 每一个注解处理器类都必须有一个空的构造函数。然而,这里有一个特殊的 init () 方法,它会被注解处理工具调用,并输入 ProcessingEnviroment 参数。ProcessingEnviroment 提供很多有用的工具类 Elements,Types 和 Filer。
public boolean process (Set<? extends TypeElement> annoations, RoundEnvironment env) 这相当于每个处理器的主函数 main ()。在这里写扫描、评估和处理注解的代码,以及生成 Java 文件。输入参数 RoundEnviroment,可以让查询出包含特定注解的被注解元素。
getSupportedAnnotationTypes (); 这里必须指定,这个注解处理器是注册给哪个注解的。注意,它的返回值是一个字符串的集合,包含本处理器想要处理的注解类型的合法全称。换句话说,在这里定义你的注解处理器注册到哪些注解上。
getSupportedSourceVersion (); 用来指定你使用的 Java 版本。
这个类就是编译期注解编译器会根据它来创建 Java 文件,里面提示的几个必须加上的地方要注意,忘记了就创建不了文件。
到这里基本工作都完成了,现在开始 rebuild 吧,成与不成就在于此了
看到了吗?主工程中 build/generated/source/apt/debug 目录下已经有了刚才命名的 MyGeneratedClass.java
哈哈,如果生成了说明就大功告成,没生成那么再好好找下原因是不是哪不对或者缺失了,现在又可以愉快玩耍了
下面是 demo 链接
http://download.csdn.net/download/msn465780/10171779 点击打开链接
---------------------
作者:Alex 老夫子
来源:CSDN
原文:https://blog.csdn.net/msn465780/article/details/78888668
版权声明:本文为博主原创文章,转载请附上博文链接!
asp.net配置IIS后"服务器应用程序不可用"的解决办法 服务器应用程序不可用 您试图在此Web服务器上访问的Web应用程序当前不可用
错误:服务器应用程序不可用 您试图在此Web服务器上访问的Web应用程序当前不可用。
请点击Web浏览器中的“刷新”按钮重试您的请求。管理员注意事项:详述此特定请求失败原因的错误消息可在Web服务器的系统事件日志中找到。请检查此日志项以明确该错误发生的原因。
方法一:重新注册.Net 2.0
原因大概是先安装了 .Net Framework后安装的IIS导致.Net没有在IIS注册,
从.net命令行工具里运行aspnet_regIIS /u 卸载,再aspnet_regIIS /i 安装,然后重启IIS,删除“默认应用程序”,然后将站点重新创建为应用程序。
方法二:新建应用连接池
新建应用连接池的步骤
1. 单击“开始”,指向“程序”,然后单击“控制面板”。
2.双击“管理工具”,然后双击“Int.Net”信息服务(IIS)。
3.右击“应用程序池”,指向“新建”,然后单击“应用程序池”。
4.在“应用程序池ID”文本框中键入 AppPool1。
5.单击”确定“。
将应用程序分配到应用程序池
1.开始-->程序-->控制面板-->管理工具-->Inte.Net 信息服务(IIS)。
2.Web-->默认Web站点-->右击"DebugApp1",-->属性。
3.主目录-->应用程序池-->AppPoo1-->确定。
方法三:修改网站目录所在文件夹的访问权限
找到当前网站目录-->右键-->属性-->安全-->添加-->高级-->立即查找-->选择Users用户(或Everyone)->确定
【如果没有“安全”选项,可如下解决:
资源管理器-->工具-->文件夹选项-->查看-->去掉“使用简单文件共享(推荐)”前面的对勾-->确定】
我通过第一种方法解决了
今天关于使用 aa-genprof 为容器应用程序自动生成配置文件的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android 11 Scoped Storage 权限(如何管理文件管理器应用程序,文件管理器应用程序怎么样)、android – 使用货币转换器应用程序自动获取当前货币汇率?、Android 学习使用 annotationprocessor 自动生成 java 文件、asp.net配置IIS后"服务器应用程序不可用"的解决办法 服务器应用程序不可用 您试图在此Web服务器上访问的Web应用程序当前不可用的相关知识,请在本站搜索。
本文标签: