[UTILITY][10-8-2012] APK Manager for Mac OS X, Intel only, v3.0

Search This thread

s0niqu3

Senior Member
Feb 23, 2005
718
391
Looks great. I will figure out Homebrew in anticipation...

Thanks everyone for the comments :)

For homebrew, its really very easy, but you need Xcode. Well, technically you only need the Xcode Command Line Tools, freely available from developer.apple.com (~170mb download) but most people will probably just choose to grab Xcode from the Mac App Store.

QcYdi.jpg


If you just want to grab the CLI tools dmg/installer from the dev site, then its this item you want:

f5n7v.jpg


And of course, even if you don't use homebrew, but you still want to use the automatic updates, you can just install git, and use the precompiled programs option during the initial setup/install.

Hopefully I'll get this online for people to start using (breaking?) in the next day or two.

Cheers everyone :)
 
  • Like
Reactions: dSlice

ArmanUV

Senior Member
Jan 26, 2012
839
220
OP updated with v3.0 beta information and link to the project on github.

Thanks in advance anyone that helps test :)

this looks great. Some feedback about the setup proccess:
1.The app wouldn't run at first. Turned out the appmanager.scpt is missing a slash:
Code:
do script "if [ $(command -v apkm) ]; then apkm; else \"" & mainDir & "[COLOR="Red"]/[/COLOR]other/main.sh\"; fi; exit" in newTab
		on error
2.In the homebrew process, it tried to install 7za as a prerequisite(?), but failed since 7za is not a valid package name. The correct package name is p7zip I believe. I installed it manually and ran the script again and got this: http://d.pr/n/tliF . I "brew install"ed libogg and everything else and it compiled fine.
 
Last edited:
  • Like
Reactions: s0niqu3

s0niqu3

Senior Member
Feb 23, 2005
718
391
this looks great. Some feedback about the setup proccess:
1.The app wouldn't run at first. Turned out the appmanager.scpt is missing a slash:
Code:
do script "if [ $(command -v apkm) ]; then apkm; else \"" & mainDir & "[COLOR="Red"]/[/COLOR]other/main.sh\"; fi; exit" in newTab
		on error
2.In the homebrew process, it tried to install 7za as a prerequisite(?), but failed since 7za is not a valid package name. The correct package name is p7zip I believe. I installed it manually and ran the script again and got this: http://d.pr/n/tliF . I "brew install"ed libogg and everything else and it compiled fine.

Hi,

So the 7za error I thought I had accounted for in the install script, but like usual, I was retarded. Basically I just iterate through a list of programs, $p, and store any that aren't found in an array, $missing[*] and you can see, I try to capture for when the program not found is 7za, and store the correct package name, p7zip, into the array.
Code:
elif [[ $p = 7za ]]; then
    $p="p7zip"
    missing[$count]="$p"
And yeah, I'm retarded, you probably see the error there, lol. Fixed, will push an update to github in a minute

The libogg thing is new, simply using:
Code:
brew install sox
inside my install script worked fine when I wrote it, but it definitely failing now. It does seem to work fine if I open a new terminal tab and install libogg first, so I'll just have to figure out a way to handle that.

And thanks for pointing out the missing slash

That's a remnant of changing how I was storing the path data, originally the path was being stored with its trailing slash and when I changed that I forgot to fix that line.

EDIT: fix for the missing slash in APKManager.app is on github now. If you launch ./other/main.sh manually and force an update check, you'll get the fix, otherwise, cd into apkmanager directory and do:
Code:
git pull origin refs/heads/master:refs/remotes/origin/master
Cheers :)
 
Last edited:

s0niqu3

Senior Member
Feb 23, 2005
718
391
Another quick update, I think I've solved/fixed the sox install error, well, at least for now.

I'm just calling my newttab script to run:
Code:
brew install sox
in a new terminal tab, and I've tried it 5 or 6 times now, and its worked every time, so I think its ok for now. Ideally, the homebrew formula(s) should be fixed to enable automation, but for now I think this will do.

