Hi,

The question would be, why do you want to do it? I think it might be
possible, but probably nobody has ever tested it. Flink is a distributed
system, so running it on an Android phone doesn't make much sense.

I would suggest you first make your app/example work outside of Android. To
make sure that dependencies and project setup is correct. Keep in mind that
you also need to start somehow a Flink cluster. I would expect that
starting a minicluster with a local execution environment
(StreamExecutionEnvironment.createLocalEnvironment(...) instead of
StreamExecutionEnvironment.getExecutionEnvironment()) would be the way to
go.  Unless you want to run a distributed cluster across multiple Android
phones, but in that case I really don't know why you would like to do it :)

Also, Android has its own JDK, which we have never tested. It might cause
some problems.

Piotrek

wt., 2 mar 2021 o 16:23 Alexander Borgschulze <
alexander.borgschu...@stud.uni-regensburg.de> napisaƂ(a):

> I was trying to run Apache Flink within an Android App. I just want to run a 
> minimum working example, like this:
>
> @Override
> protected void onCreate(Bundle savedInstanceState) {
>     super.onCreate(savedInstanceState);
>     setContentView(R.layout.activity_main);
>
>     runFlinkExample();
> }
>
> private void runFlinkExample() {
>     StreamExecutionEnvironment env = 
> StreamExecutionEnvironment.getExecutionEnvironment();
>     DataStream<Integer> stream = env.fromCollection(Arrays.asList(1, 2, 3, 4, 
> 5));
>     stream.print();
>     try {
>         env.execute();
>     } catch (Exception e) {
>         e.printStackTrace();
>     }
> }
>
>
> These are my two .gradle files:
>
>
> *build.gradle (Module)*
>
>
> plugins {
>     id 'com.android.application'
> }
>
> android {
>     compileSdkVersion 30
>     buildToolsVersion "30.0.3"
>
>     defaultConfig {
>         applicationId "com.example.flink"
>         minSdkVersion 26
>         targetSdkVersion 30
>         versionCode 1
>         versionName "1.0"
>
>         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
>     }
>
>     buildTypes {
>         release {
>             minifyEnabled false
>             proguardFiles 
> getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
>         }
>     }
>     compileOptions {
>         sourceCompatibility JavaVersion.VERSION_1_8
>         targetCompatibility JavaVersion.VERSION_1_8
>     }
>
>     packagingOptions {
>         exclude 'META-INF/DEPENDENCIES'
>         exclude 'reference.conf'
>     }
> }
>
> dependencies {
>
>     implementation 'androidx.appcompat:appcompat:1.2.0'
>     implementation 'com.google.android.material:material:1.3.0'
>     implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
>     testImplementation 'junit:junit:4.+'
>     androidTestImplementation 'androidx.test.ext:junit:1.1.2'
>     androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
>
>     // Flink
>     implementation 'org.apache.flink:flink-streaming-java_2.12:1.12.1'
>     implementation 'org.apache.flink:flink-clients_2.12:1.12.1'
> }
>
>
> *build.gradle (Project)*
>
> // Top-level build file where you can add configuration options common to all 
> sub-projects/modules.
> buildscript {
>     repositories {
>         google()
>         jcenter()
>     }
>     dependencies {
>         classpath "com.android.tools.build:gradle:4.1.2"
>
>         // NOTE: Do not place your application dependencies here; they belong
>         // in the individual module build.gradle files
>     }
> }
>
> allprojects {
>     repositories {
>         google()
>         jcenter()
>     }
> }
>
> task clean(type: Delete) {
>     delete rootProject.buildDir
> }
>
>
>
> The first problem is, that I get the following Error:
> Caused by: java.lang.ClassNotFoundException: Didn't find class 
> "org.apache.flink.streaming.api.environment.StreamExecutionEnvironment" on 
> path: DexPathList[[zip file "/data/app/~~DbT_CZ7AhLED2xZgLBk ....
>
>
>
> In cases there this error doesn't appear, I get Akka-Actor errors, because
> I must exclude 'reference.conf', otherwise the code wouldn't compile.
> However, this leads to more exceptions, e.g. missing akka-version.
>
> So my general question is: Is it possible to run Flink within an
> Android-App? Or is this not possible (recommended)? Perhaps someone knows
> how to modfiy my gradle files (or something else) to run my example. Or
> perhaps someone already has successfully used Flink in Android.
>

Reply via email to