diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ba215ef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+apk/ToyKey.keystore
+apk/obj
+apk/obj/*
+apk/bin/!.gikeep
diff --git a/Dockerfile b/Dockerfile
index 3e5de88..235545d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,8 +1,7 @@
-FROM alpine:latest
+FROM archlinux:latest
-RUN apk update
-RUN apk add coreutils bash shadow make zip
-RUN apk add openjdk11-jdk
+RUN pacman -Syu --noconfirm
+RUN pacman -S --noconfirm coreutils bash shadow make unzip jdk11-openjdk wget
ENV ANDROID_SDK_ROOT="/opt/android"
ENV BUILD_TOOLS_LATEST="$ANDROID_SDK_ROOT/cmdline-tools/latest"
RUN BUILD_TOOLS="$(realpath -m "$BUILD_TOOLS_LATEST/..")";\
@@ -16,12 +15,15 @@ RUN BUILD_TOOLS="$(realpath -m "$BUILD_TOOLS_LATEST/..")";\
rm cmdline-tools.zip;\
mv -v cmdline-tools "$BUILD_TOOLS_LATEST" || true
ENV PATH="$PATH:$BUILD_TOOLS_LATEST/bin"
+ENV JAVA_HOME="/usr/lib/jvm/java-11-openjdk/"
+#ENTRYPOINT bash -c 'sleep 10000'
ENV LIBRARY_PATH="$LIBRARY_PATH:$BUILD_TOOLS_LATEST/lib"
-
+RUN touch /file
RUN yes | sdkmanager --install "build-tools;33.0.2"
RUN yes | sdkmanager --install "platforms;android-33"
-RUN apk add setpriv
+#RUN apk add setpriv
COPY entrypoint.sh /entrypoint.sh
RUN chown 0:0 /entrypoint.sh
RUN chmod 0700 /entrypoint.sh
-ENTRYPOINT ["/entrypoint.sh"]
+RUN touch /file2
+#
diff --git a/Dockerfile.alpine b/Dockerfile.alpine
new file mode 100644
index 0000000..281166c
--- /dev/null
+++ b/Dockerfile.alpine
@@ -0,0 +1,27 @@
+FROM alpine:latest
+
+RUN apk update
+RUN apk add coreutils bash shadow make zipi gcompat libgcc libc++
+RUN apk add openjdk11-jdk
+ENV ANDROID_SDK_ROOT="/opt/android"
+ENV BUILD_TOOLS_LATEST="$ANDROID_SDK_ROOT/cmdline-tools/latest"
+RUN BUILD_TOOLS="$(realpath -m "$BUILD_TOOLS_LATEST/..")";\
+ mkdir -p "$BUILD_TOOLS";\
+ cd "$BUILD_TOOLS";\
+ pwd;\
+ wget -O cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip;\
+ unzip cmdline-tools.zip;\
+ ls ;\
+ ls cmdline-tools;\
+ rm cmdline-tools.zip;\
+ mv -v cmdline-tools "$BUILD_TOOLS_LATEST" || true
+ENV PATH="$PATH:$BUILD_TOOLS_LATEST/bin"
+ENV LIBRARY_PATH="$LIBRARY_PATH:$BUILD_TOOLS_LATEST/lib"
+
+RUN yes | sdkmanager --install "build-tools;33.0.2"
+RUN yes | sdkmanager --install "platforms;android-33"
+RUN apk add setpriv
+COPY entrypoint.sh /entrypoint.sh
+RUN chown 0:0 /entrypoint.sh
+RUN chmod 0700 /entrypoint.sh
+ENTRYPOINT ["/entrypoint.sh"]
diff --git a/apk/AndroidManifest.xml b/apk/AndroidManifest.xml
new file mode 100644
index 0000000..bdfa76e
--- /dev/null
+++ b/apk/AndroidManifest.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apk/Makefile b/apk/Makefile
index 4aecfa5..eb5ee31 100644
--- a/apk/Makefile
+++ b/apk/Makefile
@@ -1,12 +1,14 @@
-JAVA_HONE = /usr/lib/jvm/java-8-openjdk
-ANDROID_HOME = /root/sdk
+#JAVA_HONE = /usr/lib/jvm/java-8-openjdk
+ANDROID_HOME = /opt/android
+ANDROID_VERSION = 33.0.2
+PLATFORM = android-$(shell echo $(ANDROID_VERSION) | sed 's/\..*//')
TOOLCHAIN = /Users/amon/grive/development/Android/NativeToolchain
GCC = $(TOOLCHAIN)/bin/aarch64-linux-android-gcc
CXX_FLAGS = -march=armv8-a --sysroot=$(TOOLCHAIN)/sysroot
say_hello:
- echo "this was a test"
+ echo "this was a test $(PLATFORM)"
all: build deploy
@@ -19,19 +21,26 @@ deploy :
build : ./bin/hellojni.apk
-./bin/hellojni.apk : ./bin/signed.apk
- $(ANDROID_HOME)/build-tools/23.0.3/zipalign -v -f 4 $< $@
+#./bin/hellojni.apk : ./bin/aligned.apk
+# j
+# cp $< $@
+
+./bin/hellojni.apk : ./bin/signed.apk
+ $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/zipalign -v -f 4 $< $@
+ $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/apksigner sign --ks ToyKey.keystore $@
-./bin/signed.apk : ./bin/unsigned.apk ./ToyKey.keystore
- $(JAVA_HOME)/bin/jarsigner -verbose -keystore ./ToyKey.keystore -storepass armena -keypass armena -signedjar $@ $< helljniKey
+./bin/signed.apk : ./bin/unsigned.apk ./ToyKey.keystore
+ #$(JAVA_HOME)/bin/jarsigner -verbose -keystore ./ToyKey.keystore -storepass armena -keypass armena -signedjar $@ $< helljniKey
+ jarsigner -verbose -keystore ./ToyKey.keystore -storepass armena -keypass armena -signedjar $@ $< helljniKey
./bin/unsigned.apk : ./bin/classes.dex
- $(ANDROID_HOME)/build-tools/23.0.3/aapt package -v -f -M ./AndroidManifest.xml -S ./res \
- -I $(ANDROID_HOME)/platforms/android-23/android.jar -F $@ ./bin
+ $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/aapt package -v -f -M ./AndroidManifest.xml -S ./res \
+ -I $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar -F $@ ./bin
# $(ANDROID_HOME)/build-tools/23.0.3/aapt add $@ lib/arm64-v8a/libhello.so
./bin/classes.dex : ./obj/com/example/hellojni/HelloJni.class
- $(ANDROID_HOME)/build-tools/23.0.3/dx --dex --verbose --output=$@ ./obj
+ #$(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/d8 --dex --verbose --output=$@ ./obj
+ $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/d8 $(shell find obj -name '*.class') --lib $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar --output bin
#./lib/arm64-v8a/libhello.so : ./jni/hello.o
# $(GCC) -shared $< -o $@
@@ -40,14 +49,17 @@ build : ./bin/hellojni.apk
# $(GCC) $(CXX_FLAGS) -fPIC -c $< -o $@
./src/com/example/hellojni/R.java : $(shell find ./res -type f)
- $(ANDROID_HOME)/build-tools/23.0.3/aapt package -v -f -m -S ./res -J ./src -M ./AndroidManifest.xml \
- -I $(ANDROID_HOME)/platforms/android-23/android.jar
+ $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/aapt package -v -f -m -S ./res -J ./src -M ./AndroidManifest.xml \
+ -I $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar
./obj/com/example/hellojni/HelloJni.class : ./src/com/example/hellojni/HelloJNI.java ./src/com/example/hellojni/R.java
- $(JAVA_HOME)/bin/javac -source 7 -target 7 -d ./obj -classpath $(ANDROID_HOME)/platforms/android-23/android.jar -sourcepath ./src $<
+ #$(JAVA_HOME)/bin/javac -source 7 -target 7 -d ./obj -classpath $(ANDROID_HOME)/platforms/$(PLATFORMgg)/android.jar -sourcepath ./src $<
+ #javac -source 7 -target 7 -d ./obj -classpath $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar -sourcepath ./src $<
+ javac -d ./obj -classpath $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar -sourcepath ./src $<
./ToyKey.keystore :
- $(JAVA_HOME)/bin/keytool -genkeypair -validity 1000 -dname "CN=some company,O=Android,C=JPN" -keystore $@ \
+ #$(JAVA_HOME)/bin/keytool -genkeypair -validity 1000 -dname "CN=some company,O=Android,C=JPN" -keystore $@
+ keytool -genkeypair -validity 1000 -dname "CN=some company,O=Android,C=JPN" -keystore $@ \
-storepass armena -keypass armena -alias helljniKey -keyalg RSA -v
clean:
diff --git a/apk/bin/.gitkeep b/apk/bin/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/apk/res/drawable-hdpi/ic_launcher.png b/apk/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..96a442e
Binary files /dev/null and b/apk/res/drawable-hdpi/ic_launcher.png differ
diff --git a/apk/res/drawable-ldpi/ic_launcher.png b/apk/res/drawable-ldpi/ic_launcher.png
new file mode 100644
index 0000000..9923872
Binary files /dev/null and b/apk/res/drawable-ldpi/ic_launcher.png differ
diff --git a/apk/res/drawable-mdpi/ic_launcher.png b/apk/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..359047d
Binary files /dev/null and b/apk/res/drawable-mdpi/ic_launcher.png differ
diff --git a/apk/res/drawable-xhdpi/ic_launcher.png b/apk/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..71c6d76
Binary files /dev/null and b/apk/res/drawable-xhdpi/ic_launcher.png differ
diff --git a/apk/res/layout/main.xml b/apk/res/layout/main.xml
new file mode 100644
index 0000000..611c794
--- /dev/null
+++ b/apk/res/layout/main.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/apk/res/values/strings.xml b/apk/res/values/strings.xml
new file mode 100644
index 0000000..c526073
--- /dev/null
+++ b/apk/res/values/strings.xml
@@ -0,0 +1,4 @@
+
+
+ HelloJni
+
diff --git a/apk/src/com/example/hellojni/HelloJNI.java b/apk/src/com/example/hellojni/HelloJNI.java
new file mode 100644
index 0000000..215ad5d
--- /dev/null
+++ b/apk/src/com/example/hellojni/HelloJNI.java
@@ -0,0 +1,29 @@
+package com.example.hellojni;
+
+import android.util.Log;
+import android.widget.TextView;
+import android.app.Activity;
+import android.os.Bundle;
+
+public class HelloJNI extends Activity
+{
+ /** Called when the activity is first created. */
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ TextView tv = new TextView(this);
+ tv.setText( "hallo " );
+ //stringFromJNI() );
+ // tv.setText("sup");
+ setContentView(tv);
+ }
+
+ public native String stringFromJNI();
+
+/* static {
+ Log.i("amo", "Trying to load shared library!");
+ System.loadLibrary("hellojni");
+ }
+ */
+}
diff --git a/apk/src/com/example/hellojni/R.java b/apk/src/com/example/hellojni/R.java
new file mode 100644
index 0000000..1087387
--- /dev/null
+++ b/apk/src/com/example/hellojni/R.java
@@ -0,0 +1,22 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found. It
+ * should not be modified by hand.
+ */
+
+package com.example.hellojni;
+
+public final class R {
+ public static final class attr {
+ }
+ public static final class drawable {
+ public static final int ic_launcher=0x7f020000;
+ }
+ public static final class layout {
+ public static final int main=0x7f030000;
+ }
+ public static final class string {
+ public static final int app_name=0x7f040000;
+ }
+}
diff --git a/docker-compose.yml b/docker-compose.yml
index f7c456c..baa0537 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -4,6 +4,6 @@ services:
build:
context: .
stop_grace_period: 1s
- #command: ["id; sleep infinity"]
+ command: sh -c 'id; sleep infinity'
volumes:
- ./apk:/apk