android打包腳本
❶ 使用cmake/make打包Android 動態庫
打包需要使用cmake是AndroidSdk目錄下的
${ANDROID_HOME}/cmake/3.6.4111459/bin/cmake
參數:
-H
-B
-DANDROID_NDK
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY
-DCMAKE_MAKE_PROGRAM
-DCMAKE_TOOLCHAIN_FILE
-DANDROID_ABI
-DCMAKE_BUILD_TYPE
-DANDROID_NATIVE_API_LEVEL 最低支持的Api版本
-DANDROID_TOOLCHAIN
-DCMAKE_GENERATOR
打包所有abi的腳本例子:
❷ android 多渠道打包與自定義包文件名
我們在打包輸出的時候希望我們的包文件名是自定義的,例如是包名版本號+渠道名+打包日期+.apk。現在我們就以此為例,來寫一個gradle自定義包文件腳本。
❸ Android怎麼把一個現有工程打包成sdk
方法一
使用eclipse導出jar包:我們知道一個java項目是可以用eclipse導出jar包的,安卓工程也一樣,只要按普通的方法export就可以了。不過,export出來的包是沒有混淆過的,如果你要混淆,還需要單獨對你的jar包執行一次proguard程序,可參考proguard使用指南。
方法二
使用腳本打包:我個人比較喜歡該方法,因為android工程項目並不是只有JAVA代碼,有的資源也需要提供出來,而使腳本可以更加定製化一些。
android的SDK默認提供了一個ant打包的腳本,具體使用方法,可參考之前的BLOG,使用ant打包APK及依賴包最佳解決辦法
我們可以看出,打包,最終調用的其實是android sdk下的ant腳本,既然安卓已經幫我們寫好了ant腳本,我們就好好利用。
使用上面的BLOG中介紹的方法,先在工程目錄中生成你的build.xml,然後自己寫一個target
<target name="sdk"
depends="-set-release-mode, -release-obfuscation-check, -compile, -post-compile, -obfuscate">
</target>
這段target代碼,就是只執行到了混淆的腳本。然後我們在build.xml中選擇右鍵,run as, 第二個ant Build,然後選擇要執行的target為我們加上的sdk。
等執行完成後,就會在project/bin/proguard/obfuscated.jar找到你所要的jar包。
❹ 如何使用python寫一個android打包apk的腳本
右鍵點擊項目,彈出菜單。
滑鼠移動到run
as
選項上,彈出子菜單。然後單擊Android
application。他就會打包成apk了。
點擊項目中bin目錄前面的加號展開,就可以看到對應的apk了,然後右鍵該apk選擇,再到某個目錄點擊粘貼就可以復制出來了。
❺ 創造 | 一個強大的 Android 自動化打包腳本
該腳本是我在獨立開發過程中,為了提升 Android 應用打包和運營的效率而開發的腳本。項目地址是,
https://github.com/Shouheng88/autopackage
如項目中的語言構成展示的,該腳本完全使用 Python 語言開發完成。
使用起來非常簡單,首先你要准備如下的環境,
然後,通過編輯配置文件 config.yml 對腳本進行配置。比如,
YAML 格式也不算新穎,早在幾年之前的 SpringBoot 裡面就已經採用了這種格式。相比於使用 json 或者 properties 等格式的配置文件,它更加簡潔。
1、使用 gradle 指令自動打包,區分 32 位和 64 位 :因為現在有些應用市場明確要求區分 32 位和 64 位,所以,打包的時候要分開進行打包。
2、打包完成之後將 APK 拷貝到指定的目錄 :主要用來做本地的 APK 文件備份,後面也會用這里拷貝的 APK 文件進行自動化加固。
3、使用 diffuse 輸出相對於上一個版本的 APK 版本差異報告 :diffuse 是 JakeWharton 開發的 APK, AAB, AAR 和 JAR 的對比工具。這里我用它對比當前版本和上一個版本的 APK 的信息,以實現對 APK 質量的監控。diffuse 項目的地址是 https://github.com/JakeWharton/diffuse
3、拷貝多語言資源到指定的目錄,並自動提交到 Github 倉庫以便於協助翻譯 :對做國際化的應用的開發者而言,我們可以通過應用內的協助翻譯功能藉助社區的力量實現應用的多語言。這里我盡量將這個過程做得更加自動化。即在應用打包完成之後將應用內的多語言資源按照版本信息拷貝到指定的目錄下。然後使用 Git 工具將其推送到 Github 等。具體的效果可以參考 https://github.com/Shouheng88/LeafNote-Community .
4、自動打 tag 並提交到遠程倉庫 :該功能用來在打包完成之後使用為當前版本添加 Git tag,以便於後續根據版本回滾到指定的 Git 提交記錄。
5、根據 Git 提交記錄自動生成更新日誌 :上面做了為項目自動添加 Git tag 的功能之後,我們可以根據當前版本到上一版本之間的 Git 提交記錄的 comment 信息自動生成版本更新日誌。雖然,這個這樣生成的更新日誌並不能直接用作發布時的更新記錄,但在至少可以讓我們直觀得看到這個版本修改了什麼。
6、使用 360 加固 對上述 APK 進行加固並輸出到指定的目錄 :加固操作其實非常簡單,只需要一個 command 指令就可以完成了,
不過在使用上述命令之前需要先通過 GUI 的形式修改你在 360 加固中的渠道和簽名信息(直接手動改文件也可以)。
7、上傳打包 APK 到藍奏雲 :藍奏雲是現在很多開發者用來分享軟體的一個雲存儲平台,100M 以下的文件可以免費存儲,類似於網路雲。上傳藍奏雲之前需要先修改配置文件,
這里需要填入的 ylogin 和 phpdisk_info 可以在登錄之後通過 Chrome 的開發工具查看 cookie 信息得到。目前能夠做到自動化的一個方案就是使用上述兩個信息。
8、通過 Telegram bot 將打包完成的渠道包和更新日誌信息發送到 Telegram 群組 :對海外的用戶我們可以通過 Telegram 作為一個交流的渠道。Telegram 是一個非常好用的聊天軟體。它提供了 bot 功能,即一個可以推送消息的機器人。我們可以通過這個功能來在群組中推送消息、圖片和文件。Telegram 的 bot 有非常強大的自定義性。其實我們完全可以基於爬蟲和 bot 維護一個社區,然後通過在社區內推送廣告來獲得一些利益。這也不失為一個賺錢的渠道。使用 Telegram bot 之前需要在配置文件中填入如下信息,
這里的 token 是注冊 bot 的時候得到的信息。chat_id 可以通過如下方式獲取到:
即將 token 信息填入到上述 <YourBOTToken> 處。在返回的 json 結果中可以獲取到 chat id 信息。
向群組推送信息的方式非常簡單,一個 http 請求即可完成,
更多的協議可以參考這個文檔: https://core.telegram.org/bots/api#senddocument
9、完成上述操作之後使用郵件通知打包結果 :最後就是在完成了最終的打包操作之後通過 Email 發送一封郵件,內部包含了本次打包的 diff 信息等給指定的用戶。使用郵件功能需要在配置文件中填寫,
這里我們使用的是 QQ 郵箱來發送郵件。這里需要填寫的 user 和 password 欄位分別是郵箱和開通 smtp 服務時系統提供的密碼信息。QQ 郵箱開通 SMTP 伺服器其 官方文檔 即可。
上述是該打包腳本的主要功能。後續我會添加更多功能。因為時間有限,有些功能需要修改一下才能使用。不過,許多功能我都封裝成了獨立的 Python 腳本,如果需要的話可以自己做細微的修改。對於這個腳本,如果你有更好的建議和想法,可以跟我交流~
❻ 用AndroidStudio打包生成release app
步驟不贅述
步驟如下:
打開項目結構面板,可點擊 File–>Project Structure ,也可點擊工具欄對應的圖標,都可以打開
打開後,選擇對應的mole,選擇signing,將對應簽名文件的信息填寫進去,name可以隨意填寫,但是會在當前mole中的build.gradle中體現:
此時,會在你的mole的腳本中生成腳本信息
注意,這里的 release 就是在 Project Structure 中填寫的名字
現在還不夠,只會生成unsigned的release版本
在構建類型中加入簽名的信息就能生成release版本了
或者 Project Structure 中設置:
配置完後,發現和之前直接添加 signingConfig signingConfigs.release 效果一樣
❼ 新一代Android渠道打包工具:1000個渠道包只需要5秒
♥♥♥ 原文轉自 極分享 更多詳情及更新 查看原文 ♥♥♥
最新版本
v1.0.4 - 2016.01.19 - 完善獲取APK路徑的方法,增加MarketInfo
v1.0.3 - 2016.01.14 - 增加緩存,新增ResUtils,更有好的錯誤提示
v1.0.2 - 2015.12.04 - 兼容proctFlavors,完善異常處理
v1.0.1 - 2015.12.01 - 如果沒有讀取到渠道,默認返回空字元串
v1.0.0 - 2015.11.30 - 增加Java和Python打包腳本,增加文檔
v0.9.9 - 2015.11.26 - 測試版發布,支持全新的極速打包方式
源碼:https://github.com/mcxiaoke/packer-ng-plugin
項目介紹
packer-ng-plugin 是下一代Android渠道打包工具Gradle插件,支持極速打包,1000個渠道包只需要5秒鍾,速度是 gradle-packer-plugin 的1000倍以上,可方便的用於CI系統集成,支持自定義輸出目錄和最終APK文件名,依賴包:com.mcxiaoke.gradle:packer-ng:1.0.+ 簡短名:packer,可以在項目的 build.gradle 中指定使用,還提供了命令行獨立使用的Java和Python腳本。實現原理見本文末尾。
使用指南
Maven Central
.
.
.
.
.
實現原理
PackerNg原理
優點
使用APK注釋欄位保存渠道信息和MAGIC位元組,從文件末尾讀取渠道信息,速度快
實現為一個Gradle Plugin,支持定製輸出APK的文件名等信息,方便CI集成
提供Java版和Python的獨立命令行腳本,不依賴Gradle插件,支持獨立使用
由於打包速度極快,單個包只需要5毫秒左右,可用於網站後台動態生成渠道包
缺點
沒有使用Android的proctFlavors,無法利用flavors條件編譯的功能
文件格式
Android應用使用的APK文件就是一個帶簽名信息的ZIP文件,根據 ZIP文件格式規范,每個ZIP文件的最後都必須有一個叫Central Directory Record 的部分,這個CDR的最後部分叫"end of central directory record",這一部分包含一些元數據,它的末尾是ZIP文件的注釋。注釋包含Comment Length和File Comment兩個欄位,前者表示注釋內容的長度,後者是注釋的內容,正確修改這一部分不會對ZIP文件造成破壞,利用這個欄位,我們可以添加一些自定義的數據,PackerNg項目就是在這里添加和讀取渠道信息。
細節處理
原理很簡單,就是將渠道信息存放在APK文件的注釋欄位中,但是實現起來遇到不少坑,測試了好多次。
同類工具
gradle-packer-plugin - 舊版渠道打包工具,完全使用Gradle系統實現,能利用Android提供的proctFlavors系統的條件編譯功能,無任何兼容性問題,方便集成,但是由於每次都要重新打包,速度比較慢,不適合需要大量打包的情況。(性能:200個渠道包需要一到兩小時)
Meituan-MultiChannelTool - 使用美團方案的實現,在APK文件的META-INF目里增加渠道文件,打包速度也非常快,但讀取時需要遍歷APK文件的數據項,比較慢,而且以後可能遇到兼容性問題
MultiChannelPackageTool - 將渠道寫入APK文件的注釋,這個項目沒有提供Gradle插件,只有命令行工具,不方便CI集成,使用ZIP文件注釋的思路就是來自此項目
轉自 極分享 閱讀原文
❽ ANDROID多渠道快速打包實踐
參考資料:
美團Android自動化之旅—生成渠道包
Android批量打包提速
AndroidMultiChannelBuildTool
背景
隨著發版需要,每次發版所需渠道包越來越多(現在差不多有一百個左右了),正常gradle打包由於耗時效率過低已無法滿足需求,開始了android多渠道快速打包實踐。
方法
下面主要介紹兩種快速打包的方式:
1、類似美團的方式,在META-INF中寫入渠道名的空文件,用於讀取空文件。 美團Android自動化之旅—生成渠道包
2、在apk末尾動態寫入渠道信息。 一種動態為apk寫入信息的方案
其實這兩種方式都是同一個原理,替換以前從manifest中讀取渠道號的方式,而使用新的獲取方式(渠道號如何寫入就如何讀取)。
所以這首先需要客戶端(重要!):
1、統一應用中獲取渠道的方式並替換之前的(最好兼容)。
2、注意第三方SDK渠道號的傳入,比如友盟sdk,否則第三方會使用默認從manifest中讀取的方式。
下面介紹一種已經測試過的方法(git上開源項目 AndroidMultiChannelBuildTool )
1、安裝環境由於腳本環境是使用python語言,所以需要我們 安裝環境 。
2、導入項目導入開源項目 AndroidMultiChannelBuildTool ),並把想要批量打包的apk文件拷貝到PythonTool目錄下(與py同級),運行py腳本即可打包完成。
以上基本實現快速打包,經過測試一分鍾百十個無壓力。另外需要注意這種方式只適用於打包需求一致渠道號不同,不適用特殊定製渠道。
備註:9月21日補充快速打包java版本,詳見 AndroidMultiChannelBuildTool-Java-master