android底层oem,Android中如何实现OEM
/**
* @author Tibib
*
*/
public class AndroidManifestParser {
public String NS = "http://schemas.android.com/apk/res/android" ;
public AppInfo parse(InputStream in) throws Exception {
try {
//使用pull解析库
XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
NS = parser.getNamespace();
//设置使用 namespaces特性
parser.setFeature(XmlPullParser. FEATURE_PROCESS_NAMESPACES , true );
parser.setInput(in, "UTF-8" );
parser.nextTag();
return readAppInfo(parser);
} catch (Exception e){
e.printStackTrace();
throw e;
} finally {
in.close();
}
}
private AppInfo readAppInfo(XmlPullParser parser) throws Exception{
AppInfo appInfo = new AppInfo();
while (parser.next() != XmlPullParser. END_TAG) {
if (parser.getEventType() != XmlPullParser. START_TAG) {
continue ;
}
String name = parser.getName();
// Starts by looking for the General tag
if ("application" .equals(name)){
String attrLabelValue = parser.getAttributeValue( NS, "label" );
String attrIconValue = parser.getAttributeValue( NS, "icon" );
appInfo.setAppName(attrLabelValue.split( "/" )[1]);
appInfo.setIconName(attrIconValue.split( "/" )[1]);
}
else {
skip(parser);
}
}
return appInfo;
}
// Skips tags the parser isn't interested in. Uses depth to handle nested tags. i.e.,
// if the next tag after a START_TAG isn't a matching END_TAG, it keeps going until it
// finds the matching END_TAG (as indicated by the value of "depth" being 0).
private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
if (parser.getEventType() != XmlPullParser. START_TAG) {
throw new IllegalStateException();
}
int depth = 1;
while (depth != 0) {
switch (parser.next()) {
case XmlPullParser. END_TAG:
depth--;
break ;
case XmlPullParser. START_TAG:
depth++;
break ;
}
}
}
}
修改strings.xml中name属性为app_name(具体名称看配置)的值
/**
* @author Tibib
*
*/
public class XmlModifyUtil {
/**
* 使用的是 jdom库
*/
public static void modifyXML(File modifyXmlFile, String appNameAttrValue,
String appNameText) {
OutputStreamWriter bos = null ;
try {
SAXBuilder builder = new SAXBuilder();
if (modifyXmlFile.exists()) {
Document document = (Document) builder.build(modifyXmlFile);
Element root = document.getRootElement();
List stringChildList = root.getChildren( "string");
for (Element element : stringChildList) {
String nameAttrValue = element.getAttribute("name" )
.getValue();
if (nameAttrValue.equals(appNameAttrValue)) {
element.setText(appNameText);
}
}
String xmlFileData = new XMLOutputter().outputString(document);
// strings.xml默认是UTF-8格式
bos = new OutputStreamWriter(
new FileOutputStream(modifyXmlFile), "UTF-8" );
bos.write(xmlFileData);
bos.flush();
} else {
System. out .println("File does not exist" );
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (bos != null ) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
执行编译和签名命令
android底层oem,Android中如何实现OEM相关推荐
- android底层截图,Android源码中屏幕截图的实现
Android手机一般都自带有手机屏幕截图的功能:在手机任何界面(当然手机要是开机点亮状态),通过按组合键,屏幕闪一下,然后咔嚓一声,截图的照片会保存到当前手机的图库中,真是一个不错的功能! 以我手头 ...
- 怎么看手机android底层,安卓手机中fastboot是一种比recovery更底层的模式
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1 手机进入fastboot需要一定的操作才能进入,尤其是没刷过机的情况下 2 先说刷过机的,如果刷过机,root过,一般民间自制的ROM都会有重启的选项 ...
- android底层按键监听,Android应用中Back键的监听及处理实例
MainActivity如下: package cn.testnbackpressed; import android.os.Bundle; import android.view.KeyEvent; ...
- android重新编译res,使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中lt;meta-datagt;变量的值...
你也能够查看我的其它同类文章.也会让你有一定的收货 关于使用Gradle来控制版本号和生成不同版本号的代码.我总结了三篇文章,网上关于这些知识,都比較零散.我在学习这些的之前.根本不知道还有这种方法. ...
- 使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中lt;meta-datagt;变量的值...
转载请标明出处:http://blog.csdn.net/xx326664162/article/details/49247815 文章出自:薛瑄的博客 你也能够查看我的其它同类文章.也会让你有一定的 ...
- Android 底层知识拾零,字节跳动Android高级工程师
NotoSansTeluguUI-Bold.ttf 泰卢固语(印度) NotoSansTeluguUI-Regular.ttf ------------------------------------ ...
- Android 底层知识拾零,app架构升级
NotoSansTeluguUI-Regular.ttf ----------------------------------------------------------------------- ...
- Android 底层知识拾零,android原生开发框架
------------------------------------------------------------------------------------------------- pa ...
- Android 底层知识拾零
http://blog.csdn.net/zhoumushui/article/details/41623903 1.Android字库文件 打开Android源码路径: framework/base ...
- Android底层开发之Audio HAL Android Audio Overview
http://blog.csdn.net/kangear/article/details/44939429 Android底层开发之Audio HAL 在Android音频底层调试-基于tinyals ...
最新文章
- kali linux 下载百度云大文件
- Linux 环境安装 Node、nginx、docker、vsftpd、gitlab
- 计算机组成原理——概述3
- PyTorch随笔-2
- angular6父子组件之间的引入报错
- .NET Core 学习资料精选:进阶
- 一篇搞懂mysql中的索引(大白话版)
- 英伟达的“千人摩擦计划”:几千个智能体互相玩耍,学习跑酷更轻松
- 强化学习中价值迭代和策略迭代各有什么优缺点?
- 记一次YUV图像分析(二)
- Redis——Lettuce的主从哨兵模式
- URP无法使用 RenderType:Overlap
- 华为S5300系列交换机V200R001SPH027升级补丁
- 一文搞懂候选码、主码、全码、外码、主属性、主键、主关键字、非主属性清晰总结
- 关于PDF文件无法打印的问题的解决办法
- 笔记本计算机故障排除,笔记本电脑开机黑屏的原因及故障排除方法
- 双精度移位指令SHLD,SHRD
- 犀牛Rhino和他的插件
- 南京信息工程大学本科毕业论文答辩和论文选题PPT模板
- 进入一个家初创公司,没有完整的测试体系该如何开始展开式工作?