Pārlūkot izejas kodu

android自动化脚本打包

huangbo 9 gadi atpakaļ
vecāks
revīzija
207db7070e
1 mainītis faili ar 212 papildinājumiem un 210 dzēšanām
  1. 212 210
      display-client/build/build.xml

+ 212 - 210
display-client/build/build.xml

@ -1,6 +1,6 @@
1 1
<?xml version="1.0" encoding="UTF-8"?>
2 2
<project name="apkTargets" default="apkpackaging"  basedir=".">
3
	<!--     指定配置文件      -->  
3
	<!-- 指定配置文件 -->  
4 4
    <property file="build.properties" /> 
5 5
    <record name="${log_file}" loglevel="info" append="no" action="start" />
6 6
	<!-- 识别编译环境 -->
@ -41,207 +41,23 @@
41 41
	<property name="out-signed-package" value="${project_home}/${bin-dir}/${app_name}/${app_name}-signed.apk" />
42 42
	<property name="zipalign-package" value="${output_path}/${app_name}_for_android_${android_version}.apk" />
43 43
	
44
	<target name="apkpackaging" depends="zipalign"/>
44
	<target name="apkpackaging" depends="init,aapt_gererateR,aidl,compile,obfuscate,dex-package,aapt-package-res,apk-builder,jar-signer,zipalign"/>
45 45
46
	<!-- 1.使用zipalign做优化,对apk文件进行对齐 -->
47
	<target name="zipalign" depends="jar-signer">
48
	    <echo>Zipalign optimizing...</echo>
49
		<exec executable="${zipalign}" failonerror="true">
50
		    <!-- 打印详细日志 -->
51
            <!-- <arg value="-v" /> -->
52
            <arg value="-f" />
53
            <arg value="4" />
54
            <arg value="${out-signed-package}" />
55
            <!-- arg value="${out-unsigned-package}" /> -->
56
            <arg value="${zipalign-package}" />
57
        </exec>
58
        <echo>打包完成:${zipalign-package}</echo>
59
	</target>
60
	
61
	<!-- 2.APK签名 -->
62
	<target name="jar-signer" depends="apk-builder">
63
	    <echo>Jar signer...</echo>
64
        <exec executable="${jarsigner}" failonerror="true">
65
            <!-- 打印详细日志 -->
66
            <!-- <arg value="-verbose" /> -->
67
            <!-- 签名信息 -->
68
            <arg value="-keystore" />
69
            <arg value="${key_store}" />
70
            <arg value="-storepass" />
71
            <arg value="${key_store_password}" />
72
            <arg value="-keypass" />
73
            <arg value="${key_alias_password}" />
74
            <!-- 输出安装包 -->
75
            <arg value="-signedjar" />
76
            <arg value="${out-signed-package}" />
77
            <arg value="${out-unsigned-package}" />
78
            <arg value="${key_alias}" />
79
			<!--  -->
80
            <arg value="-digestalg" />
81
            <arg value="SHA1" />
82
            <arg value="-sigalg" />
83
            <arg value="MD5withRSA" />
84
        </exec>
85
    </target>
86
    
87
	<!-- 3.APK打包 -->
88
	<target name="apk-builder" depends="aapt-package-res">
89
	    <echo>Building apk...</echo>
90
	    <java classpath="${android_apk_tools}/lib/sdklib.jar" classname="com.android.sdklib.build.ApkBuilderMain" fork="true" failonerror="true">
91
            <sysproperty key="file.encoding" value="UTF-8" />
92
            <!-- 创建未签名的包 -->
93
	        <arg value="${out-unsigned-package}" />
94
	        <arg value="-u" />
95
            <arg value="-z" />
96
            <arg value="${resources-package}" />
97
            <!-- dex中间文件 -->
98
            <arg value="-f" />
99
            <arg value="${intermediate-dex}" />
100
            <!-- Adds the java resources found in that folder -->
101
            <arg value="-rf" />
102
            <arg value="${host-src}" />
103
            <!-- add native libraries -->
104
            <arg value="-nf" />
