Advertisement
Guest User

Script.sh

a guest
Sep 22nd, 2010
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.72 KB | None | 0 0
  1. #! /bin/sh
  2. # Apk Manager 4.0 (C) 2010 by Daneshm90
  3. # Ported to Linux by farmatito 2010
  4. # Changelog for linux version:
  5. # v 0.1 Initial version
  6. # v 0.2 added "other" dir to PATH
  7. # v 0.3 removed "function" bashism
  8. # v 0.4 removed more bashisms
  9. # v 0.5 added ogg batch optimization and quoted some vars
  10.  
  11. ap () {
  12. echo "Where do you want adb to pull the apk from? "
  13. echo "Example of input : /system/app/launcher.apk"
  14. read INPUT
  15. APK_FILE=`basename $INPUT`
  16. adb pull "$INPUT" "place-apk-here-for-modding/$APK_FILE"
  17. if [ "$?" -ne "0" ] ; then
  18. echo "Error: while pulling $APK_FILE"
  19. fi
  20. }
  21.  
  22. ex () {
  23. cd other
  24. rm -f "../place-apk-here-for-modding/repackaged.apk"
  25. rm -f "../place-apk-here-for-modding/repackaged-signed.apk"
  26. rm -f "../place-apk-here-for-modding/repackaged-unsigned.apk"
  27. rm -rf "../out"
  28. if [ ! -d "../out" ] ; then
  29. mkdir "../out"
  30. fi
  31. clear
  32. # Must be -o"../out" and not -o "../out"
  33. 7za x -o"../out" ../place-apk-here-for-modding/*.apk
  34. cd ..
  35. }
  36.  
  37. opt () {
  38. cd other
  39. find "../out/res" -name *.png | while read PNG_FILE ;
  40. do
  41. if [ `echo "$PNG_FILE" | grep -c "\.9\.png$"` -eq 0 ] ; then
  42. optipng -o99 "$PNG_FILE"
  43. fi
  44. done
  45. cd ..
  46. }
  47.  
  48. sys () {
  49. cd other
  50. 7za a -tzip "../place-apk-here-for-modding/repackaged-unsigned.apk" ../out/* -mx9
  51. cd ..
  52. }
  53.  
  54. oa () {
  55. rm -rf "out/META-INF"
  56. sys
  57. }
  58.  
  59. zip () {
  60. clear
  61. echo "1 System apk "
  62. echo "2 Regular apk "
  63. printf "%s" "Please make your decision: "
  64. read RETVAL
  65. if [ "x$RETVAL" = "x1" ] ; then
  66. sys
  67. elif [ "x$RETVAL" = "x2" ] ; then
  68. oa
  69. fi
  70. }
  71.  
  72. si () {
  73. cd other
  74. INFILE="../place-apk-here-for-modding/repackaged-unsigned.apk"
  75. OUTFILE="../place-apk-here-for-modding/repackaged-signed.apk"
  76. if [ -e "$INFILE" ] ; then
  77. java -jar signapk.jar -w testkey.x509.pem testkey.pk8 "$INFILE" "$OUTFILE"
  78. if [ "x$?" = "x0" ] ; then
  79. rm "$INFILE"
  80. echo
  81. fi
  82. else
  83. echo "Warning: cannot find file '$INFILE'"
  84. fi
  85. cd ..
  86. }
  87.  
  88. zipa () {
  89. for STRING in "signed" "unsigned"
  90. do
  91. if [ -e "place-apk-here-for-modding/repackaged-$STRING.apk" ] ; then
  92. zipalign -fv 4 "place-apk-here-for-modding/repackaged-$STRING.apk" "place-apk-here-for-modding/repackaged-$STRING-aligned.apk"
  93. if [ "x$?" = "x0" ] ; then
  94. mv -f "place-apk-here-for-modding/repackaged-$STRING-aligned.apk" "place-apk-here-for-modding/repackaged-$STRING.apk"
  95. fi
  96. else
  97. echo "zipalign: cannot find file 'place-apk-here-for-modding/repackaged-$STRING.apk'"
  98. fi
  99. done
  100. }
  101.  
  102. ins () {
  103. sudo adb devices
  104. printf "%s" "Hit Enter to continue "
  105. read DUMMY
  106. adb install -r "place-apk-here-for-modding/repackaged-signed.apk"
  107. }
  108.  
  109. alli () {
  110. clear
  111. echo "1 System apk "
  112. echo "2 Regular apk "
  113. printf "%s" "Please make your decision: "
  114. read RETVAL
  115. if [ "x$RETVAL" = "x1" ] ; then
  116. sys
  117. si
  118. ins
  119. elif [ "x$RETVAL" = "x2" ] ; then
  120. oa
  121. si
  122. ins
  123. fi
  124. }
  125.  
  126. apu () {
  127. echo "Where do you want adb to push to and as what name: "
  128. echo "Example of input : /system/app/launcher.apk "
  129. read INPUT
  130. sudo adb devices
  131. printf "%s" "Hit Enter to continue "
  132. read DUMMY
  133. adb remount
  134. adb push "place-apk-here-for-modding/repackaged-unsigned.apk" "$INPUT"
  135. }
  136.  
  137. de () {
  138. cd other
  139. rm -f "../place-apk-here-for-modding/repackaged.apk"
  140. rm -f "../place-apk-here-for-modding/repackaged-signed.apk"
  141. rm -f "../place-apk-here-for-modding/repackaged-unsigned.apk"
  142. rm -rf "../out"
  143. rm -rf "out.out"
  144. clear
  145. java -jar apktool.jar d ../place-apk-here-for-modding/*.apk "../out"
  146. cd ..
  147. }
  148.  
  149. co () {
  150. cd other
  151. java -jar apktool.jar b "../out" "../place-apk-here-for-modding/repackaged-unsigned.apk"
  152. cd ..
  153. }
  154.  
  155. all () {
  156. co
  157. si
  158. ins
  159. }
  160.  
  161. bopt () {
  162. cd other
  163. mkdir -p "../place-apk-here-to-batch-optimize/original"
  164. find "../place-apk-here-to-batch-optimize" -name *.apk | while read APK_FILE ;
  165. do
  166. echo "Optimizing $APK_FILE"
  167. # Extract
  168. 7za x -o"../place-apk-here-to-batch-optimize/original" "../place-apk-here-to-batch-optimize/$APK_FILE"
  169. # PNG
  170. find "../place-apk-here-to-batch-optimize/original" -name *.png | while read PNG_FILE ;
  171. do
  172. if [ `echo "$PNG_FILE" | grep -c "\.9\.png$"` -eq 0 ] ; then
  173. optipng -o99 "$PNG_FILE"
  174. fi
  175. done
  176. # TODO optimize .ogg files
  177. # Re-compress
  178. 7za a -tzip "../place-apk-here-to-batch-optimize/temp.zip" ../place-apk-here-to-batch-optimize/original/* -mx9
  179. FILE=`basename "$APK_FILE"`
  180. DIR=`dirname "$APK_FILE"`
  181. mv -f "../place-apk-here-to-batch-optimize/temp.zip" "$DIR/optimized-$FILE"
  182. rm -rf ../place-apk-here-to-batch-optimize/original/*
  183. done
  184. rm -rf "../place-apk-here-to-batch-optimize/original"
  185. cd ..
  186. }
  187.  
  188. asi () {
  189. cd other
  190. rm -f "../place-apk-here-for-signing/signed.apk"
  191. java -jar signapk.jar -w testkey.x509.pem testkey.pk8 ../place-apk-here-for-signing/*.apk "../place-apk-here-for-signing/signed.apk"
  192. #clear
  193. cd ..
  194. }
  195.  
  196. ogg () {
  197. cd other
  198. find "../place-ogg-here/" -name *.ogg | while read OGG_FILE ;
  199. do
  200. FILE=`basename "$OGG_FILE"`
  201. DIR=`dirname "$OGG_FILE"`
  202. printf "%s" "Optimizing: $FILE"
  203. sox "$OGG_FILE" -C 0 "$DIR/optimized-$FILE"
  204. if [ "x$?" = "x0" ] ; then
  205. printf "\n"
  206. else
  207. printf "...%s\n" "Failed"
  208. fi
  209. done
  210. }
  211.  
  212. quit () {
  213. exit 0
  214. }
  215.  
  216. restart () {
  217. echo
  218. echo "****************************** Apk Manager *******************************"
  219. echo "------------------Simple Tasks Such As Image Editing----------------------"
  220. echo " 0 Adb pull"
  221. echo " 1 Extract apk"
  222. echo " 2 Optimize images inside (Only if \"Extract Apk\" was selected)"
  223. echo " 3 Zip apk"
  224. e " 4 Sign apk (Dont do this if its a system apk)"
  225. echo " 5 Zipalign apk (Do once apk is created/signed)"
  226. echo " 6 Install apk (Dont do this if system apk, do adb push)"
  227. echo " 7 Zip / Sign / Install apk (All in one step)"
  228. echo " 8 Adb push (Only for system apk)"
  229. echo "-----------------Advanced Tasks Such As Code Editing-----------------------"
  230. echo " 9 Decompile apk"
  231. echo " 10 Compile apk"
  232. echo " 11 Sign apk"
  233. echo " 12 Install apk"
  234. echo " 13 Compile apk / Sign apk / Install apk (All in one step)"
  235. echo "---------------------------------------------------------------------------"
  236. echo " 14 Batch Optimize Apk (inside place-apk-here-to-batch-optimize only)"
  237. echo " 15 Sign an apk (inside place-apk-here-for-signing folder only)"
  238. echo " 16 Batch optimize ogg files (inside place-ogg-here only)"
  239. echo " 17 Quit"
  240. echo "****************************************************************************"
  241. echo
  242. printf "%s" "Please make your decision: "
  243. read ANSWER
  244.  
  245. case "$ANSWER" in
  246. 0) ap ;;
  247. 1) ex ;;
  248. 2) opt ;;
  249. 3) zip ;;
  250. 4) si ;;
  251. 5) zipa ;;
  252. 6) ins ;;
  253. 7) alli ;;
  254. 8) apu ;;
  255. 9) de ;;
  256. 10) co ;;
  257. 11) si ;;
  258. 12) ins ;;
  259. 13) all ;;
  260. 14) bopt ;;
  261. 15) asi ;;
  262. 16) ogg ;;
  263. 17) quit ;;
  264. *)
  265. echo "Unknown command: '$ANSWER'"
  266. ;;
  267. esac
  268. }
  269.  
  270. # Start
  271. PATH="$PATH:$PWD/other"
  272. export PATH
  273. #echo $PATH
  274. # Test for needed programs and warn if missing
  275. ERROR="0"
  276. for PROGRAM in "optipng" "7za" "java" "sudo" "adb" "aapt" "sox"
  277. do
  278. which "$PROGRAM" > /dev/null
  279. if [ "x$?" = "x1" ] ; then
  280. ERROR="1"
  281. echo "The program $PROGRAM is missing or is not in your PATH,"
  282. echo "please install it or fix your PATH variable"
  283. fi
  284. done
  285. if [ "x$ERROR" = "x1" ] ; then
  286. exit 1
  287. fi
  288.  
  289. clear
  290. printf "%s" "Do you want to clean out all your current projects (y/N)? "
  291. read INPUT
  292. if [ "x$INPUT" = "xy" ] || [ "x$INPUT" = "xY" ] ; then
  293. rm -rf place-apk-here-for-modding
  294. rm -rf place-apk-here-for-signing
  295. rm -rf place-apk-here-to-batch-optimize
  296. rm -rf out
  297. rm -rf $HOME/apktool
  298. mkdir place-apk-here-for-modding
  299. mkdir place-apk-here-for-signing
  300. mkdir place-apk-here-to-batch-optimize
  301. fi
  302. while [ "1" = "1" ] ;
  303. do
  304. restart
  305. done
  306. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement