起因:
公司同時存在python2和python3的項目,經常需要切換運作,為了快速處理執行,寫一個檔案右鍵執行的python2的腳本,然後系統環境變量預設為python3
舉例:
D:\softwear\dev\APKDB\python2\main.bat,其内容為
@echo off
echo %~dp1
echo %~nx1
cd /d %~dp1
C:\Python27\python.exe %~nx1
pause
解釋:
%0表示main.bat本身,%1表示第1個參數,%2表示第2個參數,依此類推
在這裡
cd /d %~dp1的意思就是cd /d 第一個入參的路徑
~dp是變量擴充
d:既是擴充到分區号 d:
p:就是擴充到路徑 \qq
dp:就是擴充到分區号路徑 d:\qq
擴充變量文法詳解:
:: ~I - 删除任何引号("),擴充 %I
:: %~fI - 将 %I 擴充到一個完全合格的路徑名
:: %~dI - 僅将 %I 擴充到一個驅動器号
:: %~pI - 僅将 %I 擴充到一個路徑
:: %~nI - 僅将 %I 擴充到一個檔案名
:: %~xI - 僅将 %I 擴充到一個檔案擴充名
:: %~sI - 擴充的路徑隻含有短名
:: %~aI - 将 %I 擴充到檔案的檔案屬性
:: %~tI - 将 %I 擴充到檔案的日期/時間
:: %~zI - 将 %I 擴充到檔案的大小
:: %~$PATH:I - 查找列在路徑環境變量的目錄,并将 %I 擴充到找到的第一個完全合格的名稱。如果環境變量名未被定義,或者沒有找到檔案,此組合鍵會擴充到空字元串
:: 可以組合修飾符來得到多重結果:
:: %~dpI - 僅将 %I 擴充到一個驅動器号和路徑
:: %~nxI - 僅将 %I 擴充到一個檔案名和擴充名
:: %~fsI - 僅将 %I 擴充到一個帶有短名的完整路徑名
:: %~dp$PATH:i - 查找列在路徑環境變量的目錄,并将 %I 擴充
:: 到找到的第一個驅動器号和路徑。
:: %~ftzaI - 将 %I 擴充到類似輸出線路的 DIR
Android開發常用工具
1.生成keystore
@echo off
set desk=%userprofile%\desktop
set startdate=%date:~0,10% %time:~0,8%
@echo %startdate%
set /p alias=請輸入alias:
set /p keypass=請輸入keypass:
set /p storepass=請輸入storepass:
::set /p cn=請輸入名字與姓氏:
set /p ou=請輸入機關名稱:
::set /p o=請輸入組織名稱:
::set /p l=請輸入城市或區域名稱:
::set /p st=請輸入省份名稱:
::set /p c=請輸入國家名稱:
set keystore=%desk%\%alias%.keystore
keytool -genkeypair -alias %alias% -keyalg RSA -keysize 4096 -sigalg SHA256withRSA -dname "ou=%ou%" -keypass %keypass% -startdate "%startdate%" -validity 9125 -storepass %storepass% -keystore %keystore%
@echo 輸出路徑:%keystore%
pause;
::選項細分:
::-alias– 封裝在密鑰庫中的條目的别名。選擇的值應該增強密鑰庫條目的可讀性,尤其是當密鑰庫包含多個條目時。
::-keyalg– 用于生成密鑰對的算法。支援的算法包括 RSA、DSA 和 EC。
::-keysize– 密鑰大小(以位為機關)。美國國家标準與技術研究院 ( NIST)建議密鑰大小至少為 3072 位,如果密鑰将在?? 2030 年之後使用,但許多使用者已采用 4096。
::-sigalg- 該值通常來自私鑰的算法,但為了清楚起見,可以指定。支援的簽名算法包括 SHA1withDSA、SHA256withRSA 和 SHA256withECDSA。
::-dname – 這是專有名稱,也稱為證書的主題。
:: CN(Common Name名字與姓氏)
:: OU(Organization Unit組織機關名稱)
:: O(Organization組織名稱)
:: L(Locality城市或區域名稱)
:: ST(State州或省份名稱)
:: C(Country國家名稱)
::-keypass– 用于加密和解密私鑰的密碼。這應該與-storepass. 它可以不同,但??如果密碼不同,您可能會在應用程式讀取密鑰庫和密鑰時遇到麻煩。該值不必指定,如果沒有,系統會提示您輸入密碼。建議這樣做,這樣密碼就不會出現在您的曆史記錄中。
::-startdate– 生成的證書的 not_before 值。可以分兩部分指定,日期和時間。如果兩個部分都指定,則必須用引号括起來。
::-validity– 以天為機關的有效期。該值将根據 not_before 值計算 not_after 值。
::-storetype– 推薦的密鑰庫類型包括 PKCS12 和 JKS。
::-storepass– 用于加密和解密密鑰庫的密碼。這應該與-keypass存儲在密鑰庫中的 on 密鑰相同。該值不必指定,如果沒有,系統會提示您輸入密碼。建議這樣做,這樣密碼就不會出現在您的曆史記錄中。
::-keystore– 要生成的密鑰庫的檔案名。
::檢視秘鑰庫條目
::keytool -list -v -keystore C:\Android\keystore\wedobest.keystore -alias wedobest
::列印證書内容
::keytool -printcert -v -file C:\Android\keystore\wedobest.keystore
2. 安裝APK
@echo off
::讀取輸入拖入APK的路徑
SET input_path=%1
echo 開始安裝:%input_path%
::開始安裝
adb install -r -t %input_path%
pause
::-l 鎖定該應用程式
::-r 替換已存在的應用程式,也就是說強制安裝
::-t 允許測試包
::-s 把應用程式安裝到sd卡上
::-d 允許進行将見狀,也就是安裝的比手機上帶的版本低
::-g 為應用程式授予所有運作時的權限
3. aab轉apks
@echo off
::設定bundletools的路徑
SET bundle_tools_path="E:\\android_build\bundletool.jar"
::SET bundle_tools_path=bundletool.jar
::aab路徑
SET input_path=%1
echo 原始路徑:%input_path%
SET out_put1=%input_path%
SET out_put2=%out_put1:aab"=apks%
SET out_put3=%out_put2:"=%
::echo 輸出路徑2:%out_put2%
::echo 輸出路徑3:%out_put3%
::開始執行
java -jar %bundle_tools_path% build-apks --bundle=%input_path% --output=%out_put3%
echo 執行完成,輸出路徑:%out_put3%
pause
4. 安裝apks
@echo off
::設定bundletools的路徑
SET bundle_tools_path="E:SVN\pdragon\android_build\AndroidBuildTools\extra\gradle_build_setting\bundletool.jar"
::SET bundle_tools_path=bundletool.jar
::讀取輸入拖入APKS的路徑
SET input_path=%1
echo 開始安裝:%input_path%
::開始安裝
java -jar %bundle_tools_path% install-apks --apks=%input_path%
java -jar %bundle_tools_path% install-apks --apks=%input_path%
pause
exit