add example app source, adjust Docker/Makefile
This commit is contained in:
parent
7fd031d700
commit
8f560f0f61
10 changed files with 293 additions and 4 deletions
|
@ -28,3 +28,4 @@ RUN chown 0:0 /entrypoint.sh
|
||||||
RUN chmod 0700 /entrypoint.sh
|
RUN chmod 0700 /entrypoint.sh
|
||||||
WORKDIR /apk
|
WORKDIR /apk
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
RUN echo "$YESACCEPT" | tee yesaccept
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -1,8 +1,12 @@
|
||||||
|
|
||||||
|
|
||||||
|
all: build install
|
||||||
|
|
||||||
build:
|
build:
|
||||||
docker-compose run compile
|
docker-compose run compile
|
||||||
|
|
||||||
|
install:
|
||||||
|
adb install -r ./apk/bin/app1.apk
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm docker-compose-build.log || true
|
rm docker-compose-build.log || true
|
||||||
|
|
|
@ -8,15 +8,12 @@ CXX_FLAGS = -march=armv8-a --sysroot=$(TOOLCHAIN)/sysroot
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
all: build deploy
|
all: build
|
||||||
|
|
||||||
.PHONY : build
|
.PHONY : build
|
||||||
.PHONY : deploy
|
.PHONY : deploy
|
||||||
.PHONY : clean
|
.PHONY : clean
|
||||||
|
|
||||||
deploy :
|
|
||||||
adb install -r ./bin/hellojni.apk
|
|
||||||
|
|
||||||
build : ./bin/app1.apk
|
build : ./bin/app1.apk
|
||||||
|
|
||||||
|
|
||||||
|
|
117
apk/src/de/alexmahr/app1/App1.java
Normal file
117
apk/src/de/alexmahr/app1/App1.java
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
package de.alexmahr.app1;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.lang.Thread;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import android.text.method.ScrollingMovementMethod;
|
||||||
|
|
||||||
|
class Threads1 implements Runnable {
|
||||||
|
|
||||||
|
public String result = "alex";
|
||||||
|
|
||||||
|
public void run(){
|
||||||
|
try{
|
||||||
|
result = result.concat("step 2\n");
|
||||||
|
URL url = new URL("https://alexmahr.de/word");
|
||||||
|
result = result.concat("step 3\n");
|
||||||
|
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
|
||||||
|
result = result.concat("step 4\n");
|
||||||
|
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
|
||||||
|
result = result.concat("step 5\n");
|
||||||
|
String inputLine;
|
||||||
|
StringBuffer response = new StringBuffer();
|
||||||
|
result = result.concat("step 6\n");
|
||||||
|
|
||||||
|
while ((inputLine = in.readLine()) != null) {
|
||||||
|
result = result.concat("step 7\n");
|
||||||
|
response.append(inputLine);
|
||||||
|
}
|
||||||
|
result = result.concat("step 8\n");
|
||||||
|
in.close();
|
||||||
|
result = result.concat("step 9\n");
|
||||||
|
result = result.concat( "OK".concat(response.toString()));
|
||||||
|
urlConnection.disconnect();
|
||||||
|
} catch (Exception e){
|
||||||
|
// throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class App1 extends Activity
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
//volatile String result = "initial";
|
||||||
|
String result = "initial";
|
||||||
|
TextView tv = new TextView(this);
|
||||||
|
tv.setMovementMethod(new ScrollingMovementMethod());
|
||||||
|
Threads1 threads1 = new Threads1();
|
||||||
|
Thread thread = new Thread(threads1);
|
||||||
|
thread.start();
|
||||||
|
thread.join();
|
||||||
|
|
||||||
|
// Thread thread = new Thread(new Runnable() {
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void run() {
|
||||||
|
// try {
|
||||||
|
// result = result.concat("step 2\n");
|
||||||
|
// URL url = new URL("https://alexmahr.de/word");
|
||||||
|
// result = result.concat("step 3\n");
|
||||||
|
// HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
|
||||||
|
// result = result.concat("step 4\n");
|
||||||
|
// BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
|
||||||
|
// result = result.concat("step 5\n");
|
||||||
|
// String inputLine;
|
||||||
|
// StringBuffer response = new StringBuffer();
|
||||||
|
// result = result.concat("step 6\n");
|
||||||
|
|
||||||
|
// while ((inputLine = in.readLine()) != null) {
|
||||||
|
// result = result.concat("step 7\n");
|
||||||
|
// response.append(inputLine);
|
||||||
|
// }
|
||||||
|
// result = result.concat("step 8\n");
|
||||||
|
// in.close();
|
||||||
|
// result = result.concat("step 9\n");
|
||||||
|
// result = result.concat( "OK".concat(response.toString()));
|
||||||
|
// urlConnection.disconnect();
|
||||||
|
|
||||||
|
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// thread.start();
|
||||||
|
// thread.join();
|
||||||
|
tv.setText( result);
|
||||||
|
setContentView(tv);
|
||||||
|
try{
|
||||||
|
// TimeUnit.SECONDS.sleep(1);
|
||||||
|
} catch (Exception e){
|
||||||
|
// throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
tv.setText(result.concat(threads1.result));
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
47
apk/src/de/alexmahr/app1/App1.kt
Normal file
47
apk/src/de/alexmahr/app1/App1.kt
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.Menu
|
||||||
|
import android.view.MenuItem
|
||||||
|
import android.widget.Toast
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
|
||||||
|
class MainActivity : AppCompatActivity() {
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
setContentView(R.layout.activity_main)
|
||||||
|
|
||||||
|
// calling this activity's function to
|
||||||
|
// use ActionBar utility methods
|
||||||
|
val actionBar = supportActionBar
|
||||||
|
|
||||||
|
// providing title for the ActionBar
|
||||||
|
actionBar!!.title = " GfG | Action Bar"
|
||||||
|
|
||||||
|
// providing subtitle for the ActionBar
|
||||||
|
actionBar.subtitle = " Design a custom Action Bar"
|
||||||
|
|
||||||
|
// adding icon in the ActionBar
|
||||||
|
actionBar.setIcon(R.drawable.app_logo)
|
||||||
|
|
||||||
|
// methods to display the icon in the ActionBar
|
||||||
|
actionBar.setDisplayUseLogoEnabled(true)
|
||||||
|
actionBar.setDisplayShowHomeEnabled(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// method to inflate the options menu when
|
||||||
|
// the user opens the menu for the first time
|
||||||
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
menuInflater.inflate(R.menu.main, menu)
|
||||||
|
return super.onCreateOptionsMenu(menu)
|
||||||
|
}
|
||||||
|
|
||||||
|
// methods to control the operations that will
|
||||||
|
// happen when user clicks on the action buttons
|
||||||
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
|
when (item.itemId) {
|
||||||
|
R.id.search -> Toast.makeText(this, "Search Clicked", Toast.LENGTH_SHORT).show()
|
||||||
|
R.id.refresh -> Toast.makeText(this, "Refresh Clicked", Toast.LENGTH_SHORT).show()
|
||||||
|
R.id.copy -> Toast.makeText(this, "Copy Clicked", Toast.LENGTH_SHORT).show()
|
||||||
|
}
|
||||||
|
return super.onOptionsItemSelected(item)
|
||||||
|
}
|
||||||
|
}
|
93
apk/src/de/alexmahr/app1/App1.kt.back
Normal file
93
apk/src/de/alexmahr/app1/App1.kt.back
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
package de.alexmahr.app1;
|
||||||
|
|
||||||
|
//#import android.support.v7.app.AppCompatActivity
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.util.Log;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.app.Activity;
|
||||||
|
//import java.io.BufferedReader;
|
||||||
|
//import java.io.IOException;
|
||||||
|
//import java.io.InputStreamReader;
|
||||||
|
//import java.io.OutputStream;
|
||||||
|
//import java.net.HttpURLConnection;
|
||||||
|
//import java.net.URL;
|
||||||
|
//import java.lang.Thread;
|
||||||
|
//import java.util.concurrent.TimeUnit;
|
||||||
|
//import android.text.method.ScrollingMovementMethod;
|
||||||
|
|
||||||
|
public class App1 extends Activity{
|
||||||
|
{
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
val tv = TextView(this);
|
||||||
|
tv.setText( "result");
|
||||||
|
setContentView(tv);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// @Override
|
||||||
|
// public void onCreate(Bundle savedInstanceState)
|
||||||
|
// {
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// super.onCreate(savedInstanceState);
|
||||||
|
// //volatile String result = "initial";
|
||||||
|
// String result = "initial";
|
||||||
|
// TextView tv = new TextView(this);
|
||||||
|
// tv.setMovementMethod(new ScrollingMovementMethod());
|
||||||
|
// Threads1 threads1 = new Threads1();
|
||||||
|
// Thread thread = new Thread(threads1);
|
||||||
|
// thread.start();
|
||||||
|
// thread.join();
|
||||||
|
//
|
||||||
|
// // Thread thread = new Thread(new Runnable() {
|
||||||
|
//
|
||||||
|
// // @Override
|
||||||
|
// // public void run() {
|
||||||
|
// // try {
|
||||||
|
// // result = result.concat("step 2\n");
|
||||||
|
// // URL url = new URL("https://alexmahr.de/word");
|
||||||
|
// // result = result.concat("step 3\n");
|
||||||
|
// // HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
|
||||||
|
// // result = result.concat("step 4\n");
|
||||||
|
// // BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
|
||||||
|
// // result = result.concat("step 5\n");
|
||||||
|
// // String inputLine;
|
||||||
|
// // StringBuffer response = new StringBuffer();
|
||||||
|
// // result = result.concat("step 6\n");
|
||||||
|
//
|
||||||
|
// // while ((inputLine = in.readLine()) != null) {
|
||||||
|
// // result = result.concat("step 7\n");
|
||||||
|
// // response.append(inputLine);
|
||||||
|
// // }
|
||||||
|
// // result = result.concat("step 8\n");
|
||||||
|
// // in.close();
|
||||||
|
// // result = result.concat("step 9\n");
|
||||||
|
// // result = result.concat( "OK".concat(response.toString()));
|
||||||
|
// // urlConnection.disconnect();
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// // } catch (Exception e) {
|
||||||
|
// // e.printStackTrace();
|
||||||
|
// // }
|
||||||
|
// // }
|
||||||
|
// // });
|
||||||
|
// // thread.start();
|
||||||
|
// // thread.join();
|
||||||
|
// tv.setText( result);
|
||||||
|
// setContentView(tv);
|
||||||
|
// try{
|
||||||
|
// // TimeUnit.SECONDS.sleep(1);
|
||||||
|
// } catch (Exception e){
|
||||||
|
//// throw new RuntimeException(e);
|
||||||
|
// }
|
||||||
|
// tv.setText(result.concat(threads1.result));
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// throw new RuntimeException(e);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//}
|
22
apk/src/de/alexmahr/app1/R.java
Normal file
22
apk/src/de/alexmahr/app1/R.java
Normal file
|
@ -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 de.alexmahr.app1;
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
BIN
apk/src/main
Executable file
BIN
apk/src/main
Executable file
Binary file not shown.
6
apk/src/main.c
Normal file
6
apk/src/main.c
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#include<stdio.h>
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
printf("hallo");
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -2,6 +2,8 @@ services:
|
||||||
compile:
|
compile:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
|
args:
|
||||||
|
YESACCEPT: ${YESACCEPT}
|
||||||
stop_grace_period: 1s
|
stop_grace_period: 1s
|
||||||
volumes:
|
volumes:
|
||||||
- ./apk:/apk
|
- ./apk:/apk
|
||||||
|
|
Loading…
Add table
Reference in a new issue