I also fixed the 7za/p7zip derp on my part.

Anyway, its up on github on a new branch 'develop' if you want to test it out before I merge it into master.

You'll need to do a few things though:
  1. force an update check from within apkm [options: 24, 8, 7] then you should be able to switch branches from the autoupdates menu to 'develop'
  2. uninstall sox and all its dependencies:
    Code:
    brew remove sox libogg libvorbis lame flac mad libao libsndfile
  3. manually 'reset' the installation status of apkmanager
    Code:
    defaults delete com.girlintroverted.apkmanager install
  4. launch APKManager again and run through the install process. (the installation should error after installing sox with "This command requires a formula argument" I fixed that locally, but haven't pushed it to github yet.) Just run APKManager again and it should be fine.
Thanks to anyone that helps test this!

EDIT: pushed the last little fixes to 'develop' on github, if anyone can test and let me know how it works for them, I'll go ahead and merge it into master.

Cheers :)
 
Last edited:

s0niqu3

Senior Member
Feb 23, 2005
718
391
Just a note, I've pushed a few small fixes to github over the weekend, and added the 'develop' branch for anyone that wants to test it. You might need to 'force' an update check to make the new branch show up. I'm working an a fix for that in the future, so that new branches will always show up automatically.

There's nothing really 'new' in the develop branch at the moment, except that some of my internal debugging code that's broken on master is now functional.

Like always, thanks in advance to anyone that tests this.

Cheers :)
 

ArmanUV

Senior Member
Jan 26, 2012
839
220
Hi,

So the 7za error I thought I had accounted for in the install script, but like usual, I was retarded. Basically I just iterate through a list of programs, $p, and store any that aren't found in an array, $missing[*] and you can see, I try to capture for when the program not found is 7za, and store the correct package name, p7zip, into the array.
Code:
elif [[ $p = 7za ]]; then
    $p="p7zip"
    missing[$count]="$p"
And yeah, I'm retarded, you probably see the error there, lol. Fixed, will push an update to github in a minute

The libogg thing is new, simply using:
Code:
brew install sox
inside my install script worked fine when I wrote it, but it definitely failing now. It does seem to work fine if I open a new terminal tab and install libogg first, so I'll just have to figure out a way to handle that.

And thanks for pointing out the missing slash

That's a remnant of changing how I was storing the path data, originally the path was being stored with its trailing slash and when I changed that I forgot to fix that line.

EDIT: fix for the missing slash in APKManager.app is on github now. If you launch ./other/main.sh manually and force an update check, you'll get the fix, otherwise, cd into apkmanager directory and do:
Code:
git pull origin refs/heads/master:refs/remotes/origin/master
Cheers :)

thanks for the fixes :)
 

s0niqu3

Senior Member
Feb 23, 2005
718
391
Pushed a handful of small fixes/changes to github. First, APKManager should only alert you if ANDROID_SDK_ROOT is unset once, and never again (unless you trash your preferences file) and second, APKManager should now work even if the path to its folder has spaces in it (I hope it does at least, its hard to test all possible scenarios of this.)

Cheers :)
 
  • Like
Reactions: ArmanUV

s0niqu3

Senior Member
Feb 23, 2005
718
391
Pushed some new fixes to github to patch dex2jar when installing for the 'spaces in path' problems. If you've already downloaded and installed dex2jar from inside apkmanager, please delete the apkmanager/other/dex2jar folder, and install it again.

Cheers :)
 
  • Like
Reactions: ArmanUV

chaostic_2k1

Senior Member
Sep 14, 2009
166
21
I fixed that myself on the 2.2.5 download by changing the dex2jar.sh file to have quotations around $@ (so "$@").
 

s0niqu3

Senior Member
Feb 23, 2005
718
391
Any progress on this lately?

Hi,

Sorry, no, I'm not really spending much time on this anymore. And it's mostly because I ran out of ideas, and feedback has been minimal except in cases of glaring bugs. Basically, it seems to work fine now, and pushing updates just for apktool.jar updates might become the norm, but I don't know, I don't really bother to hack android myself anymore.

