User Tools

Site Tools


proton:android_setup

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
proton:android_setup [2012/03/13 22:40]
seth
proton:android_setup [2013/01/20 12:00]
seth
Line 1: Line 1:
 +Before going in to compilation details check [[proton:​android_projects|what you need to know about the Android projects in general]].
 +
 ====Compiling for Android from Windows==== ====Compiling for Android from Windows====
-**NEW:​**  ​3/12/2012 - Proton ​no longer requires Cygwin ​to be install to compile android apps on Windows!+**NOTE:**  12/28/2012 - Proton ​doesn'​t work with the latest Android SDK out of the box, there are some minor changes required. The changes are described [[http://​www.rtsoft.com/​forums/​showthread.php?​5604-build-bat-failed-on-Windows-using-ndk-r8b-sdk-20-0-1&​p=25039&​viewfull=1#​post25039|here by ccthien]] or you can try to download the [[http://​www.rtsoft.com/​forums/​showthread.php?​5604-build-bat-failed-on-Windows-using-ndk-r8b-sdk-20-0-1&​p=24890&​viewfull=1#​post24890|older sdk]]. ​ Seth plans on updating the examples to build with the latest SDKs soonish.
  
 Originally the Android platform was crippled by requiring all "​app"​ code to be written in Java. Originally the Android platform was crippled by requiring all "​app"​ code to be written in Java.
Line 29: Line 31:
  
 ====Section 1: Setting up your Windows computer to compile for Android==== ====Section 1: Setting up your Windows computer to compile for Android====
