Native Android for Windows Developers
-
Upload
yossi-cohen -
Category
Technology
-
view
2.092 -
download
3
description
Transcript of Native Android for Windows Developers
![Page 1: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/1.jpg)
Native Android for Windows Developers
Yossi Cohen
![Page 2: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/2.jpg)
INSTALLATIONS
Install Eclipse + CDTInstall SDKInstall ADTInstall USB DriverInstall NDKInstall Cygwin ….
![Page 3: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/3.jpg)
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
![Page 4: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/4.jpg)
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
![Page 5: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/5.jpg)
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
![Page 6: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/6.jpg)
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
![Page 7: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/7.jpg)
THE FIRST NDK SAMPLE
![Page 8: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/8.jpg)
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
![Page 9: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/9.jpg)
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
![Page 10: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/10.jpg)
CODE REVIEW
10
![Page 11: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/11.jpg)
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
![Page 12: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/12.jpg)
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
![Page 13: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/13.jpg)
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
![Page 14: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/14.jpg)
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)
![Page 15: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/15.jpg)
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.
![Page 16: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/16.jpg)
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
![Page 17: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/17.jpg)
Refrences•Review of Android Make file•Native android development •Cygwin Install for Android
![Page 18: Native Android for Windows Developers](https://reader035.fdocuments.net/reader035/viewer/2022062511/54b799f44a7959956b8b4572/html5/thumbnails/18.jpg)
DSP-IP Contact informationFor courses & programming services For courses & programming services contactcontactYossi CohenYossi [email protected] [email protected] +972-545-313092+972-545-313092