Upload
yossi-cohen
View
2.083
Download
3
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Native Android for Windows Developers
Yossi Cohen
INSTALLATIONS
Install Eclipse + CDTInstall SDKInstall ADTInstall USB DriverInstall NDKInstall Cygwin ….
Eclipse Installation• Download & Install Eclipse
▫Select the classic version from http://www.eclipse.org/downloads/
▫CDT for C/C++ development is recommended Select “Install New Software” from Eclipse’ Help
menu Select available software sites Check CDT Install CDT components
SDK Installation• Download & Install SDK (select windows option)
▫ http://developer.android.com/sdk/index.html• Install the ADT (Android Developer Tools) for
Eclipse▫ Instructions: ▫ http://developer.android.com/sdk/eclipse-adt.html#install
ing▫ Press Add in available software menu
▫ Add ADT with the link below
4
USB Driver / NDK Installations•Install USB Driver
▫If you don’t have a nexus phone download driver from vendor. Instructions: http://developer.android.com/sdk/oem-usb.html#InstallingDriver
•Install NDK ▫ http://developer.android.com/sdk/ndk/index.html
•Preferably do all Installations in D:\Android
5
Cygwin Installation•Goo to http://cygwin.com/ and download
setup•Install Cygwin.•Select default install options•After installation, add the following Dirs to
Cygwin Path:▫C:\Android\android-sdk\tools▫C:\Android\android-ndk-r7\build\tools
6
THE FIRST NDK SAMPLE
Running a native sample app
•In Eclipse, Select:▫File->New->Project-
>Android Project•Select “Create Project
From Existing Source” •change the directory to
the Installed NDK samples:
• D:\Android\android-ndk-r7\samples\Hello-Jni
• Select target and finish
Compile & Run•Compile the Java application•Run it on your phone target•Crash?•Open Cygwin window•Compile the native code in: D:\Android\
android-ndk-r7\samples\Hello-Jni\JNI using ndk-build command
•Compile the Java application•Run it on your target
9
CODE REVIEW
10
Java Code Review• Java part of the application is simple:
•On create, the application prints to the screen a string it receives from stringFromJNI() declared as a Native function
•Native library hello-jni is loaded11
Java to C calling convention/* sample method where the Java call passed no parameters */ void Java_ClassName_MethodName (JNIEnv *env, jobject obj){/* do something */ } /* another sample method with two parameters passed,
returning a double */ jdouble Java_ClassName_MethodName ( JNIEnv* env, jobject
obj, jdouble x, jdouble y) { return x + y; }• Note: Android Java identifies the native functions according
to their C type signature. If the call is for CPP functions, the Java program will not recognize them. The solution to this problem is to useextern “C” { } around the CPP functions
Make Files•Android native applications must could
have two make files:▫Android.mk – details the source header and
libraries used to create the application (library)
▫Application.mk – details the target platform, processor (ARM 7) and API level (API 10). The application.mk file is not mandatory
Android.mk SampleExample, the HelloJNI NDK sample make File
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jniLOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
Android.mk Review•LOCAL_PATH := $(call my-dir)
▫first understand where we are since include paths are usually RELATIVE to our current location. This must be the first command in the mk file
•CLEAR_VARS - clears special GNU Makefile LOCAL_XXX variables like LOCAL_SRC_FILES
•LOCAL_MODULE := hello-jni The LOCAL_MODULE variable must be defined to identify each module you describe in your Android.mk. The name must be *unique* without spaces.
Application.mk Review•The hello-jni sample does not include
application.mk file.•Application.mk can define the target
platform as 9 (Android 2.2)
•Application file can also define the processor version:
# Build both ARMv5TE and ARMv7-A machine code.
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-9
Refrences•Review of Android Make file•Native android development •Cygwin Install for Android
DSP-IP Contact informationFor courses & programming services For courses & programming services contactcontactYossi CohenYossi [email protected] [email protected] +972-545-313092+972-545-313092