105
            <arg value="${host-libs}" />
106
            <arg value="-nf" />
107
            <arg value="${library_1}/libs" />
108
            <arg value="-nf" />
109
            <arg value="${library_2}/libs" />
110
            <!-- Adds the java resources found in the jar file(s) -->
111
            <arg value="-rj" />
112
            <arg value="${host-libs}" />
113
            <arg value="-rj" />
114
            <arg value="${library_1}/libs" />
115
            <arg value="-rj" />
116
            <arg value="${library_2}/libs" />
117
	    </java>
118
	</target>
119
	
120
	<!-- 4.aapt打包资源 -->
121
	<target name="aapt-package-res" depends="dex-package">
122
		<echo>Packaging resources and assets...</echo>
123
		<exec executable="${aapt}" failonerror="true">
124
		    <arg value="package" />
125
		    <arg value="-f" />
126
		    <arg value="-M" />
127
		    <arg value="${project_home}/${manifest-xml}" />
128
		    <arg value="-S" />
129
		    <arg value="${project_home}/${res-dir}" />
130
		    
131
		    <arg value="-S" />
132
	        <arg value="${library_1}/${res-dir}" /><!-- 包含Library的资源 -->
133
	        
134
		    <!-- <arg value="-S" />
135
	        <arg value="${library_2}/${res-dir}" /> --><!-- 包含Library2的资源 -->
136
		    
137
		    <arg value="-A" />
138
		    <arg value="${project_home}/${asset-dir}" /><!-- assets文件 -->
139
		    
140
		    <arg value="-I" />
141
		    <arg value="${android-jar}" />
142
		    <arg value="-F" />
143
		    <arg value="${resources-package}" /><!-- 输出资源压缩包 -->
144
		    <arg value="--auto-add-overlay" /> <!-- 这个重要,覆盖资源,不然报错-->
145
		</exec>
146
	</target>
147
	
148
	<!-- 5.打包dex文件 -->
149
	<target name="dex-package" depends="obfuscate">
150
	    <echo>Packaging dex...</echo>
151
		<apply executable="${dx}" failonerror="true" parallel="true">
152
		    <arg value="--dex" />
153
		    <arg value="--output=${intermediate-dex}" />
154
		    <arg path="${host-classes}" />
155
		    <arg path="${host-libs}" />
156
		    
157
		    <fileset dir="${project_home}/${libs-dir}" />
158
		    <!-- Library1 -->
159
		    <fileset dir="${library_1}/libs" />
160
		    <!-- Library2 -->
161
		    <fileset dir="${library_2}/libs" />
162
		</apply>
163
	</target>
164
	
165
	<!-- 6.混淆 -->
166
	<target name="obfuscate" depends="compile">
167
		<jar basedir="${host-classes}" destfile="temp.jar" />
168
	
169
		<java jar="${proguard-jar}" fork="true" failonerror="true">
170
		    <sysproperty key="file.encoding" value="UTF-8" /> 
171
	        <jvmarg value="-Dmaximum.inlined.code.length=32" />
172
	        <arg value="-injars temp.jar" />
173
	        <arg value="-outjars optimized.jar" />
174
	        <arg value="-libraryjars '${annotations-jar}'" />
175
	        <arg value="-libraryjars '${android-jar}'" />
176
	        <arg value="@${project_home}/proguard-project.txt" />
177
		</java>
178
	    <delete file="temp.jar" />
179
	    <delete dir="${host-classes}" />
180
	    <mkdir dir="${host-classes}" />
181
		<unzip src="optimized.jar" dest="${host-classes}" />
182
	    <delete file="optimized.jar" />
183
	</target>
184
	
185
	<!-- 编译java文件为class文件 -->
186
	<target name="compile" depends="aidl">
187
		<path id="project.libs">
188
	        <fileset dir="${project_home}/${libs-dir}">
189
	            <include name="*.so" />
190
	            <include name="**/*.so" />
191
	            <include name="*/*.so" />
192
	            <include name="**/*.jar" />
