diff --git a/metadata/com.libopenmw.openmw.yml b/metadata/com.libopenmw.openmw.yml new file mode 100644 index 0000000000..06fdefc147 --- /dev/null +++ b/metadata/com.libopenmw.openmw.yml @@ -0,0 +1,61 @@ +Categories: + - Games +License: GPL-3.0-only +WebSite: https://openmw.org/ +SourceCode: https://github.com/OpenMW/android-port +IssueTracker: https://github.com/OpenMW/android-port/issues + +Summary: A game engine compatible with TES3:Morrowind data files +Description: |- + OpenMW is an open-source, free-software game engine that reimplements the one powering Bethesda Softworks' 2002 open-world role-playing game Morrowind. + + This is an OpenMW port for Android, adapted to be played with touchscreen or remote controller. To play it, you need to use your own, legally acquired Morrowind data files. + + Note: This is the "official" version build from the OpenMW Android repo where the releases might follow the main OpenMW release cycle. + +RepoType: git +Repo: https://github.com/OpenMW/android-port.git + +Builds: + - versionName: 0.46.0 + versionCode: 8 + commit: 4552b111043665f5501bcfb0173c0e09bf19447a + timeout: 20000 + sudo: + - apt update || apt update + - apt install -y cmake doxygen g++ pkgconf wget + patch: + - build-gradle.patch + - androidmanifest.patch + - mainactivity.patch + gradle: + - yes + output: app/build/outputs/apk/release/app-release-unsigned.apk + prebuild: + - sed -i -e '/Unzip/,+5d' buildscripts/include/setup-ndk.sh + - sed -i -e 's/\ -Wl,-plugin-opt=-emulated-tls//' -e '/download-ndk/d' -e '/debugging\ + life/,+19d' buildscripts/build.sh + - mkdir -p buildscripts/toolchain/ndk + - cp -r $$NDK$$/* buildscripts/toolchain/ndk/ + - ./buildscripts/build.sh --arch arm --lto + - ./buildscripts/build.sh --arch arm64 --lto + - ./buildscripts/build.sh --arch x86 --lto + - ./buildscripts/build.sh --arch x86_64 --lto + - rm -fr ./buildscripts/build/* + - rm -fr ./buildscripts/prefix/* + - rm -fr ./buildscripts/symbols/* + - rm -fr ./buildscripts/toolchain/* + scanignore: + - app/src/main/assets + - app/src/main/jniLibs + ndk: r18b + +MaintainerNotes: |- + - we patch Crashlytics away in build-gradle, androidmanifest and mainactivity + - we use prebuild else fdroid scanner will detect the built libs as binaries on the second pass before running build, and we can't scanignore them (at start) since they don't exist yet, see https://gitlab.com/fdroid/fdroidserver/issues/635 + - we remove the buildtools and intermediary artefacts (several gigabytes) else they'll get pulled in the source tarball + +AutoUpdateMode: None +UpdateCheckMode: None +CurrentVersion: 0.46.0 +CurrentVersionCode: 8 diff --git a/metadata/com.libopenmw.openmw/androidmanifest.patch b/metadata/com.libopenmw.openmw/androidmanifest.patch new file mode 100644 index 0000000000..608d209491 --- /dev/null +++ b/metadata/com.libopenmw.openmw/androidmanifest.patch @@ -0,0 +1,13 @@ +--- a/app/src/main/AndroidManifest.xml 2019-05-05 04:27:18.000000000 +0300 ++++ b/app/src/main/AndroidManifest.xml 2019-05-05 04:30:09.270861861 +0300 +@@ -49,10 +49,5 @@ + + + +- +- +- + + diff --git a/metadata/com.libopenmw.openmw/build-gradle.patch b/metadata/com.libopenmw.openmw/build-gradle.patch new file mode 100644 index 0000000000..2dfc3ef0a8 --- /dev/null +++ b/metadata/com.libopenmw.openmw/build-gradle.patch @@ -0,0 +1,37 @@ +--- a/app/build.gradle 2019-05-05 04:27:18.000000000 +0300 ++++ b/app/build.gradle 2019-05-05 04:27:58.605059817 +0300 +@@ -1,14 +1,4 @@ +-buildscript { +- repositories { +- maven { url 'https://maven.fabric.io/public' } +- } +- +- dependencies { +- classpath 'io.fabric.tools:gradle:1.+' +- } +-} + apply plugin: 'com.android.application' +-apply plugin: 'io.fabric' + apply plugin: 'kotlin-android' + + ext { +@@ -59,19 +49,10 @@ + maven { + url "https://jitpack.io" + } +- maven { url 'https://maven.fabric.io/public' } + } + + dependencies { + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.android.support:design:28.0.0' + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +- implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9' +- implementation 'com.crashlytics.sdk.android:crashlytics-ndk:2.0.5' +-} +- +-crashlytics { +- enableNdk true +- androidNdkOut '../buildscripts/symbols' +- androidNdkLibsOut 'src/main/jniLibs' + } diff --git a/metadata/com.libopenmw.openmw/mainactivity.patch b/metadata/com.libopenmw.openmw/mainactivity.patch new file mode 100644 index 0000000000..f4af9b5dcf --- /dev/null +++ b/metadata/com.libopenmw.openmw/mainactivity.patch @@ -0,0 +1,46 @@ +--- a/app/src/main/java/ui/activity/MainActivity.java 2019-05-05 04:27:18.000000000 +0300 ++++ b/app/src/main/java/ui/activity/MainActivity.java 2019-05-05 04:29:28.782248394 +0300 +@@ -17,12 +17,8 @@ + import android.view.View; + import android.widget.Toast; + +-import com.crashlytics.android.Crashlytics; +-import com.crashlytics.android.ndk.CrashlyticsNdk; + import com.libopenmw.openmw.R; + +-import io.fabric.sdk.android.Fabric; +- + import java.io.BufferedReader; + import java.io.File; + import java.io.FileInputStream; +@@ -50,7 +46,6 @@ + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); +- Fabric.with(this, new Crashlytics(), new CrashlyticsNdk()); + PermissionHelper.getWriteExternalStoragePermission(MainActivity.this); + setContentView(R.layout.main); + prefs = PreferenceManager.getDefaultSharedPreferences(this); +@@ -79,14 +74,6 @@ + if (openmwCfg.exists()) { + BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(openmwCfg))); + String line; +- Crashlytics.log("openmw.cfg"); +- Crashlytics.log("--------------------------------------------------------------------------------"); +- while ((line = reader.readLine()) != null) { +- // Don't log fallback lines, they are mostly useless +- if (!line.contains("fallback=")) +- Crashlytics.log(line); +- } +- Crashlytics.log("--------------------------------------------------------------------------------"); + } + } catch (Exception e) { + // not a big deal if we can't log the contents +@@ -193,7 +180,6 @@ + }); + } catch (IOException e) { + Log.e(TAG, "Failed to write config files.", e); +- Crashlytics.logException(e); + } + }); + th.start();