android 打包 步驟

Android編譯,打包、簽名詳細教程
1.Android程序編譯、打包、簽名、發佈的三種方式:
方式一:命令行手動編譯打包
方式二:使用ant自動編譯打包
方式三:使用eclipse+ADT編譯打包
2.Android編譯、打包的步驟:
2.1第一步 生成R.java類文件:
Eclipse中會自動生成R.java,ant和命令行使用android SDK提供的aapt.ext程序生成R.java。
2.2第二步 將.aidl文件生成.java類文件:
Eclipse中自動生成,ant和命令行使用android SDK提供的aidl.exe生成.java文件。
2.3第三步 編譯.java類文件生成class文件:
Eclipse中自動生成,ant和命令行使用jdk的javac編譯java類文件生成class文件。
2.4第四步 將class文件打包生成classes.dex文件:
Eclipse中自動生成,ant和命令行使用android SDK提供的dx.bat命令行腳本生成classes.dex文件。
2.5第五步 打包資源文件(包括res、assets、androidmanifest.xml等):
Eclipse中自動生成,ant和命令行使用Android SDK提供的aapt.exe生成資源包文件。
2.6第六步 生成未簽名的apk安裝文件:
Eclipse中自動生成debug簽名文件存放在bin目錄中,ant和命令行使用android SDK提供的apkbuilder.bat命令腳本生成未簽名的apk安裝文件。
2.7第七步 對未簽名的apk進行簽名生成簽名後的android文件:
Eclipse中使用Android Tools進行簽名,ant和命令行使用jdk的jarsigner對未簽名的包進行apk簽名。
 

3.命令行手動編譯打包詳解
詳見:http://jojol-zhou.javaeye.com/blog/729254
4.ant自動打包android程序詳解
4.1生成R.java類文件:
 
  1.    <!-- Generate the R.java file for this project's resources. --> 
  2.     <target name="resource-src" depends="copy"> 
  3.         <echo>Generating R.java / Manifest.java from the resources...</echo> 
  4.         <exec executable="${aapt}" failonerror="true"> 
  5. <arg value="package" /> 
  6. <arg value="-m" /> 
  7. <arg value="-J" /> 
  8. <arg value="${outdir-gen}" /> 
  9. <arg value="-M" /> 
  10. <arg value="AndroidManifest.xml" /> 
  11. <arg value="-S" /> 
  12. <arg value="${resource-dir}" /> 
  13. <arg value="-I" /> 
  14. <arg value="${android-jar}" /> 
  15. </exec> 
  16.     </target>  
4.2將.aidl文件生成.java類文件:
 
  1.     <!-- Generate java classes from .aidl files. --> 
  2.     <target name="aidl" depends="copy"> 
  3.         <echo>Compiling aidl files into Java classes...</echo> 
  4.         <apply executable="${aidl}" failonerror="true"> 
  5.             <arg value="-p${android-framework}" /> 
  6.             <arg value="-I${srcdir}" /> 
  7.             <fileset dir="${srcdir}"> 
  8.                 <include name="**/*.aidl"/> 
  9.             </fileset> 
  10.         </apply> 
  11. </target>  
4.3編譯.java類文件生成class文件:
 
  1. <!-- Compile this project's .java files into .class files. --> 
  2.  <target name="compile" depends="copy, resource-src, aidl"> 
  3.      <javac encoding="GB18030" target="1.5" debug="true" extdirs="" 
  4.              srcdir="." 
  5.              destdir="${outdir-classes}" 
  6.              bootclasspath="${android-jar}"> 
  7.          <classpath> 
  8.              <fileset dir="${external-libs}" includes="*.jar"/> 
  9.          </classpath> 
  10.       </javac> 
  11.  </target>  

  
4.4第四步 將class文件打包生成classes.dex文件:
  
  1. <!-- Convert this project's .class files into .dex files. --> 
  2.   <target name="dex" depends="compile"> 
  3.       <echo>Converting compiled files and external libraries into ${outdir}/${dex-file}...</echo> 
  4.       <apply executable="${dx}" failonerror="true" parallel="true"> 
  5.           <arg value="--dex" /> 
  6.           <arg value="--output=${intermediate-dex-ospath}" /> 
  7.           <arg path="${outdir-obfuscate-classes-ospath}" /> 
  8.           <fileset dir="${external-libs}" includes="*.jar"/> 
  9.       </apply> 
  10.   </target>  

4.5第五步 打包資源文件(包括res、assets、androidmanifest.xml等):
 
  1. <!-- Put the project's resources into the output package file. --> 
  2.   <target name="package-res-and-assets"> 
  3.       <echo>Packaging resources and assets...</echo> 
  4.       <exec executable="${aapt}" failonerror="true"> 
  5.           <arg value="package" /> 
  6.           <arg value="-f" /> 
  7.           <arg value="-M" /> 
  8.           <arg value="AndroidManifest.xml" /> 
  9.           <arg value="-S" /> 
  10.           <arg value="${resource-dir}" /> 
  11.           <arg value="-A" /> 
  12.           <arg value="${asset-dir}" /> 
  13.           <arg value="-I" /> 
  14.           <arg value="${android-jar}" /> 
  15.           <arg value="-F" /> 
  16.           <arg value="${resources-package}" /> 
  17.       </exec> 
  18.   </target>  

4.6第六步 生成未簽名的apk安裝文件:
 
  1. <target name="package" depends="dex, package-res"> 
  2.      <echo>Packaging ${out-unsigned-package} for release...</echo> 
  3.      <exec executable="${apk-builder}" failonerror="true"> 
  4.          <arg value="${out-unsigned-package-ospath}" /> 
  5.          <arg value="-u" /> 
  6.          <arg value="-z" /> 
  7.          <arg value="${resources-package-ospath}" /> 
  8.          <arg value="-f" /> 
  9.          <arg value="${intermediate-dex-ospath}" /> 
  10.          <arg value="-rf" /> 
  11.          <arg value="${srcdir-ospath}" /> 
  12.          <arg value="-rj" /> 
  13.          <arg value="${external-libs-ospath}" /> 
  14.      </exec> 
  15.      <echo>It will need to be signed with jarsigner before being published.</echo> 
  16.  </target>  

   
4.7第七步 對未簽名的apk進行簽名生成簽名後的android文件:
 
  1. <target name="jarsigner" depends="package"> 
  2. <echo>Packaging ${out-unsigned-package} for release...</echo> 
  3. <exec executable="${jarsigner}" failonerror="true"> 
  4. <arg value="-verbose" /> 
  5. <arg value="-storepass" /> 
  6. <arg value="byread002" /> 
  7. <arg value="-keypass" /> 
  8. <arg value="byread002" /> 
  9. <arg value="-keystore" /> 
  10. <arg value="bbyread.keystore" /> 
  11. <arg value="-signedjar" /> 
  12. <arg value="${out-signed-package-ospath}" /> 
  13. <arg value="${out-unsigned-package-ospath}" /> 
  14. <arg value="byread" /> 
  15. </exec> 
  16. </target> 



 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章