Skip to content

Commit 3be24c7

Browse files
committed
Added android support. Fixed readme.
* I added the native module for Android. * Updated the readme to include the Android setup section. * Renamed the .js files to include ios.js and android.js for platform specific support.
1 parent a715fec commit 3be24c7

File tree

29 files changed

+848
-1
lines changed

29 files changed

+848
-1
lines changed

README.md

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,66 @@ React Native component for getting or setting clipboard content
77
```javascript
88
npm install react-native-clipboard --save
99
```
10-
10+
## iOS
1111
In XCode, in the project navigator, right click Libraries ➜ Add Files to [your project's name], Go to node_modules ➜ react-native-clipboard and add the `RNClipboard.xcodeproj` file
1212

1313
In XCode, in the project navigator, select your project. Add the lib*.a from the RNClipboard project to your project's Build Phases ➜ Link Binary With Libraries Click `RNClipboard.xcodeproj` file you added before in the project navigator and go the Build Settings tab. Make sure 'All' is toggled on (instead of 'Basic'). Look for Header Search Paths and make sure it contains both $(SRCROOT)/../react-native/React and $(SRCROOT)/../../React - mark both as recursive.
1414

1515
Run your project (Cmd+R)
1616

17+
## Android
18+
* In `RNClipboardAndroid/setting.gradle`
19+
20+
```gradle
21+
...
22+
include ':react-native-clipboard'
23+
project(':react-native-clipboard').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-clipboard/RNClipboardAndroid/app')
24+
```
25+
26+
* In `android/app/build.gradle`
27+
28+
```gradle
29+
...
30+
dependencies {
31+
...
32+
compile project(':react-native-clipboard')
33+
}
34+
```
35+
36+
* register module (in MainActivity.java)
37+
38+
```java
39+
40+
import com.davidsandor.rnclipboardandroid.RNClipboardAndroidPackage;; // <--- import
41+
42+
public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
43+
......
44+
45+
@Override
46+
protected void onCreate(Bundle savedInstanceState) {
47+
super.onCreate(savedInstanceState);
48+
mReactRootView = new ReactRootView(this);
49+
50+
mReactInstanceManager = ReactInstanceManager.builder()
51+
.setApplication(getApplication())
52+
.setBundleAssetName("index.android.bundle")
53+
.setJSMainModuleName("index.android")
54+
.addPackage(new MainReactPackage())
55+
.addPackage(new RNClipboardAndroidPackage()) // <------ add here
56+
.setUseDeveloperSupport(BuildConfig.DEBUG)
57+
.setInitialLifecycleState(LifecycleState.RESUMED)
58+
.build();
59+
60+
mReactRootView.startReactApplication(mReactInstanceManager, "example", null);
61+
62+
setContentView(mReactRootView);
63+
}
64+
65+
......
66+
67+
}
68+
```
69+
1770
## Examples
1871

1972
```javascript

RNClipboard.android.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
'use strict';
2+
3+
var RNClipboard = require('NativeModules').ClipboardAndroid;
4+
5+
var Clipboard = {
6+
get(callback) {
7+
RNClipboard.get(callback)
8+
},
9+
10+
set(content) {
11+
RNClipboard.set(content);
12+
}
13+
};
14+
15+
module.exports = Clipboard;

RNClipboardAndroid/.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.gradle
2+
/local.properties
3+
/.idea/workspace.xml
4+
/.idea/libraries
5+
.DS_Store
6+
/build
7+
/captures
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module external.linked.project.id="RNClipboardAndroid" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="java-gradle" name="Java-Gradle">
5+
<configuration>
6+
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
7+
<option name="BUILDABLE" value="false" />
8+
</configuration>
9+
</facet>
10+
</component>
11+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
12+
<exclude-output />
13+
<content url="file://$MODULE_DIR$">
14+
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
15+
</content>
16+
<orderEntry type="inheritedJdk" />
17+
<orderEntry type="sourceFolder" forTests="false" />
18+
</component>
19+
</module>

RNClipboardAndroid/app/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

RNClipboardAndroid/app/app.iml

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="RNClipboardAndroid" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="android-gradle" name="Android-Gradle">
5+
<configuration>
6+
<option name="GRADLE_PROJECT_PATH" value=":app" />
7+
</configuration>
8+
</facet>
9+
<facet type="android" name="Android">
10+
<configuration>
11+
<option name="SELECTED_BUILD_VARIANT" value="debug" />
12+
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
13+
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
14+
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
15+
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
16+
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
17+
<afterSyncTasks>
18+
<task>generateDebugAndroidTestSources</task>
19+
<task>generateDebugSources</task>
20+
</afterSyncTasks>
21+
<option name="ALLOW_USER_CONFIGURATION" value="false" />
22+
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
23+
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
24+
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
25+
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
26+
</configuration>
27+
</facet>
28+
</component>
29+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
30+
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
31+
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
32+
<exclude-output />
33+
<content url="file://$MODULE_DIR$">
34+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
35+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
36+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
37+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
38+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
39+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
40+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
41+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
42+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
43+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
44+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
45+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
46+
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
47+
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
48+
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
49+
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
50+
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
51+
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
52+
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
53+
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
54+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
55+
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
56+
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
57+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
58+
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
59+
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
60+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
61+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
62+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
63+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
64+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
65+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
66+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
67+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
68+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
69+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
70+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
71+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
72+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
73+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
74+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/jars" />
75+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.1/jars" />
76+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/drawee/0.6.1/jars" />
77+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/fbcore/0.6.1/jars" />
78+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/fresco/0.6.1/jars" />
79+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/imagepipeline-okhttp/0.6.1/jars" />
80+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.fresco/imagepipeline/0.6.1/jars" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.react/react-native/0.12.0/jars" />
82+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/org.webkit/android-jsc/r174650/jars" />
83+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
84+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
85+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
86+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
87+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
88+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
89+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
90+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
91+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
92+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
93+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
94+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
95+
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
96+
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
97+
</content>
98+
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
99+
<orderEntry type="sourceFolder" forTests="false" />
100+
<orderEntry type="library" exported="" name="okhttp-ws-2.4.0" level="project" />
101+
<orderEntry type="library" exported="" name="library-2.4.0" level="project" />
102+
<orderEntry type="library" exported="" name="okhttp-2.4.0" level="project" />
103+
<orderEntry type="library" exported="" name="jsr305-3.0.0" level="project" />
104+
<orderEntry type="library" exported="" name="jackson-core-2.2.3" level="project" />
105+
<orderEntry type="library" exported="" name="fbcore-0.6.1" level="project" />
106+
<orderEntry type="library" exported="" name="react-native-0.12.0" level="project" />
107+
<orderEntry type="library" exported="" name="imagepipeline-okhttp-0.6.1" level="project" />
108+
<orderEntry type="library" exported="" name="android-jsc-r174650" level="project" />
109+
<orderEntry type="library" exported="" name="imagepipeline-0.6.1" level="project" />
110+
<orderEntry type="library" exported="" name="fresco-0.6.1" level="project" />
111+
<orderEntry type="library" exported="" name="bolts-android-1.1.4" level="project" />
112+
<orderEntry type="library" exported="" name="support-v4-23.0.1" level="project" />
113+
<orderEntry type="library" exported="" name="okio-1.5.0" level="project" />
114+
<orderEntry type="library" exported="" name="appcompat-v7-23.0.1" level="project" />
115+
<orderEntry type="library" exported="" name="drawee-0.6.1" level="project" />
116+
<orderEntry type="library" exported="" name="support-annotations-23.0.1" level="project" />
117+
</component>
118+
</module>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
apply plugin: 'com.android.library'
3+
4+
android {
5+
compileSdkVersion 23
6+
buildToolsVersion "23.0.1"
7+
8+
defaultConfig {
9+
minSdkVersion 16
10+
targetSdkVersion 22
11+
versionCode 1
12+
versionName "1.0"
13+
}
14+
lintOptions {
15+
abortOnError false
16+
}
17+
}
18+
19+
repositories {
20+
mavenCentral()
21+
}
22+
23+
dependencies {
24+
compile 'com.facebook.react:react-native:0.12.+'
25+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Add project specific ProGuard rules here.
2+
# By default, the flags in this file are appended to flags specified
3+
# in /Users/dsandor/Library/Android/sdk/tools/proguard/proguard-android.txt
4+
# You can edit the include path and order by changing the proguardFiles
5+
# directive in build.gradle.
6+
#
7+
# For more details, see
8+
# http://developer.android.com/guide/developing/tools/proguard.html
9+
10+
# Add any project specific keep options here:
11+
12+
# If your project uses WebView with JS, uncomment the following
13+
# and specify the fully qualified class name to the JavaScript interface
14+
# class:
15+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16+
# public *;
17+
#}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.davidsandor.rnclipboardandroid;
2+
3+
import android.app.Application;
4+
import android.test.ApplicationTestCase;
5+
6+
/**
7+
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
8+
*/
9+
public class ApplicationTest extends ApplicationTestCase<Application> {
10+
public ApplicationTest() {
11+
super(Application.class);
12+
}
13+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2+
package="com.davidsandor.rnclipboardandroid">
3+
4+
<application android:allowBackup="true" android:label="@string/app_name"
5+
android:icon="@mipmap/ic_launcher" android:supportsRtl="true"
6+
android:theme="@style/AppTheme">
7+
8+
</application>
9+
10+
</manifest>

0 commit comments

Comments
 (0)