193
	            <include name="*.jar" />
194
	        </fileset>
195
		</path>
196
	      
197
	  	<path id="library1.libs">
198
	         <fileset dir="${library_1}/libs">
199
	             <include name="*.so" />
200
	             <include name="**/*.so" />
201
	             <include name="*/*.so" />
202
	             <include name="**/*.jar" />
203
	             <include name="*.jar" />
204
	         </fileset>
205
	    </path>
206
	    
207
	  	<path id="library2.libs">
208
	          <fileset dir="${library_2}/libs">
209
	              <include name="*.so" />
210
	              <include name="**/*.so" />
211
	              <include name="*/*.so" />
212
	              <include name="**/*.jar" />
213
	              <include name="*.jar" />
214
	          </fileset>
215
	    </path>
216
	    
217
		<javac debug="true" extdirs="" srcdir="." includeantruntime="on" 
218
	         destdir="${host-classes}" bootclasspath="${android-jar}" encoding="UTF-8">
219
	          <compilerarg line="-encoding UTF-8 " />
220
	          <src path="${library_1}/${src-dir}" /><!-- Library1的src文件 -->
221
	          <src path="${library_2}/${src-dir}" /><!-- Library2的src文件 -->
222
	          <src path="${host-src}" />
223
	          <src path="${host-gen}" />
224
			  <!-- jar文件 -->          
225
	          <classpath refid="library1.libs" />
226
	          <classpath refid="library2.libs" />
227
	          <classpath refid="project.libs" />
228
		</javac>
46
  	<!-- 初始化清空-->
47
	<target name="init">
48
		<delete dir="${host-gen}" />
49
		<delete dir="${host-bin}" />
50
		<delete file="${project_home}/proguardMapping.txt" />
51
		
52
		<mkdir dir="${host-gen}" />
53
		<mkdir dir="${host-bin}" />
54
		<mkdir dir="${host-classes}" />
55
		<mkdir dir="${host-bin}/${app_name}" />
56
		<!-- <mkdir dir="${output_path}" /> -->
229 57
	</target>
230 58
	
231
	<!-- 生成aidl对应的java文件 -->
232
  	<target name="aidl" depends="aapt_gererateR">
233
    	<apply executable="${aidl}" failonerror="true">
234
            <arg value="-p${android-framework}" />
235
            <arg value="-I${host-src}" />
236
            <arg value="-o${host-gen}" />
237
            <fileset dir="${host-src}">
238
                <include name="**/*.aidl" />
239
            </fileset>
240
        </apply>
241
    </target>
242
    
243
  	<!--2 生成R文件和Manifest.java-->
244
  	<target name="aapt_gererateR" depends="init">
59
  	<!-- 生成R文件和Manifest.java -->
60
  	<target name="aapt_gererateR">
245 61
	    <exec executable="${aapt}" failonerror="true">
246 62
			<arg value="package" />
247 63
			<arg value="-m" />
@ -295,16 +111,202 @@
295 111
        </exec>
296 112
    </target>
297 113
    
298
  	<!--1 初始化清空-->
299
	<target name="init">
300
		<delete dir="${host-gen}" />
301
		<delete dir="${host-bin}" />
302
		<delete file="${project_home}/proguardMapping.txt" />
303
		
304
		<mkdir dir="${host-gen}" />
305
		<mkdir dir="${host-bin}" />
306
		<mkdir dir="${host-classes}" />
307
		<mkdir dir="${host-bin}/${app_name}" />
308
		<!-- <mkdir dir="${output_path}" /> -->
114
	<!-- 生成aidl对应的java文件 -->
115
  	<target name="aidl">
116
    	<apply executable="${aidl}" failonerror="true">
117
            <arg value="-p${android-framework}" />
118
            <arg value="-I${host-src}" />
119
            <arg value="-o${host-gen}" />
120
            <fileset dir="${host-src}">
121
                <include name="**/*.aidl" />
122
            </fileset>
123
        </apply>
124
    </target>
125
    
126
	<!-- 编译java文件为class文件 -->