If you find any huge/glaring/gamebreaking bugs please let me know and I'll try to fix them at the very least.

Cheers :)
 

s0niqu3

Senior Member
Feb 23, 2005
718
391
Pushed a handful of updates to github over the past few days, of note:

  • fixed a couple bugs that were introduced with some changes to homebrew and pngcrush
  • updated smali.jar and baksmali.jar to version 1.4.0
  • fixed a few various typos
  • updated the built-in pngout downloader to download the newest version (May 30, 2012)
  • changed the "view changelog" option on the debug menu to use "git log" if you used homebrew & git to install
  • added the ability to forcibly reset the "home" directory by holding the command/apple key when launching APKManager.app
  • removed all the little "b/beta" tags I could find since this seems good enough for a "real" 3.0 release finally
 

yoseir2

Senior Member
Dec 22, 2011
63
6
I seem to be having a problem.

I get the MMS.apk from my phone, then I send it to my mac via bluetooth.

I then move it to the modding folder, then decompile, change what I want, but then after I select the compile option, nothing happens. It says its compiling, and then the message goes away, but the new compiled app is nowhere to be found.

Also, I have tried extracting, then zipping, but then I have no idea how to sign the app, as it comes up in my signing folder as unsigned-MMS.apk I tried putting this unsigned version in system/app, but then it says there was a problem parsing this package.