-Get ready to do some downloading and installing!  Android might be the most complicated one to setup, but you're in luck, the latest NDK no longer requires installing cygwin so it just got a lot simpler!+Get ready to do some downloading and installing!
  
 Important note:  For all this stuff, try to choose a custom install path WITHOUT spaces in it.  There, I just saved you like 40 minutes of diagnosing vague errors that will happen later. ​ No charge, friend! Important note:  For all this stuff, try to choose a custom install path WITHOUT spaces in it.  There, I just saved you like 40 minutes of diagnosing vague errors that will happen later. ​ No charge, friend!
  
 +  * Install the [[http://​developer.android.com/​sdk/​index.html|Android SDK]] - use the Windows exe version so it will also prompt you to install the Java SE JDK which will be needed as well. NOTE - you'll need to install the 32bit version of the Java JDK, NOT the 64 bit, since the android SDK install process won't recognise the 64 bit version. Also note, the advice about using a custom install path applies as much for the Java JDK as it does for everything else. If you install Java to Program Files, ANT will complain about this later (since Ant sits on top of Java).
 +  * Add **C:​\whatever\android-sdk\platform-tools** to your windows path 
 +  * Add **C:​\whatever\android-sdk\tools** to your windows path
  
-  * Install the [[http://​developer.android.com/​sdk/​index.html|Android SDK]] - use the Windows exe version so it will also prompt you to install the Java SE JDK which will be needed as well. +If you type "​android"​ from the DOS prompt it will bring up the Android SDK and AVD Manager. ​ This is where you create AVDs (basically, emulator profiles, if you want to use the emulator) and can install optional libraries.  It also shows you when you can update your platform tools.
-  * Add **C:​\whatever\android-sdk\platform-tools** to your windows path +
-  * Add **C:​\whatever\Android\android-sdk\tools** to your windows path +
- +
-If you type "​android"​ from the DOS prompt it will bring up the Android SDK and AVD Manager. ​ This is where you create AVDs (basically, emulator profiles, if you want to use the emulator) and can install optional libraries.+
  
 Here is how I setup my AVD (note my naming format.. helps later to remember which AVD is which version) Here is how I setup my AVD (note my naming format.. helps later to remember which AVD is which version)
Line 44: Line 45:
 {{:​proton:​avd_creation.png?​100|}} {{:​proton:​avd_creation.png?​100|}}
  
 +Having said that, the truth is I never use the AVD/​emulator stuff, it's too slow and useless.
  
 Make sure you install "USB Driver package, revision X", your phone probably needs this.  Also, "​Market licensing package, revision X" is needed. Make sure you install "USB Driver package, revision X", your phone probably needs this.  Also, "​Market licensing package, revision X" is needed.
Line 64: Line 66:
   * In Settings->​Applications->​Development enable "USB debugging"​   * In Settings->​Applications->​Development enable "USB debugging"​
   * After plugging in your phone, in the Win device manager it will probably say "no drivers installed"​ - click update driver and install them   * After plugging in your phone, in the Win device manager it will probably say "no drivers installed"​ - click update driver and install them
-  * Typing "abd devices"​ should show your plugged in phone as a device now.  If so, congrats, you got this far!+  * Typing "adb devices"​ should show your plugged in phone as a device now.  If so, congrats, you got this far!
  
  
Line 71: Line 73:
 You don't absolutely have to, but if you run into any snags in the install later, come back to this point and try installing [[http://​www.eclipse.org/​downloads/​|Eclipse]] (get Eclipse IDE for Java Developers) and building a "hello world" app to test everything thus far.  [[http://​www.vogella.de/​articles/​Android/​article.html#​installation|Nice tutorial on doing that is here]]. ​ Actually, don't, waste of time probably. You don't absolutely have to, but if you run into any snags in the install later, come back to this point and try installing [[http://​www.eclipse.org/​downloads/​|Eclipse]] (get Eclipse IDE for Java Developers) and building a "hello world" app to test everything thus far.  [[http://​www.vogella.de/​articles/​Android/​article.html#​installation|Nice tutorial on doing that is here]]. ​ Actually, don't, waste of time probably.
  
-Android is complex and I don't really think p+ can shield you from its intricacies. ​ You still need to know how to create an AVD emulator, understand ​what a .manifest is and know what obscure error messages like "​Committing suicide to kill the zombie!" ​mean.  Well, bad example because I still don't know what that error message really means+Android is complex and I don't really think p+ can shield you from its intricacies. ​ You still need to know what a .manifest is and you'll be seeing ​obscure error messages like "​Committing suicide to kill the zombie!"​. ​ Well, bad example because I still don't know what that error message really means.
- +
-You should probably spend a few days of hacking around with hello world apps to get a feel for it before attempting to use Proton SDK with it.+
  
 ====Section 2: Downloading and setting up the NDK and compiling RTBareBones==== ====Section 2: Downloading and setting up the NDK and compiling RTBareBones====
Line 81: Line 81:
 First, mentally throw away Eclipse if you were using it for testing - you'll never need it again. First, mentally throw away Eclipse if you were using it for testing - you'll never need it again.
  
-  * Install [[http://​ant.apache.org/​bindownload.cgi|Ant]],​ grab the latest .zip (v1.8.at this time) and unzip it to somewhere. +  * Install [[http://​ant.apache.org/​bindownload.cgi|Ant]],​ grab the latest .zip (v1.8.at this time) and unzip it to somewhere. 
-  * Add the ant directory to your windows path.  Verify it's working by typing "​ant"​ in a dos prompt, it should do something other than "bad command or file error"​.+  * Add the ant directory to your windows path.  Verify it's working by typing "​ant"​ in a dos prompt, it should do something other than "bad command or file error"​. ​NOTE - the path you add needs to go to the Binaries directory, not just the root ant dir - E.g. C:​\Android\apache-ant-1.8.4\bin
   * Download the [[http://​developer.android.com/​sdk/​ndk/​index.html|Android NDK]] and unzip it somewhere. ​ Again, put it somewhere with no spaces in the filenames if possible. ​ (Not "​Program Files"​!)   * Download the [[http://​developer.android.com/​sdk/​ndk/​index.html|Android NDK]] and unzip it somewhere. ​ Again, put it somewhere with no spaces in the filenames if possible. ​ (Not "​Program Files"​!)
 +  * Make sure that the environmental variable ANT_HOME exists and is set to your ant path.  (ie, c:\pro\ant)
  
-**Note**: The NDK version should be r7b (latest at the time this was written) or later. ​ +**Note**: The NDK version should be r8 (latest at the time this was written) or later. ​
- +
-**Another Note**: NDK r7b is slightly broken, it won't run on a Xoom/tegra2 chipset! ​ check [[http://​www.codedojo.com/?​p=1509|this]] for a work around)+
   ​   ​
-Ant is command line utility that will do the Android packaging for us after the .so binary is built.+Ant is command line utility that will do the Android packaging for us after the .so binary is built.
  
-Annoying ​stuff you have to do:+More annoying ​stuff you have to do:
  
   * Add your android ndk dir to the windows path   * Add your android ndk dir to the windows path
-  * Edit RTBareBones/​android/​app_info_setup.bat and set the variables up if different, note that you can set the emulator AVD name you wish to use. 
  
 ====Finally,​ the compile!==== ====Finally,​ the compile!====
Line 102: Line 100:
 From file explorer, double click /​RTBareBones/​android/​build.bat From file explorer, double click /​RTBareBones/​android/​build.bat
  
-You should see a bunch of weird warnings like "this precompiled header message should show up once" showing up forty times. ​ This is all perfectly normal. ​ Trust me.  Also, help me fix this, as the Android compiles are horrible slow. +After a lengthy C++ compile process, it then compiles the Java pieces in one second, then puts it on the active device, as long as you only have one plugged in. The .apk it makes is located in /​RTBareBones/​android/​bin in case you want to give it to someone else to test with.
- +
-After a lengthy C++ compile process, it then compiles the Java pieces in one second, then slowly ​puts it on the active device, as long as you only have one plugged in. The .apk it makes is located in /​RTBareBones/​android/​bin in case you want to give it to someone else to test with.+
  
 Tips: Tips:
   * build.bat uses InstallOnDefaultPhone.bat which installs it to whatever device is plugged in, as long as only one device exists, it works.   * build.bat uses InstallOnDefaultPhone.bat which installs it to whatever device is plugged in, as long as only one device exists, it works.
-  * If any headers change, use FullRebuild.bat or Clean.bat.  Otherwise you can run into a situation where it seems like it compiled fine but crashes+  * If any headers change, ​you may want to use Clean.bat ​to make sure make notices that they changed correctly
-  * Compiling is very slow This would drive me crazy except that I generally do it very rarelyas I can do 99% of the dev in MSVC where a recompile takes seconds.  ​The java part takes nearly no timeso no problem there. +  * Use buildRelease.bat to make the finalsigned version to upload to the android store.  ​It also produces an unsigned version that is useful sometimes. (Amazon'​s store wants it that wayfor instance)
  
-Run ViewLog.bat to see the debug output ​from the emulatoror ViewLogDefaultPhone.bat to see the debug output from your device.+Run ViewLogDefaultPhone.bat to see the debug output. (As long as only one device is plugged in/active, it will work, be it the emulator or a real device)
  
 ====Customize the .mak==== ====Customize the .mak====
-If you need to add remove source files to the project, manually edit RTBareBones/​jni/​Android.mk.+If you need to add/remove source files to the project, manually edit RTBareBones/android/​jni/​Android.mk.
  
 Also, if you're having trouble, it's a good idea to enable debug mode compiling. ​ To do that, change: Also, if you're having trouble, it's a good idea to enable debug mode compiling. ​ To do that, change:
Line 142: Line 137:
 Don't forget to change it back later. Don't forget to change it back later.
  
-Note:  The above is sort of outdated and instead of LOCAL_CFLAGS/​LOCAL_CPPFLAGS it's actually SHARED_FLAGS or MY_FLAGS to avoid duplication.+Note:  The above may be outdated ​with some projects ​and instead of LOCAL_CFLAGS/​LOCAL_CPPFLAGS it's actually SHARED_FLAGS or MY_FLAGS to avoid duplication. Whatever, it's simple to see/edit stuff in there.
  
-====Enabling the Android Market Licensing Verification Library==== +The only app specific ​.java file is located ​in /​android/​src/​Main.java.  ​It has some options for enabling securityTapjoyHooked, and such.
-If you want to sell your App in the Android market, you should use [[http://​developer.android.com/​guide/​publishing/​licensing.html|LVL]]. +
- +
-It's actually already implemented in Proton SDK, take a look at the only .Java file in RTBareBones,​ located in RTBareBones/​android/​src/​com/​rtsoft/​rtbarebones +
- +
-<code java> +
-//This is the only app-specific java file for the android project. ​ The real work is done in +
-//shared/​android/​src/​rtsoft/​shared/​SharedActivity.java.  ​When editing thatbe carefulas it is used +
-//by all Proton projects. +
- +
-//Thanks to Phil Hassey for his help and code +
- +
-package com.rtsoft.rtbarebones;​ +
-import com.rtsoft.shared.SharedActivity;​ +
-import android.os.Bundle;​ +
- +
-public class Main extends SharedActivity +
-+
- @Override +
-    protected void onCreate(Bundle savedInstanceState)  +
-+
- //EDIT THESE TO MATCH YOUR PROJECT NAME +
- BASE64_PUBLIC_KEY = "uhit would go here if you had one and wanted to use the google licensing stuff";​ +
- PackageName= "​com.rtsoft.rtbarebones";​ +
- dllname= "​rtbarebones";​ +
- securityEnabled = false;  +
-       ​super.onCreate(savedInstanceState);​ +
-    } +
-+
-</​code>​ +
- +
-You would just need to enter your public key (The Google developer console gives this to you after you sign up) and change "​securityEnabled"​ to true.+
  
 ====Final thoughts and tips ==== ====Final thoughts and tips ====
Line 183: Line 147:
  
   * Want to clone one of the example apps to be the starting place of a new app? Then read the tutorial on [[:​proton_vsrename|how to create a new project by copying from a Proton sample app]].   * Want to clone one of the example apps to be the starting place of a new app? Then read the tutorial on [[:​proton_vsrename|how to create a new project by copying from a Proton sample app]].
-  * Want to compile faster? ​ Change call ndk-build in build.bat to call ndk-build -j8 (or lower than eight if you don't have 8 threads on your multicore cpu) +  * Want to compile faster? ​ Change call ndk-build in build_prepare.bat to call ndk-build -j8 (or lower than eight if you don't have 8 threads on your multicore cpu)
- +
-====V2 Android setup==== +
-RTAdTest actually uses a new v2 setup, it has a preprocessing step to be able to include/not include certain java code and control package naming. +
- +
-It supports Android market IAB, Tapjoy, and Hooked. ​ No other examples currently use the v2 setup, but all new stuff will. +
proton/android_setup.txt · Last modified: 2017/05/22 08:33 by seth