Android快速批量打渠道包(AndroidManifestModifier)

本人博客原文:http://hubingforever.blog.163.com/blog/static/1710405792013102954345842/

以下是对一个已经打包的Android应用程序的apk文件根据渠道号再进行批量打包的程序示例。
config.bat文件
set outDir=out
set rawDatadir=temp
set apk=S ignatureChecker.apk
set channelName=A;B
set channelNo=1;2;3;4
set projectName=r
set versionCode=100
set stamp=%Date:~0,4%%Date:~5,2%%Date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%
echo %stamp%_
build.bat文件
@echo off
call config.bat
Setlocal enabledelayedexpansion
set path=%path%;%cd%\lib

if exist %rawDatadir% (
call deleteDir %rawDatadir%
)
if not exist %outDir% (
md %outDir%
)
call apktool d -s %apk% %rawDatadir%
Setlocal enabledelayedexpansion
set /a cnt=0
for %%i in (%channelName%) do (
set name=%%i
set apkName=%projectName%_%versionCode%_!name!.apk
call getSubStr "%channelNo%" !cnt!
set no=!getSubStr~result!
set /a cnt+=1
java AndroidManifestModifier %rawDatadir%\AndroidManifest.xml %rawDatadir%\AndroidManifest.xml lenovo:channel !no!

call apktool b %rawDatadir% !apkName!
jarsigner -keystore robin.keystore -storepass GL2009 -keypass gl2009 !apkName! robin
move !apkName! %outDir%
)
endlocal
关于apktool请参考《 Android反编译工具简介》,另外jarsigner就是JDK下载的一个工具。
AndroidManifestModifier主要用于在对Android应用程序进行打包发布是修改渠道号。
<wbr style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"><div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> AndroidManifestModifier.java文件</div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> <div><br></div> <div><br></div> <div> <pre class="prettyprint" style="white-space:pre-wrap; padding:2px; border:1px solid rgb(136,136,136)"><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"></p><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">File</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">FileOutputStream</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">IOException</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">OutputStreamWriter</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> java</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">io</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Writer</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">parsers</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">DocumentBuilder</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">parsers</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">DocumentBuilderFactory</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">parsers</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">ParserConfigurationException</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">transform</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">OutputKeys</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">transform</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Result</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">transform</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Source</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">transform</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Transformer</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">transform</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">TransformerConfigurationException</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">transform</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">TransformerException</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">transform</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">TransformerFactory</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">transform</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">dom</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">DOMSource</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> javax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">transform</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">stream</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">StreamResult</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> org</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">w3c</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">dom</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Document</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> org</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">w3c</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">dom</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">NamedNodeMap</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> org</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">w3c</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">dom</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">NodeList</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="kwd" style="color:rgb(0,0,136)">import</span><span class="pln"> org</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">xml</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">sax</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">SAXException</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> </div><div> <span class="kwd" style="color:rgb(0,0,136)">public</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">class</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">AndroidManifestModifier</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> </div><div> <span class="pln"> </span><span class="com" style="color:rgb(136,0,0)">/**</span> </div><div><span class="com" style="color:rgb(136,0,0)"> * @param args</span></div><div><span class="com" style="color:rgb(136,0,0)"> */</span></div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">public</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">static</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">void</span><span class="pln"> main</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">String</span><span class="pun" style="color:rgb(102,102,0)">[]</span><span class="pln"> args</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> </span><span class="com" style="color:rgb(136,0,0)">// TODO Auto-generated method stub</span> </div><div><span class="com" style="color:rgb(136,0,0)"> String srcFilePath="AndroidManifest.xml";</span></div><div><span class="com" style="color:rgb(136,0,0)"> String outFilePath="AndroidManifest.xml";</span></div><div><span class="com" style="color:rgb(136,0,0)"> String metaDataName="youmi:channel";</span></div><div><span class="com" style="color:rgb(136,0,0)"> String metaDataNewValue="newValue"+System.currentTimeMillis()%1000;</span></div><div><span class="com" style="color:rgb(136,0,0)"> if(args!=null&amp;&amp;args.length&gt;=4){</span></div><div><span class="com" style="color:rgb(136,0,0)"> srcFilePath=args[0];</span></div><div><span class="com" style="color:rgb(136,0,0)"> outFilePath=args[1];</span></div><div><span class="com" style="color:rgb(136,0,0)"> metaDataName=args[2];</span></div><div><span class="com" style="color:rgb(136,0,0)"> metaDataNewValue=args[3];</span></div><div><span class="com" style="color:rgb(136,0,0)"> }</span></div><div><span class="com" style="color:rgb(136,0,0)"> change(srcFilePath,outFilePath,metaDataName,metaDataNewValue);</span></div><div> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">public</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">static</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">void</span><span class="pln"> change</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">String</span><span class="pln"> srcfilePath</span><span class="pun" style="color:rgb(102,102,0)">,</span><span class="typ" style="color:rgb(102,0,102)">String</span><span class="pln"> outFilePath</span><span class="pun" style="color:rgb(102,102,0)">,</span><span class="typ" style="color:rgb(102,0,102)">String</span><span class="pln"> metaDataName</span><span class="pun" style="color:rgb(102,102,0)">,</span><span class="typ" style="color:rgb(102,0,102)">String</span><span class="pln"> metaDataNewValue</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">File</span><span class="pln"> f </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">new</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">File</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">srcfilePath</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">DocumentBuilderFactory</span><span class="pln"> factory </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">DocumentBuilderFactory</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">newInstance</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">DocumentBuilder</span><span class="pln"> builder </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">null</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">final</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">String</span><span class="pln"> android_value</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="str" style="color:rgb(0,136,0)">"android:value"</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">try</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> builder </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> factory</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">newDocumentBuilder</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">Document</span><span class="pln"> doc </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> builder</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">parse</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">f</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">NodeList</span><span class="pln"> nl </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> doc</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getElementsByTagName</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="str" style="color:rgb(0,136,0)">"meta-data"</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">int</span><span class="pln"> len </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> nl</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getLength</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> org</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">w3c</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">dom</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Node</span><span class="pln"> channelNode </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">null</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">for</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="kwd" style="color:rgb(0,0,136)">int</span><span class="pln"> i </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pun" style="color:rgb(102,102,0)">;</span><span class="pln"> i </span><span class="pun" style="color:rgb(102,102,0)">&lt;</span><span class="pln"> len</span><span class="pun" style="color:rgb(102,102,0)">;</span><span class="pln"> i</span><span class="pun" style="color:rgb(102,102,0)">++)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> org</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">w3c</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">dom</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Node</span><span class="pln"> n </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> nl</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">item</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">i</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">System</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="kwd" style="color:rgb(0,0,136)">out</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">println</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">n</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getNodeName</span><span class="pun" style="color:rgb(102,102,0)">());</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">NamedNodeMap</span><span class="pln"> nm </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> n</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getAttributes</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">boolean</span><span class="pln"> c</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="kwd" style="color:rgb(0,0,136)">false</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">for</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="kwd" style="color:rgb(0,0,136)">int</span><span class="pln"> j </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pun" style="color:rgb(102,102,0)">;</span><span class="pln"> j </span><span class="pun" style="color:rgb(102,102,0)">&lt;</span><span class="pln"> nm</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getLength</span><span class="pun" style="color:rgb(102,102,0)">();</span><span class="pln"> j</span><span class="pun" style="color:rgb(102,102,0)">++)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> org</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">w3c</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">dom</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Node</span><span class="pln"> n2 </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> nm</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">item</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">j</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">System</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="kwd" style="color:rgb(0,0,136)">out</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">println</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">n2</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getNodeName</span><span class="pun" style="color:rgb(102,102,0)">()</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">+</span><span class="pln"> </span><span class="str" style="color:rgb(0,136,0)">"|"</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">+</span><span class="pln"> n2</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getNodeValue</span><span class="pun" style="color:rgb(102,102,0)">());</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">if</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">metaDataName</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">equals</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">n2</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getNodeValue</span><span class="pun" style="color:rgb(102,102,0)">()))</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> c</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="kwd" style="color:rgb(0,0,136)">true</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">break</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">if</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">c</span><span class="pun" style="color:rgb(102,102,0)">){</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">for</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="kwd" style="color:rgb(0,0,136)">int</span><span class="pln"> j </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pun" style="color:rgb(102,102,0)">;</span><span class="pln"> j </span><span class="pun" style="color:rgb(102,102,0)">&lt;</span><span class="pln"> nm</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getLength</span><span class="pun" style="color:rgb(102,102,0)">();</span><span class="pln"> j</span><span class="pun" style="color:rgb(102,102,0)">++)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> org</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">w3c</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">dom</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="typ" style="color:rgb(102,0,102)">Node</span><span class="pln"> n2 </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> nm</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">item</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">j</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">if</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">android_value</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">equals</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">n2</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">getNodeName</span><span class="pun" style="color:rgb(102,102,0)">()))</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> channelNode</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln">n2</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">break</span><span class="pun" style="color:rgb(102,102,0)">;</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">if</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">channelNode </span><span class="pun" style="color:rgb(102,102,0)">!=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">null</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> channelNode</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">setNodeValue</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">metaDataNewValue</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> writeXMLFile</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">doc</span><span class="pun" style="color:rgb(102,102,0)">,</span><span class="pln"> outFilePath</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">catch</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">ParserConfigurationException</span><span class="pln"> e</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> </span><span class="com" style="color:rgb(136,0,0)">// TODO Auto-generated catch block</span> </div><div><span class="com" style="color:rgb(136,0,0)"> e.printStackTrace();</span></div><div><span class="com" style="color:rgb(136,0,0)"> } catch (SAXException e) {</span></div><div><span class="com" style="color:rgb(136,0,0)"> // TODO Auto-generated catch block</span></div><div><span class="com" style="color:rgb(136,0,0)"> e.printStackTrace();</span></div><div><span class="com" style="color:rgb(136,0,0)"> } catch (IOException e) {</span></div><div><span class="com" style="color:rgb(136,0,0)"> // TODO Auto-generated catch block</span></div><div><span class="com" style="color:rgb(136,0,0)"> e.printStackTrace();</span></div><div><span class="com" style="color:rgb(136,0,0)"> }</span></div><div> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">private</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">static</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">void</span><span class="pln"> writeXMLFile</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">Document</span><span class="pln"> doc</span><span class="pun" style="color:rgb(102,102,0)">,</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">String</span><span class="pln"> outfile</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> </div><div> <span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">try</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">FileOutputStream</span><span class="pln"> fos </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">new</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">FileOutputStream</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">outfile</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">OutputStreamWriter</span><span class="pln"> outwriter </span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">new</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">OutputStreamWriter</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">fos</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> writeXmlFile</span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="pln">doc</span><span class="pun" style="color:rgb(102,102,0)">,</span><span class="pln"> outwriter</span><span class="pun" style="color:rgb(102,102,0)">,</span><span class="pln"> </span><span class="str" style="color:rgb(0,136,0)">"utf-8"</span><span class="pun" style="color:rgb(102,102,0)">);</span> </div><div> <span class="pln"> outwriter</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">close</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> fos</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">close</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span><span class="pln"> </span><span class="kwd" style="color:rgb(0,0,136)">catch</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">(</span><span class="typ" style="color:rgb(102,0,102)">Exception</span><span class="pln"> e</span><span class="pun" style="color:rgb(102,102,0)">)</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">{</span> </div><div> <span class="pln"> e</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">printStackTrace</span><span class="pun" style="color:rgb(102,102,0)">();</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> <span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">}</span> </div><div> </div><div> <span class="pln"> </span><span class="com" style="color:rgb(136,0,0)">// 写入xml文件</span> </div><div><span class="com" style="color:rgb(136,0,0)"> public static void writeXmlFile(Document doc, Writer w, String encoding) {</span></div><div><span class="com" style="color:rgb(136,0,0)"> try {</span></div><div><span class="com" style="color:rgb(136,0,0)"> Source source = new DOMSource(doc);</span></div><div><span class="com" style="color:rgb(136,0,0)"> Result result = new StreamResult(w);</span></div><div><span class="com" style="color:rgb(136,0,0)"> Transformer xformer = TransformerFactory.newInstance().newTransformer();</span></div><div><span class="com" style="color:rgb(136,0,0)"> xformer.setOutputProperty(OutputKeys.ENCODING, encoding);</span></div><div><span class="com" style="color:rgb(136,0,0)"> xformer.transform(source, result);</span></div><div><span class="com" style="color:rgb(136,0,0)"> } catch (TransformerConfigurationException e) {</span></div><div><span class="com" style="color:rgb(136,0,0)"> e.printStackTrace();</span></div><div><span class="com" style="color:rgb(136,0,0)"> } catch (TransformerException e) {</span></div><div><span class="com" style="color:rgb(136,0,0)"> e.printStackTrace();</span></div><div><span class="com" style="color:rgb(136,0,0)"> }</span></div><div><span class="com" style="color:rgb(136,0,0)"> }</span></div><div><span class="com" style="color:rgb(136,0,0)">}</span></div><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"></p></pre> </div> </div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> <div><strong>getSubStr.bat文件</strong></div> <div>参考《<a target="_blank" title="阅读全文" href="http://hubingforever.blog.163.com/blog/static/171040579201132232153255/" style="color:rgb(245,149,19); text-decoration:none; font-family:'Hiragino Sans GB W3','Hiragino Sans GB','Microsoft YaHei',微软雅黑,Arial,Helvetica,simsun,宋体; white-space:nowrap">getSubStr</a><span style="white-space:nowrap">》</span> </div> <div><strong>deleteDir.bat文件</strong></div> <div>参考《<a target="_blank" title="阅读全文" href="http://hubingforever.blog.163.com/blog/static/171040579201111544234840/" style="color:rgb(245,149,19); text-decoration:none; font-family:'Hiragino Sans GB W3','Hiragino Sans GB','Microsoft YaHei',微软雅黑,Arial,Helvetica,simsun,宋体; white-space:nowrap">deleteDir</a>》</div> </div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> <strong>apktool.bat文件</strong> </div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> 请参考《<a target="_blank" title="阅读全文" href="http://hubingforever.blog.163.com/blog/static/171040579201272795236469/" style="color:rgb(245,149,19); text-decoration:none; font-family:'Hiragino Sans GB W3','Hiragino Sans GB','Microsoft YaHei',微软雅黑,Arial,Helvetica,simsun,宋体; white-space:nowrap">Android反编译工具简介</a>》</div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> robin.keystore文件的制作</div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> 请参考《<a target="_blank" title="阅读全文" href="http://hubingforever.blog.163.com/blog/static/17104057920118263265457/" style="color:rgb(245,149,19); text-decoration:none; font-family:'Hiragino Sans GB W3','Hiragino Sans GB','Microsoft YaHei',微软雅黑,Arial,Helvetica,simsun,宋体; white-space:nowrap">Android应用程序签名简介</a> </div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> 》</div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> android应用程序的AndroidManifest.xml文件</div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> <pre class="prettyprint" style="white-space:pre-wrap; padding:2px; border:1px solid rgb(136,136,136)"><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"></p><div> <span class="pun" style="color:rgb(102,102,0)">&lt;?</span><span class="pln">xml version</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="str" style="color:rgb(0,136,0)">"1.0"</span><span class="pln"> encoding</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="str" style="color:rgb(0,136,0)">"utf-8"</span><span class="pun" style="color:rgb(102,102,0)">?&gt;</span> </div><div> <span class="tag" style="color:rgb(0,0,136)">&lt;manifest</span><span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">xmlns:android</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"http://schemas.android.com/apk/res/android"</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">package</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"com.lenovo.robin"</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:versionCode</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"1"</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:versionName</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"1.0"</span><span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&gt;</span> </div><div> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;uses-sdk</span><span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:minSdkVersion</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"8"</span><span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">/&gt;</span> </div><div> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;application</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:icon</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"@drawable/ic_launcher"</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:label</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"@string/app_name"</span><span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&gt;</span> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;meta-data</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:name</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"youmi:channel"</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:value</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"88888"</span><span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">/&gt;</span> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;activity</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:name</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">".SignatureCheckerActivity"</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:label</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"@string/app_name"</span><span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&gt;</span> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;intent-filter&gt;</span> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;action</span><span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:name</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"android.intent.action.MAIN"</span><span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">/&gt;</span> </div><div> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;category</span><span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:name</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"android.intent.category.LAUNCHER"</span><span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">/&gt;</span> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;/intent-filter&gt;</span> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;/activity&gt;</span> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;activity</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:name</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">".SignatureDetailActivity"</span> </div><div> <span class="pln"> </span><span class="atn" style="color:rgb(102,0,102)">android:label</span><span class="pun" style="color:rgb(102,102,0)">=</span><span class="atv" style="color:rgb(0,136,0)">"@string/app_name"</span><span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&gt;</span> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;/activity&gt;</span> </div><div> <span class="pln"> </span><span class="tag" style="color:rgb(0,0,136)">&lt;/application&gt;</span> </div><div> </div><div><span class="tag" style="color:rgb(0,0,136)">&lt;/manifest&gt;</span></div><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"></p></pre> </div> <div style="line-height:28px; font-family:'Hiragino Sans GB W3','Hiragino Sans GB',Arial,Helvetica,simsun,u5b8bu4f53; font-size:16px; background-color:rgb(245,245,245)"> 结束!</div> <br><p></p> </wbr>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值