From d20762aaaaa7d14f427c619334c91b6ff19d1023 Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Mon, 15 Jun 2015 12:12:25 -0700 Subject: [PATCH 1/2] hello-jni: add README and packaging metadata --- hello-jni/.google/packaging.yaml | 9 +++++ hello-jni/README.md | 59 +++++++++++++++++++++++++++++++ hello-jni/screenshot.png | Bin 0 -> 42131 bytes 3 files changed, 68 insertions(+) create mode 100644 hello-jni/.google/packaging.yaml create mode 100644 hello-jni/README.md create mode 100644 hello-jni/screenshot.png diff --git a/hello-jni/.google/packaging.yaml b/hello-jni/.google/packaging.yaml new file mode 100644 index 000000000..f00aa5af7 --- /dev/null +++ b/hello-jni/.google/packaging.yaml @@ -0,0 +1,9 @@ +status: PUBLISHED +technologies: [Android, NDK] +categories: [Getting Started, Native] +languages: [C++, Java] +solutions: [Mobile] +github: googlesamples/android-ndk +level: BEGINNER +icon: hello-jni/screenshot.png +license: apache2 diff --git a/hello-jni/README.md b/hello-jni/README.md new file mode 100644 index 000000000..30d1b53d3 --- /dev/null +++ b/hello-jni/README.md @@ -0,0 +1,59 @@ +Hello JNI +========= +This sample show how to call Native C++ code from a Android Java activity using JNI. Note this require a preview build of Android Studio and the experimental version Android Gradle plugin, see the [Pre-requisites](#pre-requisites) and [Getting Started](#getting-started) instructions. + +Pre-requisites +-------------- + +- [Android NDK](https://developer.android.com/ndk/) +- Android Studio 1.3 Preview from the [canary channel](http://tools.android.com/download/studio/canary) +- Experimental version of Android Plugin for Gradle [build from sources](http://tools.android.com/build/gradleplugin). + +Getting Started +--------------- + +1. [Download](http://tools.android.com/download/studio/canary) or [switch](http://tools.android.com/download/studio/canary) to Android Studio canary channel. +1. Follow [instructions](http://tools.android.com/build/gradleplugin) to build the experimental version of the Android Plugin for Gradle. +1. Launch Android Studio. +1. Open `android-ndk/hello-jni` sample. +1. Open *File/Project Structure...* + 1. Click *Download* or *Select NDK location*. +1. Click *Tools/Android/Sync Project with Gradle Files*. +1. Click *Run/Run 'app'*. + +Screenshots +----------- + +![screenshot](screenshot.png) + +Support +------- + +If you've found an error in these samples, please [file an issue](https://github.com/googlesamples/android-ndk/issues/new). + +Patches are encouraged, and may be submitted by [forking this project](https://github.com/googlesamples/android-ndk/fork) and +submitting a pull request through GitHub. Please see [CONTRIBUTING.md](CONTRIBUTING.md) for more details. + +- [Stack Overflow](http://stackoverflow.com/questions/tagged/android-ndk) +- [Google+ Community](https://plus.google.com/communities/105153134372062985968) +- [Android Tools Feedbacks](http://tools.android.com/feedback) + +License +------- + +Copyright 2015 Google, Inc. + +Licensed to the Apache Software Foundation (ASF) under one or more contributor +license agreements. See the NOTICE file distributed with this work for +additional information regarding copyright ownership. The ASF licenses this +file to you under the Apache License, Version 2.0 (the "License"); you may not +use this file except in compliance with the License. You may obtain a copy of +the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations under +the License. diff --git a/hello-jni/screenshot.png b/hello-jni/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..b65d0085908ff8609287988c93aaa1c2ab09e3db GIT binary patch literal 42131 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 Pe{Nh=zLI&_!1w Date: Mon, 15 Jun 2015 12:38:47 -0700 Subject: [PATCH 2/2] hello-jni/README: fix typo --- hello-jni/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hello-jni/README.md b/hello-jni/README.md index 30d1b53d3..447a8362f 100644 --- a/hello-jni/README.md +++ b/hello-jni/README.md @@ -1,6 +1,6 @@ Hello JNI ========= -This sample show how to call Native C++ code from a Android Java activity using JNI. Note this require a preview build of Android Studio and the experimental version Android Gradle plugin, see the [Pre-requisites](#pre-requisites) and [Getting Started](#getting-started) instructions. +This sample shows how to call Native C++ code from a Android Java Activity using JNI. Note this requires a preview build of Android Studio and the experimental version Android Gradle plugin, see the [Pre-requisites](#pre-requisites) and [Getting Started](#getting-started) instructions. Pre-requisites --------------