app打包、混淆、加固和多渠道打包
1:打包步驟:
1:桌面建立一個資料夾,名字叫keystore
2:點選build下面的 ,如下:
3:會出現如下介面:
4:下一步:
5:如果有keystore,請點選 choose existing,選擇以前的keystore,同時輸入密碼和專案名字,最後點選下一步,如果沒有keystore,請選擇 create new keystore,跳轉如下介面:
上面的引數分別是:
keystore path:存放keystore的路徑,一般建議在桌面建立一個資料夾,放這個檔案,
password:密碼
confirm:重複輸入密碼
Alias:別名,唯一識別名(一般建議使用專案的名字)
Frist and last name:專案的名字
6:寫完以上資訊,點選ok,進入如下介面:
7:點選下一步,進入下一個頁面:(如果開發工具設定了密碼,會讓輸入密碼,否則跳過這不)
8:最後一步,選擇apk的存放路徑:(建議一般情況放到keystore裡面)
以上就是最簡單的打包.
程式碼混淆:
其中我們打包的時候為了防止被反編譯,需要對程式碼進行混淆;首先在Android studio裡面開啟代 碼混淆的方式很簡單,預設Android studio不開啟程式碼混淆,
其中開啟程式碼混淆的欄位為:minifyEnabled,false不開啟程式碼混淆,true開啟程式碼混淆,圖如下:
proguardFiles:後面兩個檔名字,第一個是代表系統幫我們做的混淆,第二個代表需要我們自己寫混淆規則.
混淆規則寫在:proguard-rules.pro或者proguard-rules.txt裡面
-optimizationpasses 5 # 指定程式碼的壓縮級別(混淆次數可以定義,但是一般混淆5次) -dontusemixedcaseclassnames # 是否使用大小寫混合(加上他表示使用大小寫混合) -dontpreverify # 混淆時是否做預校驗(表示混淆的時候會不會報錯) -verbose # 混淆時是否記錄日誌(加上他表示混淆的時候記錄日子) -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆時所採用的演算法(指定混淆的時候所採用的演算法) 宣告那些類不能被混淆: -keep public class * extends android.app.Activity # 保持哪些類不被混淆 -keep public class * extends android.app.Application # 保持哪些類不被混淆 -keep public class * extends android.app.Service # 保持哪些類不被混淆 -keep public class * extends android.content.BroadcastReceiver # 保持哪些類不被混淆 -keep public class * extends android.content.ContentProvider # 保持哪些類不被混淆 -keep public class * extends android.app.backup.BackupAgentHelper # 保持哪些類不被混淆 -keep public class * extends android.preference.Preference # 保持哪些類不被混淆 -keep public class com.android.vending.licensing.ILicensingService # 保持哪些類不被混淆 不能混淆的包括如下: -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>; } -keepclasseswithmembers class * { # 保持自定義控制元件類不被混淆 public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * {# 保持自定義控制元件類不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { # 保持自定義控制元件類不被混淆 public void *(android.view.View); } -keepclassmembers enum * { # 保持列舉 enum 類不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *; }
注意: shrinkResources 表示是否移除圖片資源 true表示移除,false 表示不移除
Android studio 多渠道打包:
目的:多渠道打包的目的是什麼?
多渠道打包的目的是為了統一app在各個平臺的下載量,一般整合友盟,同時會整合友盟統計.
第一步:在註冊檔案修改一下檔案:AndroidManifest.xml中修改以下值:
<meta-data android:name="UMENG_CHANNEL" android:value="wandoujia" />
修改為:
先你必須在AndroidManifest.xml中的meta-data修改以下的樣子:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定義配置的值
build.gradle檔案就利用productFlavors這樣寫:
productFlavors {
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
c360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
}
uc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
}
}
其中[UMENG_CHANNEL_VALUE: “wandoujia”]就是對應${UMENG_CHANNEL_VALUE}的值。
最新更新
後來發現上面的重複程式碼太多,就在網上又發現了一個更簡潔的寫法
productFlavors {
wandoujia {}
baidu {}
c360 {}
uc {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
其中name的值對相對應各個productFlavors的選項值,這樣就達到自動替換渠道值的目的了。
這樣生成apk時,選擇相應的Flavors來生成指定渠道的包就可以了,而且生成的apk會自動幫你加上相應渠道的字尾,非常方便和直觀。
釋出步驟:
一般情況下發布平臺包括360,豌豆莢,91助手,應用寶,騰訊手機助手
首先以360為例:
第一步:首先需要打包apk,接下來交給測試區測試.當測試測試的沒有BUG,我們就可以拿著apk去上線.
第二步:開啟360開發者中心,(http://opengame.360.cn),選擇移動平臺接入,如下:
第四步:選擇軟體釋出,如果沒有登陸,會跳轉到登陸頁面,進行登陸,或者註冊,登陸成功以後進入如下介面,點選軟體按鈕:
第五步:點選軟體按鈕,進入app釋出頁面:
(1):上傳apk
(2):上傳版權證明
(3):選擇語言
(4):選擇資費型別
(5):應用簡介
(6):上傳圖示
(7):提交稽核,立即釋出.
注意:上傳apk的時候需要進行加固,加固完以後需要進行重新簽名,簽名步驟如下:
第一步:首先從360下載到apk
第二部:將apk與keystore.jsk 放到同一個資料夾下面
第三部:啟動終端命令列,cd進去到當前資料夾:
輸入如下格式:
arsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 【你的簽名檔案】 【代簽名的apk】 【你的alias】 -storepass 【你的密碼】
程式碼如下:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keystore.jks app-release.apk TestApk -storepass 123456
注意:【你的簽名檔案】必須帶字尾,否則會報簽名失敗的錯誤.
【代簽名的apk】 使用帶字尾的全部名字
【你的alias】 打包時候指定的,一把使用專案名字
【你的密碼】 就是密碼
相關推薦
app打包、混淆、加固和多渠道打包
1:打包步驟: 1:桌面建立一個資料夾,名字叫keystore 2:點選build下面的 ,如下: 3:會出現如下介面: 4:下一步: 5:如果有keystore,請點選 choose existing,選擇以前的keystore,
騰訊樂固的加固和多渠道打包客戶端配置
1、概述 近日專案新版本上線,各大市場都正常,但是騰訊的應用寶稽核提示需要用樂固加固,因為之前一直用360加固並進行多渠道打包,但是提示如果不用樂固可能會稽核不通過,不給曝光率啥的,所以單
Apk瘦身、混淆、加固
一、 apk的組成元素: resources.arsc:編譯後的佈局檔案 assets:目錄存放一些配置檔案 lib:下的子目錄armeabi存放一些so檔案或者jar包 META-INF目錄下存放的是簽名信息,用來保證apk包的完整性和系統的安全 res:apk
關於HTML、js加密、混淆、原始碼保護、程式碼安全,防止解壓直接看原始碼
關於HTML、js加密、混淆、原始碼保護、程式碼安全,防止解壓直接看原始碼 我們先理下需求,加密的目的是什麼?加密到什麼級別?為此我們可以犧牲什麼? 我們知道這個世界不存在絕對的安全,加密會被破解、混淆會被反混淆。 技術小白、開發者、黑客,是完全不同的級別,防範不同級別的人策略都不一樣。
Python實現Android Apk 加固及多渠道打包
前言 道高一尺,魔高一丈。現如今只做混淆的apk,在smali逆向中,可以說是裸奔。鑑於此,各大佬也都針對自己的應用進行了加固處理(加固原理自找度娘),與此同時,市面上各主流平臺也都開源推出了自己的應用加固工具,比如360加固助手。 我們海豚睡眠就是採用36
SoCompressor-JS與CSS本地批量壓縮、混淆、美化、格式化GUI工具.
前一段時間在寫web時自己寫了幾個JS檔案用於前後臺展示與互動,在後來要壓縮js時發現基本都是帶命令列的壓縮工具,而且不能批量處理,線上壓縮壓縮完畢之後得一個個下,最可悲的是還需要自己重新命名檔案並且選擇下載位置,太麻煩了。後來再網上搜了一下,發現這類GUI工具確定比較少,
Tinker的整合和多渠道打包
Tinker是什麼 Tinker是微信官方的Android熱補丁解決方案,它支援動態下發程式碼、So庫以及資源,讓應用能夠在不需要重新安裝的情況下實現更新。當然,你也可以使用Tinker來更新你的外掛。 它主要包括以下幾個部分: 1.gradle編譯外掛: tinke
Android studio 多環境打包和多渠道打包
1.多環境打包 在android開發中經常遇到要打不同環境的包,所謂不同環境就是介面連線的伺服器域名不同,如開發環境為devIP,測試環境為buildIP,uat環境為uatIP,release環境為releaseIP 。以前的做法是同過一個static變
借騰訊開源 VasDolly,談談 Android 簽名和多渠道打包的原理!
一、前言 Hi,大家好,我是承香墨影! 當我們需要釋出一款 App 到應用市場的時候,一般需要我們針對不同的市場生產不同的渠道包,它們使用的是同一套程式碼,只是會包含一些各自的渠道資訊,用於我們做資料分析。 前幾天,企鵝電競團隊開源了自己的 And
as中apk簽名和多渠道打包
1.什麼是簽名: 數字簽名就是為你的程式打上一種標記,來作為你自己的標識,當別人看到簽名的時候會知道它是與你相關的 2.為什麼要簽名 防止盜版,app市場可以檢測簽名未簽名的apk無法安裝,也沒法釋出到應用市場包名相同,簽名不同的apk無法升級覆蓋 3.怎麼簽名 bu
Spring Cloud基於Docker進行打包部署1-環境配置和docker打包執行
1、使用linux虛擬機器離線安裝docker(2)將安裝包拷貝到本地linux虛擬機器中,使用dpkg -i xxx.deb命令安裝。這裡有個問題,docker有一些依賴包,需要一併安裝:下載依賴deb。網址:https://pkgs.org/搜尋:libltdl7搜尋:l
gradle打包android (實現外部導入簽名文件、多渠道打包、導入ant腳本)
gradle打包 tree clu download csdn ssp pes 基礎 net 近期一直在做android自己主動打包,之前已經完畢了用純命令行的形式打包、原生態ant腳本打包。和基於android的SDK的打包。而且實現了多渠道打包,後來同
框架基礎:ajax設計方案(六)--- 全局配置、請求格式拓展和優化、請求二進制類型、瀏覽器錯誤搜集以及npm打包發布
rri seve win 最大 regexp isempty lee 出現問題 hub 距離上一次博客大概好多好多時間了,感覺再不搞點東西出來,感覺就廢了的感覺。這段時間回老家學習駕照,修養,然後7月底來上海求職(面了4家,拿了3家office),然後入職同程旅遊,項目趕進
Linux文件壓縮和打包(gzip、bip2、xz工具)
linux常見壓縮格式Windows:.rar、.zip、.7zLinux :.zip、.gz、.bz2、.xz、.tar、.gz、.tar.bz2、.tar.xzgzip壓縮工具用來壓縮文件(常用)gzip 1.txt 壓縮 1.txt g
用命令方式啟動、停止appium服務和app
conf from 改名 設備 nor 啟動命令 服務啟動 logger man 啟動appium服務並監聽一個端口命令: 命令command==> appium -a {ip} -p {port} -U {deviceName} -g {log} 以shell命令
js壓縮、混淆和加密
頁面加載速度 lac 加載速度 註意 出錯 his cnblogs while char 最近看到有些論壇在討論js壓縮、混淆和加密的問題,特意找了些資料看了下,現在總結一下: 1.關於三者的定義與區別 壓縮:刪除 Javascript 代碼中所有註釋、跳格符號、換行符號
jar、aar、sdk打包以及app module生成 Library Module
jar、aar、sdk打包以及app module生成 Library Module module打包成jar: 1 將要打成jar包的 module 設定為 android-library模式 2 在主module中 用compile project(‘:要打成jar包的 m
pyinstaller打包程式時遇到的一系列問題:AttributeError、No module named和PyQt5
HelloDarry 關注 2018.09.06 23:47* 字數 813 閱讀 911評論 2喜歡 3 一、背景介紹 公司使用的python環境是Anconda+Python3.6,64位系統。
[Xcode10 實際操作]九、實用進階-(8)實現App的Setting設定:新增和讀取程式的配置資訊
本文將演示如何實現新增和讀取程式的配置資訊。 在專案資料夾【DemoApp】上點選滑鼠右鍵->【New File】建立一個設定束檔案 ->【Settings Bundle】設定束: 如果想要通過裝置的【設定】程式,來展示自定義的的偏好設定,必須先準備好一個設定束 ->【Next】-&
pyinstaller打包exe問題:AttributeError、setuptools、DLL和PyQt5
之前寫的一個Python程式,打包為 .exe 完全正常,這次卻報錯。還不知道如何將.py檔案轉為.exe檔案的可以檢視: 將Python程式(.py)轉換為Windows可執行檔案(.exe) 一、背景介紹 公司使用的python環境是Anconda+P