diff --git a/.gitignore b/.gitignore
index 8f4d128..825d527 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,3 +65,5 @@ buck-out/
*.idea
yarn*
+
+**gradle*
diff --git a/android/README.md b/android/README.md
new file mode 100644
index 0000000..ac2fbda
--- /dev/null
+++ b/android/README.md
@@ -0,0 +1,14 @@
+README
+======
+
+If you want to publish the lib as a maven dependency, follow these steps before publishing a new version to npm:
+
+1. Be sure to have the Android [SDK](https://developer.android.com/studio/index.html) and [NDK](https://developer.android.com/ndk/guides/index.html) installed
+2. Be sure to have a `local.properties` file in this folder that points to the Android SDK and NDK
+```
+ndk.dir=/Users/{username}/Library/Android/sdk/ndk-bundle
+sdk.dir=/Users/{username}/Library/Android/sdk
+```
+3. Delete the `maven` folder
+4. Run `./gradlew installArchives`
+5. Verify that latest set of generated files is in the maven folder with the correct version number
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index bb1792a..3936a51 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,5 +1,4 @@
-
-
+
\ No newline at end of file
diff --git a/android/app/src/main/java/top/jerryyan/RN/A/FitFullScreen/FitModule.java b/android/app/src/main/java/top/jerryyan/RN/A/FitFullScreen/FitModule.java
index b0b9ce0..250b1da 100644
--- a/android/app/src/main/java/top/jerryyan/RN/A/FitFullScreen/FitModule.java
+++ b/android/app/src/main/java/top/jerryyan/RN/A/FitFullScreen/FitModule.java
@@ -1,4 +1,26 @@
package top.jerryyan.RN.A.FitFullScreen;
+import com.facebook.react.bridge.ReactApplicationContext;
+import com.facebook.react.bridge.ReactContextBaseJavaModule;
+import com.facebook.react.bridge.ReactMethod;
+import com.facebook.react.bridge.Callback;
+
public class FitModule extends ReactContextBaseJavaModule {
+ private final ReactApplicationContext reactContext;
+
+ public FitModule(ReactApplicationContext reactContext) {
+ super(reactContext);
+ this.reactContext = reactContext;
+ }
+
+ @Override
+ public String getName() {
+ return "Fit";
+ }
+
+ @ReactMethod
+ public void sampleMethod(String stringArgument, int numberArgument, Callback callback) {
+ // TODO: Implement some actually useful functionality
+ callback.invoke("Received numberArgument: " + numberArgument + " stringArgument: " + stringArgument);
+ }
}
diff --git a/android/app/src/main/java/top/jerryyan/RN/A/FitFullScreen/FitPackage.java b/android/app/src/main/java/top/jerryyan/RN/A/FitFullScreen/FitPackage.java
new file mode 100644
index 0000000..c956310
--- /dev/null
+++ b/android/app/src/main/java/top/jerryyan/RN/A/FitFullScreen/FitPackage.java
@@ -0,0 +1,22 @@
+package top.jerryyan.RN.A.FitFullScreen;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import com.facebook.react.ReactPackage;
+import com.facebook.react.bridge.NativeModule;
+import com.facebook.react.bridge.ReactApplicationContext;
+import com.facebook.react.uimanager.ViewManager;
+import com.facebook.react.bridge.JavaScriptModule;
+
+public class FitPackage implements ReactPackage {
+ @Override
+ public List createNativeModules(ReactApplicationContext reactContext) {
+ return Arrays.asList(new FitModule(reactContext));
+ }
+
+ @Override
+ public List createViewManagers(ReactApplicationContext reactContext) {
+ return Collections.emptyList();
+ }
+}
diff --git a/android/build.gradle b/android/build.gradle
index 3e7fb9c..9e7d7eb 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,28 +1,49 @@
-apply plugin: 'com.android.library'
-
def safeExtGet(prop, fallback) {
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}
-android {
- compileSdkVersion safeExtGet("compileSdkVersion", 28)
+apply plugin: 'com.android.library'
+apply plugin: 'maven'
+buildscript {
+ // The Android Gradle plugin is only required when opening the android folder stand-alone.
+ // This avoids unnecessary downloads and potential conflicts when the library is included as a
+ // module dependency in an application project.
+ // ref: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies
+ repositories {
+ google()
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.5.3'
+ }
+}
+
+android {
+ compileSdkVersion safeExtGet('compileSdkVersion', 28)
+ buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')
defaultConfig {
- minSdkVersion safeExtGet('minSdkVersion', 16)
+ minSdkVersion safeExtGet('minSdkVersion', 19)
targetSdkVersion safeExtGet('targetSdkVersion', 28)
- versionCode 1
- versionName "1.0"
- ndk {
- abiFilters "armeabi-v7a", "x86"
- }
+ }
+ lintOptions {
+ abortOnError false
}
}
repositories {
+ // ref: https://www.baeldung.com/maven-local-repository
+ mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
+ maven {
+ // Android JSC is installed from npm
+ url "$rootDir/../node_modules/jsc-android/dist"
+ }
+ google()
+ jcenter()
}
dependencies {
diff --git a/package.json b/package.json
index 70106f8..e16808b 100644
--- a/package.json
+++ b/package.json
@@ -20,5 +20,13 @@
"bugs": {
"url": "http://git.jerryyan.top/q792602257/jerry-rn-a-fitfullscreen"
},
- "homepage": "http://git.jerryyan.top/q792602257/jerry-rn-a-fitfullscreen"
+ "homepage": "http://git.jerryyan.top/q792602257/jerry-rn-a-fitfullscreen",
+ "peerDependencies": {
+ "react": "^16.8.1",
+ "react-native": ">=0.60.0-rc.0 <1.0.x"
+ },
+ "devDependencies": {
+ "react": "^16.9.0",
+ "react-native": "^0.61.5"
+ }
}