any help would be greatly appreciated. Thanks.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 26
    So almost everyone here should be pretty familiar with android, and that means you've probably heard of (and maybe even used yourself) the windows tool APK Manager by fellow XDA member Daneshm90.

    Early last year I started to port the windows 4.9 version to mac using the outdated linux script for a base. And I had some early success at the time with simply using macports to install sox, optipng, etc. And then my computer crashed (double drive failure in July, 2011) and I gave up for the time being. Recently though I was excited to find that someone else tried to do the same thing, XDA member MAD Industries released a very basic port for mac.

    Sadly though, a quick diff of his script and the outdated linux version shows that it was still woefully behind the windows version. And so I started working (once again) on my own port of APK Manager for Mac OS X, with my goal to not only bring this current to the windows feature set, but exceed it in many ways.

    I've built in 32/64-bit architecture checking, and compiled and include the required missing binaries to re-enable optimizing png images and ogg files. I'm also including a .terminal file for easily configuring the default display, and a copy of my NEW favorite fixed-width font, Bitstream Vera Sans Mono.

    And now some notes, and requests:
    • PLEASE note: this is currently INTEL only, but it supports both 32-bit and 64-bit all-in-one with architecture checking built-in to the script.
    • PLEASE note: if your computer is running OS X 10.7.X, "Lion" then it does not include a java runtime by default, please download it here first: http://support.apple.com/kb/DL1421
    • PLEASE note: due to the length of some of the strings used in the menus, etc., in order to not need to scroll your terminal window, you must adjust your default columns and rows settings. You can set this automatically by using the include "JocelynCustom.terminal" file, and you can also find simple instructions to set this yourself in the README.txt
    • PLEASE read the included readme for installation and very basic (for right now) usage instructions. I welcome any and all feedback on improvements for the readme file.
    • PLEASE report any and all bugs or generally wonky behavior, preferrably by posting here in this thread, or by posting a comment back on my blog.
    • LASTLY, please if you re-post this anywhere else, including blogs, other forums, etc. I would greatly appreciate if you would at least give me credit, and link back to my blog (http://girlintroverted.wordpress.com/) or at the very least, link back here to this post.

    WHEN UPGRADING, DO NOT COPY OVER THE CONTENTS OF THE "other" directory or the root directory unless you absolutely know what you're doing.

    IMPORTANT: Please see the second post in this thread for update notes, issues, concerns, etc. thanks :)

    Download apk manager v2.2.5 here: http://www.mediafire.com/?o4idx4en9ldnwx4
    Download migration tool v1.4 here: http://www.mediafire.com/?hbhftv9195tk86t

    v3.0 BETA INFORMATION

    May 11, 2012 - beta version of v3.0 is online now on github, if you want to help test it, I suggest backing up your old apk_manager directory entirely, and then going here, and reading the simple install instructions:

    https://github.com/jocelynmallon/apkmanager

    The basic install is pretty simple though: open terminal, cd into whatever directory you want the apkmanager folder to be created in, and run:
    • cd into whatever directory you want the apkmanager folder to be created in, and run:
      Code:
      git clone git://github.com/jocelynmallon/apkmanager.git
    • launch APKManager.app and follow all the instructions.
    Also, git is utterly retarded when it comes to the OSX 'icon' resource files (for custom folder icons) so by default, the folder icon isn't included with 3.0+, but you can download it and apply it yourself still. Link is on the wiki here:
    https://github.com/jocelynmallon/apkmanager/wiki/Basic-Information

    and thank you very much to anyone that helps test this!

    Cheers everyone :)
    6
    IMPORTANT!

    5-11-2012 - v3.0 BETA notes

    Some notes about the new v3.0 beta released today.

    First, please backup your entire old apk_manager directory before you install/clone the 3.0 git repo. My OCD got the better of me when it came to releasing 3.0, and I ended up trashing my entire git repo/history (from v1.0-2.2.5) and starting a new history when I was ~90% through the 3.0 dev process. Because of that, your old directory will cause problems, DO NOT CLONE/INSTALL 3.0b into your old 1.X/2.X directory.

    Second, for those comfortable with the command line that really want to help test APK Manager, there are four 'hidden' menu options in most menus (main menu, debug/settings menu, auto-updates menu, signing menu, clean menu) that turn on a variety of debugging options.
    • 96) turns on 'trace mode' (set -x) for the entire script, once the main loop starts. This will make the script basically unusable for people, please only use this if you can reproduce a bug, and are saving the entire terminal output to submit an issue/error log.
    • 97) turns on 'verbose mode' (set -v) for the entire script, once the main loop starts. This will cause some display issues, but the script will remain mostly usable.
    • 98) turns on 'error mode' (set -e) for the entire script, once the main loop starts. This basically causes the script to exit if any condition/test/command fails. Not really useful on its own, but very useful in combination with option 96 or 97.
    • 99) turns on a very (and I do mean VERY) simple debug information display between main apk manager header and most menus. This shows the current PID, the last exit/return code (Currently non-functional) and the last directory change.
    So, if you can reproduce any bugs, please close apk manager, and delete your log.txt. Then open APK Manager again, and on the main menu, choose option 98, then next choose option 96. Then reproduce the bug, and copy/paste the entire terminal output into a log on pastebin.com, gist, etc., and send it to me. And of course, if you feel confident debugging and fixing it yourself, then fork the apkmanager repo, and send me a pull request with your changes.

    4-14-2012 IMPORTANT!

    An update to the issue below. This has been resolved in version 2.1 of APK Manager, and should not present any issues moving forward. However, because the old user settings and private keys were stored locally, inside the apk_manager directory, in order to save these before upgrading, I've created a migration utility/script, that needs to be run before you upgrade.

    The link to this migration utility is in the original post in this thread, and the tool is also included in the APK Manager disk image starting with versions 2.1.1.

    To run this tool:
    1. mount the "Migration Utility.dmg"
    2. Copy Migrate.app to your old root apk_manager directory.
    3. Copy Migrate.sh to your old apk_manager/other directory.
    4. From your old root apk_manager directory, run Migrate.app
    5. Verify that the script completed without any errors
    6. OPTIONAL - for those paranoid, you can double check that it worked manually. Execute the following commands in a terminal:
      Code:
      cd $HOME
      ls -la | grep .apkmanager
      cd .apkmanager
      ls -la
    4-13-2012 IMPORTANT!

    AFFECTS all versions of apk manager prior to v2.1 (forthcoming release as of 4/13/2012.)

    If you use any advanced signing functionality, you must backup your existing private key(s) and keystore(s) before upgrading to a new version of APK Manager.

    Forthcoming version 2.1 will have a separate, automated, one-time backup & upgrade script to run, and all future versions will have automatic backup of key(s) and keystore(s) built in.

    By default they get created and saved in the apk_manager/other/.keystores directory. This is a hidden directory by default. You can do one of several different things to unhide/view this directory, and backup your keystore(s).

    I'm outlining one simple method here.

    • Enable 'show hidden files' in Finder. From a terminal copy and paste the following two lines:
      Code:
      defaults write com.apple.finder AppleShowAllFiles TRUE
      killall Finder
    • Finder will restart after those two lines, browse to your apk_manager/other directory and make sure you see the .keystores folder (it should be dimmed compared to regular folders.)
    • Copy this folder and all contents somewhere safe (desktop, user home directory, user backup folder, dropbox, etc.)
    • Proceed with your upgrade (usually just delete the old apk_manager folder and copy over the new one, you might need to manually move project folders, etc. too)
    • Copy/Paste your saved .keystores directory into your new apk_manager/other folder
    • Test advanced signing functionality to ensure everything still works.
    • Once you've verified everything is working, run the following code to turn off viewing all files/folders in finder:
      Code:
      defaults write com.apple.finder AppleShowAllFiles FALSE
      killall Finder
    4
    CHANGELOG

    10-8-2012
    • fixed a couple bugs that were introduced with some changes to homebrew and pngcrush
    • updated smali.jar and baksmali.jar to version 1.4.0
    • fixed a few various typos
    • updated the built-in pngout downloader to download the newest version (May 30, 2012)
    • changed the "view changelog" option on the debug menu to use "git log" if you used homebrew & git to install
    • added the ability to forcibly reset the "home" directory by holding the command/apple key when launching APKManager.app
    • removed all the little "b/beta" tags I could find since this seems good enough for a "real" 3.0 release finally

    4-28-2012
    • v2.2.5 uploaded! - Fixed "adb log" function. I have no idea how or when I broke this, but it was yet another boneheaded mistake.

    4-28-2012
    • v2.2.4 uploaded! - Fixed a bug in the "batch sign with private key" option that would cause the signing process to fail if the key and keystore password weren't identical.

    4-24-2012
    • v2.2.3 uploaded! - I'm retarded and somehow failed to include zipalign in every release. Fixed.
    • Added zipalign path information to debug/binary info screen.
    • Replaced all instances/uses of 'which' with 'command -v' instead.
    • Fixed an obscure bug that could cause infinite loop in the function to check and set png optimization tool.

    4-20-2012
    • v2.2.2 uploaded! - Updated 32-bit optipng to v0.7.1 (Somehow I forgot to update the 32-bit binary when I last updated the 64-bit version)
    • Minor changes to the way debug/binary version info is scraped and displayed. I personally think this new method is cleaner, and more consistent.
    • Fixed bug in binary display screen (debug menu, option 2) whereby pressing "any key" did not actually close the screen and return to debug menu.
    • Updated other/Migrate.sh to dynamically pull the APKManager version banner from whichever other/Script.sh version is present, when its run. This should mean the end of unnecessary updates to Migration Utility.dmg, purely to bump the APK Manager version information.

    4-17-2012
    • v2.2.1 uploaded! - Updated pngcrush to 1.7.27 (yep, that's it, lol)

    4-16-2012
    • v2.2 uploaded! - Integrated color scheme selection into one single script, and removed the separate 'black text on light backgrounds' script file since its no longer needed.
    • Added new option to the "Clean" menu to reset/change color scheme.
    • Fixed a few obscure bugs with the apktool selection menu.
    • Added the actual apktool jar file in use to the debug menu information.
    • Changed the way the default apktool.jar symlink is created in order to prevent APK Manager from ever linking 'mod' versions by default.
    • Added a new custom icon for the apk_manager folder (CC by-nc-sa) Jocelyn Mallon, 2012

    4-15-2012
    • v2.1.2 uploaded! - Fixed a bug causing decompile/compile errors due to old framework files not being deleted when changing apktool versions.
    • Added 2 new apktool versions, an upgraded 1.4.2 version, and 1.4.3 ICS Mod. For most instances, 1.4.3 is still the best option to use.

    4-14-2012
    • v2.1.1 uploaded! - Fix brain-dead mistake regarding user settings & private key migration.
    • Packaged "Migration Utility.dmg" with APK Manager for easier upgrading from previous versions.

    4-14-2012
    • v2.1 uploaded! - Migrated user settings and private keys to new location ($HOME/.apkmanager) to ensure preservation when upgrading.
    • Bumped copyright/CC info in various files to 2012

    4-12-2012
    • v2.0.1 uploaded! - Quick hotfix for directory check/creation for advanced signing options.

    4-12-2012
    • v2.0 uploaded! - Re-packaged into a DMG (mac disk image) file to alleviate potential unzip/setup errors.
    • Updated a lot of the various binaries to latest versions (adb, sox, optipng, pngcrush, etc.)
    • Added a new option to view java source, this has a lot of potential issues/caveats so please read the CHANGELOG.txt for more information.
    • Re-worked and (hopefully) simplified debug menu for the millionth time.
    • Added Chocolat.app to list of text editors/viewers http://chocolatapp.com/
    • Lots of stuff I probably missed, please read README.txt and CHANGELOG.txt for full details.

    10-18-2011
    • v1.2.1 uploaded! - Mostly bugfixes for a few really stupid bugs I introduced in 1.2. If you had problems running APK Manager because of "missing programs" or "not in PATH" errors (from a clean install) it was my crappy coding skills, and it should be fixed now.
    • I honestly don't think I added any new features, just bug fixes and code cleanups.

    10-10-2011
    • v1.2 uploaded! - Added another png tool option, pngout. Unfortunately, due to the licensing restrictions, it is illegal to redistribute the actual pngout binary, so instead, APK Manager will download and install the binary upon first attempted use of pngout. This means that if you never use pngout, it will never be downloaded.
    • Completely re-worked the adblog.txt function, now completely automated, and, with much clearer instructions.
    • Added two additional text editor/log viewer options: sublime text 2, and vico. Just like all the rest, they both require command line support to be installed in order to function.
    • Cleaned up adb shell, ddms, and draw9patch options so that they all now automatically close the new tabs that they open, and when necessary, will kill and re-start adb.
    • 1.2 might be the last release. I had fun learning how to write shell script for this, but the overwhelming lack of interest in this project has already started to make it no fun for me. And well, its already basically good enough for everyday use, there's just not much else to keep adding.

    10-8-2011
    • v1.1 uploaded! Please see Changelog.txt for full details.
    • switched some code back to a "portable" syntax and changed back to /bin/sh env in case users have a login shell other than bash set.
    • cleaned up and re-arranged debug menu again, it should be a lot less cluttered, and easier to use overall now.
    • fixed a few bugs in the startup check, hopefully nobody ever encountered them, they were pretty embarrassing, lol.
    • added option to choose between optipng and pngcrush for png optimization functions, and the setting is persistent between launches of APK Manager.
    3
    OP updated with v2.2.3.

    Basically I'm retarded and somehow failed to include a 'zipalign' binary in every release (oh the joy of testing on a machine that has the SDK installed.) Oh, and fixed a couple bugs.
    3
    I try this in the next days

    My Mac Book Pro end 2011 has all updates installed (Lion 10.7.3)

    ---------- Post added at 05:17 PM ---------- Previous post was at 05:07 PM ----------

    Ahh okay I fixed it!!! :)

    The Unarchiver was not able to extract all files from the zip. So files doesn't work. But by using OSX Unarchiver everything works :)

    Thanks a lot for this port!!

    Hi again,

    I'm glad you got it figured out. I think I'll start packaging it as a DMG file instead of a zip, and just made a custom background image to explain about copying the apk_manager folder somewhere.

    I've also been working on updating it a little bit the past couple days, and will have a new version soon.

    Cheers! :)