命令行打包android 工程实例:
//1,gen下生成R.java 文件,包名不会自动生成,需要提前mkdirmae@MaydeMacBook-Pro ~/android-cmd/test $ aapt package -v -f -m -J ./gen -S res -M AndroidManifest.xml -I ~/Downloads/adt-bundle-mac-x86_64-20140702/sdk/platforms/android-20/android.jar//2,编译所有java文件,包括R.java javac -bootclasspath ~/Downloads/adt-bundle-mac-x86_64-20140702/sdk/platforms/android-20/android.jar -cp libs/android-support-v4.jar -d bin gen/play/apilearn/R.java src/apiDemo/*.java src/com/jakewharton/disklrucache/*.java src/fragment/test/TestFragmentFullscreenActivity.java src/play/apilearn/*.java src/play/apilearn/util/SystemUiHider*.java src/stagger/*.java src/stagger/util/DynamicHeight*.java src/utils/*.java src/camera/*.java src/custom/view/*.java src/services/HelloIntentService.java src/test/*.java src/webview/ActivityWebView.java //3,打 jar包mae@MaydeMacBook-Pro ~/android-cmd/test/bin $ jar cvf test.jar *//4,生成dex , 如果支持多dex,可以选择生成多个;应该包依赖的jar库,这里忘记包含依赖包了, 运行时会报错mae@MaydeMacBook-Pro ~/android-cmd/test $ dx --dex --output=bin/classes.dex bin/test.jar //5, 压缩资源文件mae@MaydeMacBook-Pro ~/android-cmd/test $ aapt package -f -M AndroidManifest.xml -S res -I ~/Downloads/adt-bundle-mac-x86_64-20140702/sdk/platforms/android-20/android.jar -F bin/resources.ap_//6, build apk 文件mae@MaydeMacBook-Pro ~/android-cmd/test $ java -cp ~/Downloads/adt-bundle-mac-x86_64-20140702/sdk/tools/lib/sdklib.jar com.android.sdklib.build.ApkBuilderMain test.apk -v -u -z bin/resources.ap_ -f bin/classes.dex -rf srcTHIS TOOL IS DEPRECATED. See --help for more information.Packaging test.apkbin/resources.ap_:=> res/layout/activity_activity1.xml=> res/layout/activity_camera_activity.xml=> res/layout/activity_drawer_layout.xml=> res/layout/activity_main.xml=> res/layout/activity_pick_photo.xml=> res/layout/activity_test_fragment_fullscreen.xml=> res/layout/activity_view_page.xml=> res/layout/activity_viewpager.xml=> res/layout/activity_web_view.xml=> res/layout/edit_text_with_image.xml=> res/layout/fragment_blank.xml=> res/layout/fragment_history.xml=> res/layout/fragment_main.xml=> res/layout/image_view.xml=> res/layout/location_history.xml=> res/layout/note_list_item_layout.xml=> res/layout/note_load_more_view.xml=> res/layout/test_download_manager.xml=> res/layout/touchevent_activity.xml=> res/layout/view_pager_with_background.xml=> res/menu/activity1.xml=> res/menu/activity_web_view.xml=> res/menu/history.xml=> res/menu/main.xml=> res/menu/view_page.xml=> res/menu/viewpager.xml=> AndroidManifest.xml=> resources.arsc=> res/drawable-hdpi/ic_launcher.png=> res/drawable-hdpi/icon.png=> res/drawable-mdpi/banner_default.png=> res/drawable-mdpi/ic_close.png=> res/drawable-mdpi/ic_comment_gd_nor.png=> res/drawable-mdpi/ic_launcher.png=> res/drawable-mdpi/icon.png=> res/drawable-xhdpi/ic_launcher.png=> res/drawable-xhdpi/icon.png=> res/drawable-xhdpi/laucn_01.png=> res/drawable-xhdpi/laucn_02.png=> res/drawable-xhdpi/laucn_03.png=> res/drawable-xhdpi/laucn_04.png=> res/drawable-xhdpi/launch_background.png=> res/drawable-xxhdpi/ic_launcher.png=> res/layout-land/fragment_history.xml=> res/layout-land/location_history.xmlbin/classes.dex => classes.dex//7, 生成签名证书mae@MaydeMacBook-Pro ~/android-cmd/keystore $ keytool -genkey -alias zzw_android.keystore -keyalg RSA -validity 20000 -keystore zzw_android.keystore输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: zhang您的组织单位名称是什么? [Unknown]: 您的组织名称是什么? [Unknown]: 您所在的城市或区域名称是什么? [Unknown]: 您所在的省/市/自治区名称是什么? [Unknown]: shandong该单位的双字母国家/地区代码是什么? [Unknown]: cnCN=zhang, OU=Unknown, O=Unknown, L=Unknown, ST=shandong, C=cn是否正确? [否]: Y输入的密钥口令 (如果和密钥库口令相同, 按回车): mae@MaydeMacBook-Pro ~/android-cmd/keystore $ lszzw_android.keystore//8, 对apk进行签名mae@MaydeMacBook-Pro ~/android-cmd/test $ jarsigner -verbose -keystore ../keystore/zzw_android.keystore -signedjar signed_test.apk test.apk zzw_android.keystore输入密钥库的密码短语: 正在添加: META-INF/MANIFEST.MF 正在添加: META-INF/ZZW_ANDR.SF 正在添加: META-INF/ZZW_ANDR.RSA 正在签名: res/layout/activity_activity1.xml 正在签名: res/layout/activity_camera_activity.xml 正在签名: res/layout/activity_drawer_layout.xml 正在签名: res/layout/activity_main.xml 正在签名: res/layout/activity_pick_photo.xml 正在签名: res/layout/activity_test_fragment_fullscreen.xml 正在签名: res/layout/activity_view_page.xml 正在签名: res/layout/activity_viewpager.xml 正在签名: res/layout/activity_web_view.xml 正在签名: res/layout/edit_text_with_image.xml 正在签名: res/layout/fragment_blank.xml 正在签名: res/layout/fragment_history.xml 正在签名: res/layout/fragment_main.xml 正在签名: res/layout/image_view.xml 正在签名: res/layout/location_history.xml 正在签名: res/layout/note_list_item_layout.xml 正在签名: res/layout/note_load_more_view.xml 正在签名: res/layout/test_download_manager.xml 正在签名: res/layout/touchevent_activity.xml 正在签名: res/layout/view_pager_with_background.xml 正在签名: res/menu/activity1.xml 正在签名: res/menu/activity_web_view.xml 正在签名: res/menu/history.xml 正在签名: res/menu/main.xml 正在签名: res/menu/view_page.xml 正在签名: res/menu/viewpager.xml 正在签名: AndroidManifest.xml 正在签名: resources.arsc 正在签名: res/drawable-hdpi/ic_launcher.png 正在签名: res/drawable-hdpi/icon.png 正在签名: res/drawable-mdpi/banner_default.png 正在签名: res/drawable-mdpi/ic_close.png 正在签名: res/drawable-mdpi/ic_comment_gd_nor.png 正在签名: res/drawable-mdpi/ic_launcher.png 正在签名: res/drawable-mdpi/icon.png 正在签名: res/drawable-xhdpi/ic_launcher.png 正在签名: res/drawable-xhdpi/icon.png 正在签名: res/drawable-xhdpi/laucn_01.png 正在签名: res/drawable-xhdpi/laucn_02.png 正在签名: res/drawable-xhdpi/laucn_03.png 正在签名: res/drawable-xhdpi/laucn_04.png 正在签名: res/drawable-xhdpi/launch_background.png 正在签名: res/drawable-xxhdpi/ic_launcher.png 正在签名: res/layout-land/fragment_history.xml 正在签名: res/layout-land/location_history.xml 正在签名: classes.dexjar 已签名。警告: 未提供 -tsa 或 -tsacert, 此 jar 没有时间戳。如果没有时间戳, 则在签名者证书的到期日期 (2070-02-22) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。