java执行aapt_第一章:在安卓上运行aapt
引言:三百六十行,行行出状元!
0 q- q- @6 D9 Y5 u- M, o& H3 X大家好啊,我是CeePear
# O& r0 `! a, M& k5 J* @7 l) d今天给大家介绍如何在安卓上运行aapt如果有兴趣的话,就来看看我的文章吧/笑脸
9 _1 I0 {* ] X第一步:准备$ F/ B, z; ^2 R
$ ]) L7 A. ~; C1.可以在armeabi or x86上运行的aapt库
! ~0 z# U3 Q/ F$ y4 _6 f) s# _+ a) n如果没有aapt库,可以去拆aide包里的,里面有平板与手机的包,在assets目录下,不想拆的,可以在文章末尾的链接访问并下载。
- {6 Z& t2 H; }, p( A% t2 k# h3 r8 Y3 @2.可以编译运行/打包java/apk的工具
2 j9 f$ s% i4 _" {, v# T0 ~如:Android Studio,Ecj,Aide等
6 x+ q2 Z# ?1 C# M3.了解java的Runtime.getRuntime.exec()8 `- ~8 B. t" s s
可能还有其他方法,这里我不做过多讨论,因为我不会6 Y% U ]; e' i
第二步:了解aapt的命令
, [: ^6 l2 @! }( I
r0 u" E2 i& V S# a这里我们着重讨论如何生成R.java和生成apk
4 M* o2 y$ r8 `/ k在cdm窗口中,调用aapt的指令是aapt package -x 数据 ...在Java(安卓)上,调用aapt的指令是String[] 指令 = {"/data/user/0/包名/aapt路径","-x","数据",......};1.生成R.java
' c' K; j" F. Y) `4 e) fString[] 指令=new String[]{ "/datat/user/0/com.tiangong/files/aapt.so", "package", "-f", "-m", "-J", "/storage/emulated/0/AppProjects/MyApp/app/build/gen/com/mycompany/myapp/", "-S", "/storage/emulated/0/AppProjects/MyApp/app/src/main/res", "-I", "/storage/emulated/0/.aide/android.jar", "-M", "/storage/emulated/0/AppProjects/MyApp/app/src/main/AndroidManifest.xml" };2.生成apk! }" x$ @0 M( h+ B
//生成apk与生成R.java大同小异String[] 指令=new String[]{ "/datat/user/0/com.tiangong/files/aapt.so", "package", "-f", "-m", "-J", "/storage/emulated/0/AppProjects/MyApp/app/build/gen/com/mycompany/myapp/", "-S", "/storage/emulated/0/AppProjects/MyApp/app/src/main/res", "-I", "/storage/emulated/0/.aide/android.jar", "-M", "/storage/emulated/0/AppProjects/MyApp/app/src/main/AndroidManifest.xml", "-F", "/storage/emulated/0/AppProjects/MyApp/app/src/main/res.apk" };3.指令介绍(简略版)) v$ | R7 d, K, S
package:打包指令-f:覆盖-m:生成R.java-J:设置R.java的路径-S:载入res路径-l:android.jar路径-M:AndroidManifest.xml所在路径-F:输出apk的路径其他指令请查找官方文档/大神介绍第三步:错误回调和全代码$ f! N" U. A/ C" P1 n
- D& B. y G/ b/ u2 y! W3 k. z. \
-1.需要注意的是,这里得先会第一步中的第三小点哟
9 s0 I$ B7 V" W F+ R+ }7 e-2.错误回调
1 Q0 ?& v' \; ?- t) S4 L& b\\先引入包吧import java.util.*;import java.io.*;//这里我们封装一下public static String LoadAapt(String[] cmd){String 错误文本 = null;String 正确处理 = null;ProcessProcess=Runtime.getRuntime().exec(cmd); InputStreamInputStream=Process.getInputStream();InputStreamReaderInputStreamReader=newInputStreamReader(InputStream); BufferedReaderBufferedReader=newBufferedReader(InputStreamReader); while((正确处理=BufferedReader.readLine())!=null) {return"false"; }//错误时处理 InputStreamInputStreamTwo=Process.getErrorStream(); InputStreamReaderInputStreamReaderTwo=newInputStreamReader(InputStreamTwo); BufferedReaderBufferedReaderTwo=newBufferedReader(InputStreamReaderTwo); while((错误文本=BufferedReaderTwo.readLine())!=null) { return错误文本; } Process.waitFor(); }catch(InterruptedExceptione){}catch(IOExceptione){} return"true"; }全代码和调用方法/ C. B, G9 f" p% \+ j
import java.util.*;import java.io.*;public class androidCompile{public static String loadAapt(String[] cmd){String 错误文本 = null;String 正确处理 = null;try{File aapt = new File("/data/user/0/包名/aapt路径");//设置该路径可执行aapt.setExecutable(true);ProcessProcess=Runtime.getRuntime().exec(cmd); InputStreamInputStream=Process.getInputStream();InputStreamReaderInputStreamReader=newInputStreamReader(InputStream); BufferedReaderBufferedReader=newBufferedReader(InputStreamReader); while((正确处理=BufferedReader.readLine())!=null) {return"false"; }//错误时处理 InputStreamInputStreamTwo=Process.getErrorStream(); InputStreamReaderInputStreamReaderTwo=newInputStreamReader(InputStreamTwo); BufferedReaderBufferedReaderTwo=newBufferedReader(InputStreamReaderTwo); while((错误文本=BufferedReaderTwo.readLine())!=null) { return错误文本; } Process.waitFor(); }catch(InterruptedExceptione){}catch(IOExceptione){} return"true"; }}}//调用方法:
; V7 |& h; g$ S( w' J9 OString[] cmd =new String[] {一大串指令};String result = androidCompile.loadAapt(cmd);第四步:本文回溯:
* p2 ~% {0 q$ y2 b
8 d0 y5 o$ X6 ]-在第一步中,我们准备需要用到的工具和需要了解到的代码:Runtime.getRuntime.exec
w/ I' _: m8 y8 q-在第二步中,我们认识到了aapt生成R.java,和输出apk的指令。0 M, P" B% G2 {, x
但这里的指令并没有包括assets和放入dex包的指令,这两个指令请自行探索
" w4 W3 P2 D$ P) J( I1 P& N-在第三部中,我们得到了错误回调和整体的工具类,这里是本文最简单也是最无趣的地方,在以后的文章中,我会对这些地方加以说明7 R6 d) e) T& L( F3 X" p' g' g
-AAPT下载请点击这里下载 密码是:3kmt
" _2 E+ E2 d$ N* h' V/ D8 g6 A本文到这里就结束啦,我是CeePear,咱们下期再见!
$ e3 R6 w. R1 U2 U5 A忘记说了,觉得好的话,别忘了评论关注转发哟!
' P5 P% ~4 i6 ~" u$ w3 ?) E; i+ E) {# ?- z$ ~
Java吧 收集整理 java论坛 www.java8.com
java执行aapt_第一章:在安卓上运行aapt相关推荐
- 《玩不够的数学:算术与几何的妙趣》:第一章 平面上的几何艺术
第一章 平面上的几何艺术 人们往往从悖论中获得思维的乐趣,而几何学的悖论就是不可能图形.如今我们已创造出数千种这样的二维图像,不断挑战我们的眼睛和思维.三角形.披萨饼.七巧板也蕴藏着无穷的变化和巧妙的 ...
- python怎么让py里面逐行运行_怎样在安卓上运行python
"人生苦短,我用python" python丰富的开发库确实为广大使用者缩减了大量的开发时间.小ming没事用python跑个自动化脚本,枯燥乏味的工作就让电脑帮忙做. 怎样在安卓 ...
- 使用AndroidStudio打包OpenCV和C++代码并在安卓上运行
使用AndroidStudio打包OpenCV和C++代码并在安卓上运行 在为服务器部署OpenCV和C++的过程中尝试了很多方法,这里记录一下在AndroidStudio上打包OpenCV和C++的 ...
- java项目运行在浏览器_在 Java 程序中,能在 WWW 浏览器上运行的是 程序。_学小易找答案...
[简答题]已知:如图, AD 是△ ABC 的角平分线, DE//AC, 交 AB 于点 E , DF//AB ,交 AC 于点 F ,求证: AD ⊥ EF. [简答题]Java语言具有较好的安全性 ...
- Spark大数据技术与应用 第一章Spark简介与运行原理
Spark大数据技术与应用 第一章Spark简介与运行原理 1.Spark是2009年由马泰·扎哈里亚在美国加州大学伯克利分校的AMPLab实验室开发的子项目,经过开源后捐赠给Aspache软件基金会 ...
- 【JAVA SE】第一章 Java语言概述、环境变量和HelloWorld
第一章 Java语言概述.环境变量和HelloWorld 文章目录 第一章 Java语言概述.环境变量和HelloWorld 一.Java语言概述 1.Java简介 2.Java发展历史 3.Java ...
- Java初级笔记-第一章
第一章 Java概览 1.1 基本简介 Java是一种理想的面向对象的网络编程语言. 1991年,出现了Oak语言,旨在解决编程语言的选择和跨平台的问题. 1994年,随着Internet的迅猛发展, ...
- Java核心技术·卷二·第一章笔记
Java核心技术·卷二·笔记 第一章:Java8的流库 Java8引入的用来以"做什么而非怎么做"的方式的处理集合 1.1 从迭代到流的操作 package com.package ...
- After Effects CC SDK 使用指南(二)—— 第一章 介绍 (上)
其他文章链接 序 第一章 介绍-上 第一章 介绍-下 第一章 介绍 欢迎使用Adobe®After Effects®CC软件开发工具包!这是一个全新的文档,并不断更新.SDK的最新公共版本地址:htt ...
最新文章
- 初入react-redux (基于webpack babel的react应用框架)
- JSP内置对象—session
- php解析QQmv直链,网易云音乐直链解析API源代码^-^
- DirectUI界面编程(六)实现右键弹出菜单
- Go语言 模糊搜索实验(一)
- Java中对数组的排序方法总汇分析
- 【操作系统学习笔记】操作系统基础
- StorAge存储库
- Fluentd: Open Source Log Management
- python 成语库_python实现成语找一找
- python把excel填充到网页_Python获取某网页数据并写入excel
- C语言整人小程序,慎用,谨记!
- 计算机unity文献综述,Unity3D密室逃脱游戏设计+文献综述.doc
- 深度解析Eureka的自我保护机制
- 【CSS3】 CSS3实现“图片阴影”效果
- C-Free 5 加 TDM-GCC编辑器搭建C/C++开发环境
- 数字图像处理 直方图均衡化 MATLAB实验
- c罗说什么语言,C罗会说几种语言? 揭金球奖给梅西内马尔当翻译趣事
- 三万五千字长文!让你懂透编译原理(六)——第六章 属性文法和语法制导翻译
- 操作系统 吃水果放水果问题 PV操作