127
	<target name="compile">
128
		<path id="project.libs">
129
	        <fileset dir="${project_home}/${libs-dir}">
130
	            <include name="*.so" />
131
	            <include name="**/*.so" />
132
	            <include name="*/*.so" />
133
	            <include name="**/*.jar" />
134
	            <include name="*.jar" />
135
	        </fileset>
136
		</path>
137
	      
138
	  	<path id="library1.libs">
139
	         <fileset dir="${library_1}/libs">
140
	             <include name="*.so" />
141
	             <include name="**/*.so" />
142
	             <include name="*/*.so" />
143
	             <include name="**/*.jar" />
144
	             <include name="*.jar" />
145
	         </fileset>
146
	    </path>
147
	    
148
	  	<path id="library2.libs">
149
	          <fileset dir="${library_2}/libs">
150
	              <include name="*.so" />
151
	              <include name="**/*.so" />
152
	              <include name="*/*.so" />
153
	              <include name="**/*.jar" />
154
	              <include name="*.jar" />
155
	          </fileset>
156
	    </path>
157
	    
158
		<javac debug="true" extdirs="" srcdir="." includeantruntime="on" 
159
	         destdir="${host-classes}" bootclasspath="${android-jar}" encoding="UTF-8">
160
	          <compilerarg line="-encoding UTF-8 " />
161
	          <src path="${library_1}/${src-dir}" /><!-- Library1的src文件 -->
162
	          <src path="${library_2}/${src-dir}" /><!-- Library2的src文件 -->
163
	          <src path="${host-src}" />
164
	          <src path="${host-gen}" />
165
			  <!-- jar文件 -->          
166
	          <classpath refid="library1.libs" />
167
	          <classpath refid="library2.libs" />
168
	          <classpath refid="project.libs" />
169
		</javac>
170
	</target>
171
	
172
	<!-- 混淆 -->
173
	<target name="obfuscate">
174
		<jar basedir="${host-classes}" destfile="temp.jar" />
175
	
176
		<java jar="${proguard-jar}" fork="true" failonerror="true">
177
		    <sysproperty key="file.encoding" value="UTF-8" /> 
178
	        <jvmarg value="-Dmaximum.inlined.code.length=32" />
179
	        <arg value="-injars temp.jar" />
180
	        <arg value="-outjars optimized.jar" />
181
	        <arg value="-libraryjars '${annotations-jar}'" />
182
	        <arg value="-libraryjars '${android-jar}'" />
183
	        <arg value="@${project_home}/proguard-project.txt" />
184
		</java>
185
	    <delete file="temp.jar" />
186
	    <delete dir="${host-classes}" />
187
	    <mkdir dir="${host-classes}" />
188
		<unzip src="optimized.jar" dest="${host-classes}" />
189
	    <delete file="optimized.jar" />
190
	</target>
191
	
192
	<!-- 打包dex文件 -->
193
	<target name="dex-package">
194
	    <echo>Packaging dex...</echo>
195
		<apply executable="${dx}" failonerror="true" parallel="true">
196
		    <arg value="--dex" />
197
		    <arg value="--output=${intermediate-dex}" />
198
		    <arg path="${host-classes}" />
199
		    <arg path="${host-libs}" />
200
		    
201
		    <fileset dir="${project_home}/${libs-dir}" />
202
		    <!-- Library1 -->
203
		    <fileset dir="${library_1}/libs" />
204
		    <!-- Library2 -->
205
		    <fileset dir="${library_2}/libs" />
206
		</apply>
309 207
	</target>
208
	
209
	<!-- aapt打包资源 -->
210
	<target name="aapt-package-res">
211
		<echo>Packaging resources and assets...</echo>
212
		<exec executable="${aapt}" failonerror="true">
213
		    <arg value="package" />
214
		    <arg value="-f" />
215
		    <arg value="-M" />
216
		    <arg value="${project_home}/${manifest-xml}" />
217
		    <arg value="-S" />
218
		    <arg value="${project_home}/${res-dir}" />
219
		    
