zoukankan      html  css  js  c++  java
  • (转)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类文件:
        
      
        
    <target name="resource-src" depends="copy">
       
      
            
      <echo>
       Generating R.java / Manifest.java from the resources...
      </echo> 
      
            
      <exec executable="${aapt}" failonerror="true">
        
       

       <arg value="package" /> 
       

       <arg value="-m" /> 
       

       <arg value="-J" /> 
       

       <arg value="${outdir-gen}" /> 
       

       <arg value="-M" /> 
       

       <arg value="AndroidManifest.xml" /> 
       

       <arg value="-S" /> 
       

       <arg value="${resource-dir}" /> 
       

       <arg value="-I" /> 
       

       <arg value="${android-jar}" /> 
       

      </exec> 
      
        
    </target> 

    4.2将.aidl文件生成.java类文件:
        
      
        
    <target name="aidl" depends="copy">
       
      
            
      <echo>
       Compiling aidl files into Java classes...
      </echo> 
      
            
      <apply executable="${aidl}" failonerror="true">
        
       
                
       <arg value="-p${android-framework}" /> 
       
                
       <arg value="-I${srcdir}" /> 
       
                
       <fileset dir="${srcdir}">
         
        
                    
        <include name="**/*.aidl" /> 
        
                
       </fileset> 
       
            
      </apply> 
      

    </target> 

    4.3编译.java类文件生成class文件:
        
      
        
    <target name="compile" depends="copy, resource-src, aidl">
       
      
            
      <javac encoding="GB18030" target="1.5" debug="true" extdirs="">
       
                    srcdir="." 
       
                    destdir="${outdir-classes}" 
       
                    bootclasspath="${android-jar}"> 
       
                
       <classpath>
         
        
                    
        <fileset dir="${external-libs}" includes="*.jar" /> 
        
                
       </classpath> 
       
             
      </javac> 
      
        
    </target> 
       
    4.4第四步 将class文件打包生成classes.dex文件:
        
      
        
    <target name="dex" depends="compile">
       
      
            
      <echo>
       Converting compiled files and external libraries into ${outdir}/${dex-file}...
      </echo> 
      
            
      <apply executable="${dx}" failonerror="true" parallel="true">
        
       
                
       <arg value="--dex" /> 
       
                
       <arg value="--output=${intermediate-dex-ospath}" /> 
       
                
       <arg path="${outdir-obfuscate-classes-ospath}" /> 
       
                
       <fileset dir="${external-libs}" includes="*.jar" /> 
       
            
      </apply> 
      
        
    </target> 
    4.5第五步 打包资源文件(包括res、assets、androidmanifest.xml等):
       
      
        
    <target name="package-res-and-assets">
       
      
            
      <echo>
       Packaging resources and assets...
      </echo> 
      
            
      <exec executable="${aapt}" failonerror="true">
        
       
                
       <arg value="package" /> 
       
                
       <arg value="-f" /> 
       
                
       <arg value="-M" /> 
       
                
       <arg value="AndroidManifest.xml" /> 
       
                
       <arg value="-S" /> 
       
                
       <arg value="${resource-dir}" /> 
       
                
       <arg value="-A" /> 
       
                
       <arg value="${asset-dir}" /> 
       
                
       <arg value="-I" /> 
       
                
       <arg value="${android-jar}" /> 
       
                
       <arg value="-F" /> 
       
                
       <arg value="${resources-package}" /> 
       
            
      </exec> 
      
        
    </target> 
    4.6第六步 生成未签名的apk安装文件:
       
    <target name="package" depends="dex, package-res">
       
      
            
      <echo>
       Packaging ${out-unsigned-package} for release...
      </echo> 
      
            
      <exec executable="${apk-builder}" failonerror="true">
        
       
                
       <arg value="${out-unsigned-package-ospath}" /> 
       
                
       <arg value="-u" /> 
       
                
       <arg value="-z" /> 
       
                
       <arg value="${resources-package-ospath}" /> 
       
                
       <arg value="-f" /> 
       
                
       <arg value="${intermediate-dex-ospath}" /> 
       
                
       <arg value="-rf" /> 
       
                
       <arg value="${srcdir-ospath}" /> 
       
                
       <arg value="-rj" /> 
       
                
       <arg value="${external-libs-ospath}" /> 
       
            
      </exec> 
      
            
      <echo>
       It will need to be signed with jarsigner before being published.
      </echo> 
      
        
    </target> 
        
    4.7第七步 对未签名的apk进行签名生成签名后的android文件:

    <target name="jarsigner" depends="package">
       
      

      <echo>
       Packaging ${out-unsigned-package} for release...
      </echo> 
      

      <exec executable="${jarsigner}" failonerror="true">
        
       

       <arg value="-verbose" /> 
       

       <arg value="-storepass" /> 
       

       <arg value="byread002" /> 
       

       <arg value="-keypass" /> 
       

       <arg value="byread002" /> 
       

       <arg value="-keystore" /> 
       

       <arg value="bbyread.keystore" /> 
       

       <arg value="-signedjar" /> 
       

       <arg value="${out-signed-package-ospath}" /> 
       

       <arg value="${out-unsigned-package-ospath}" /> 
       

       <arg value="byread" /> 
       

      </exec> 
      

    </target>

  • 相关阅读:
    JavaScript之美读书笔记一
    关于form与表单操作
    正则表达式中的字符转义
    [codeforces 391D2]Supercollider
    [AMPPZ 2013]Bytehattan
    [那些你所不知道的鬼畜写法]平衡树学习笔记
    [AHOI 2006][BZOJ 1269]文本编辑器editor
    [BZOJ 3622]已经没有什么好害怕的了
    [POI 2008]Mafia
    [POI 2008][BZOJ 1132]Tro
  • 原文地址:https://www.cnblogs.com/greywolf/p/3037092.html
Copyright © 2011-2022 走看看