220
		    <arg value="-S" />
221
	        <arg value="${library_1}/${res-dir}" /><!-- 包含Library的资源 -->
222
	        
223
		    <!-- <arg value="-S" />
224
	        <arg value="${library_2}/${res-dir}" /> --><!-- 包含Library2的资源 -->
225
		    
226
		    <arg value="-A" />
227
		    <arg value="${project_home}/${asset-dir}" /><!-- assets文件 -->
228
		    
229
		    <arg value="-I" />
230
		    <arg value="${android-jar}" />
231
		    <arg value="-F" />
232
		    <arg value="${resources-package}" /><!-- 输出资源压缩包 -->
233
		    <arg value="--auto-add-overlay" /> <!-- 这个重要,覆盖资源,不然报错-->
234
		</exec>
235
	</target>
236
	
237
	
238
	<!-- APK打包 -->
239
	<target name="apk-builder">
240
	    <echo>Building apk...</echo>
241
	    <java classpath="${android_apk_tools}/lib/sdklib.jar" classname="com.android.sdklib.build.ApkBuilderMain" fork="true" failonerror="true">
242
            <sysproperty key="file.encoding" value="UTF-8" />
243
            <!-- 创建未签名的包 -->
244
	        <arg value="${out-unsigned-package}" />
245
	        <arg value="-u" />
246
            <arg value="-z" />
247
            <arg value="${resources-package}" />
248
            <!-- dex中间文件 -->
249
            <arg value="-f" />
250
            <arg value="${intermediate-dex}" />
251
            <!-- Adds the java resources found in that folder -->
252
            <arg value="-rf" />
253
            <arg value="${host-src}" />
254
            <!-- add native libraries -->
255
            <arg value="-nf" />
256
            <arg value="${host-libs}" />
257
            <arg value="-nf" />
258
            <arg value="${library_1}/libs" />
259
            <arg value="-nf" />
260
            <arg value="${library_2}/libs" />
261
            <!-- Adds the java resources found in the jar file(s) -->
262
            <arg value="-rj" />
263
            <arg value="${host-libs}" />
264
            <arg value="-rj" />
265
            <arg value="${library_1}/libs" />
266
            <arg value="-rj" />
267
            <arg value="${library_2}/libs" />
268
	    </java>
269
	</target>
270
	
271
	<!-- APK签名 -->
272
	<target name="jar-signer">
273
	    <echo>Jar signer...</echo>
274
        <exec executable="${jarsigner}" failonerror="true">
275
            <!-- 打印详细日志 -->
276
            <!-- <arg value="-verbose" /> -->
277
            <!-- 签名信息 -->
278
            <arg value="-keystore" />
279
            <arg value="${key_store}" />
280
            <arg value="-storepass" />
281
            <arg value="${key_store_password}" />
282
            <arg value="-keypass" />
283
            <arg value="${key_alias_password}" />
284
            <!-- 输出安装包 -->
285
            <arg value="-signedjar" />
286
            <arg value="${out-signed-package}" />
287
            <arg value="${out-unsigned-package}" />
288
            <arg value="${key_alias}" />
289
			<!--  -->
290
            <arg value="-digestalg" />
291
            <arg value="SHA1" />
292
            <arg value="-sigalg" />
293
            <arg value="MD5withRSA" />
294
        </exec>
295
    </target>
296
	
297
	<!-- 使用zipalign做优化,对apk文件进行对齐 -->
298
	<target name="zipalign">
299
	    <echo>Zipalign optimizing...</echo>
300
		<exec executable="${zipalign}" failonerror="true">
301
		    <!-- 打印详细日志 -->
302
            <!-- <arg value="-v" /> -->
303
            <arg value="-f" />
304
            <arg value="4" />
305
            <arg value="${out-signed-package}" />
306
            <!-- arg value="${out-unsigned-package}" /> -->
307
            <arg value="${zipalign-package}" />
308
        </exec>
309
        <echo>打包完成:${zipalign-package}</echo>
310
	</target>
311
	
310 312
</project>