Android build fixes #2263
|
@ -22,7 +22,7 @@ RUN apt-get -y update -qq \
|
||||||
RUN apt-get -y install -qq --no-install-recommends openjdk-17-jdk \
|
RUN apt-get -y install -qq --no-install-recommends openjdk-17-jdk \
|
||||||
&& apt-get -y autoremove
|
&& apt-get -y autoremove
|
||||||
|
|
||||||
RUN pip install pip install buildozer cython virtualenv
|
RUN pip install buildozer cython virtualenv
|
||||||
|
|
||||||
|
|
||||||
ENV ANDROID_NDK_HOME="${ANDROID_HOME}/android-ndk"
|
ENV ANDROID_NDK_HOME="${ANDROID_HOME}/android-ndk"
|
||||||
|
|
|
@ -1,9 +1,32 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
export LC_ALL=en_US.UTF-8
|
export LC_ALL=en_US.UTF-8
|
||||||
export LANG=en_US.UTF-8
|
export LANG=en_US.UTF-8
|
||||||
|
|
||||||
|
# buildozer OOM workaround
|
||||||
|
mkdir -p ~/.gradle
|
||||||
|
echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8" \
|
||||||
|
> ~/.gradle/gradle.properties
|
||||||
|
|
||||||
|
# workaround for symlink
|
||||||
|
rm -rf src/pybitmessage
|
||||||
|
mkdir -p src/pybitmessage
|
||||||
|
cp src/*.py src/pybitmessage
|
||||||
|
cp -r src/bitmessagekivy src/backend src/mockbm src/pybitmessage
|
||||||
|
|
||||||
pushd packages/android
|
pushd packages/android
|
||||||
buildozer android debug || exit $?
|
|
||||||
|
BUILDMODE=debug
|
||||||
|
|
||||||
|
if [ "$BUILDBOT_JOBNAME" = "android" -a \
|
||||||
|
"$BUILDBOT_REPOSITORY" = "https://github.com/Bitmessage/PyBitmessage" -a \
|
||||||
|
"$BUILDBOT_BRANCH" = "v0.6" ]; then
|
||||||
|
sed -e 's/android.release_artifact *=.*/release_artifact = aab/' -i "" buildozer.spec
|
||||||
|
BUILDMODE=release
|
||||||
|
fi
|
||||||
|
|
||||||
|
buildozer android $BUILDMODE || exit $?
|
||||||
popd
|
popd
|
||||||
|
|
||||||
mkdir -p ../out
|
mkdir -p ../out
|
||||||
cp packages/android/bin/*.apk ../out
|
RELEASE_ARTIFACT=$(grep release_artifact packages/android/buildozer.spec |cut -d= -f2|tr -Cd 'a-z')
|
||||||
|
cp packages/android/bin/*.${RELEASE_ARTIFACT} ../out
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
RELEASE_ARTIFACT=$(grep release_artifact packages/android/buildozer.spec |cut -d= -f2|tr -Cd 'a-z')
|
||||||
|
|
||||||
|
if [ $RELEASE_ARTIFACT = "aab" ]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
unzip -p packages/android/bin/*.apk assets/private.tar \
|
unzip -p packages/android/bin/*.apk assets/private.tar \
|
||||||
| tar --list -z > package.list
|
| tar --list -z > package.list
|
||||||
cat package.list
|
cat package.list
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
[app]
|
[app]
|
||||||
|
|
||||||
# (str) Title of your application
|
# (str) Title of your application
|
||||||
title = mockone
|
title = PyBitmessage Mock
|
||||||
|
|
||||||
# (str) Package name
|
# (str) Package name
|
||||||
package.name = mock
|
package.name = pybitmessagemock
|
||||||
|
|
||||||
# (str) Package domain (needed for android/ios packaging)
|
# (str) Package domain (needed for android/ios packaging)
|
||||||
package.domain = org.mock
|
package.domain = at.bitmessage
|
||||||
|
|
||||||
# (str) Source code where the main.py live
|
# (str) Source code where the main.py live
|
||||||
source.dir = ../../src
|
source.dir = ../../src
|
||||||
|
|
||||||
# (list) Source files to include (let empty to include all the files)
|
# (list) Source files to include (let empty to include all the files)
|
||||||
source.include_exts = py,png,jpg,kv,atlas,tflite,sql
|
source.include_exts = py,png,jpg,kv,atlas,tflite,sql,json
|
||||||
|
|
||||||
# (list) List of inclusions using pattern matching
|
# (list) List of inclusions using pattern matching
|
||||||
#source.include_patterns = assets/*,images/*.png
|
#source.include_patterns = assets/*,images/*.png
|
||||||
|
@ -28,7 +28,7 @@ source.include_exts = py,png,jpg,kv,atlas,tflite,sql
|
||||||
#source.exclude_patterns = license,images/*/*.jpg
|
#source.exclude_patterns = license,images/*/*.jpg
|
||||||
|
|
||||||
# (str) Application versioning (method 1)
|
# (str) Application versioning (method 1)
|
||||||
version = 0.1
|
version = 0.1.1
|
||||||
|
|
||||||
# (str) Application versioning (method 2)
|
# (str) Application versioning (method 2)
|
||||||
# version.regex = __version__ = ['"](.*)['"]
|
# version.regex = __version__ = ['"](.*)['"]
|
||||||
|
@ -36,7 +36,7 @@ version = 0.1
|
||||||
|
|
||||||
# (list) Application requirements
|
# (list) Application requirements
|
||||||
# comma separated e.g. requirements = sqlite3,kivy
|
# comma separated e.g. requirements = sqlite3,kivy
|
||||||
requirements = python3,kivy
|
requirements = python3,kivy,sqlite3,kivymd==1.0.2,Pillow,opencv,kivy-garden.qrcode,qrcode,typing_extensions,libpng
|
||||||
|
|
||||||
# (str) Custom source folders for requirements
|
# (str) Custom source folders for requirements
|
||||||
# Sets custom source for any requirements with recipes
|
# Sets custom source for any requirements with recipes
|
||||||
|
@ -92,7 +92,7 @@ fullscreen = 0
|
||||||
|
|
||||||
# (int) Android API to use (targetSdkVersion AND compileSdkVersion)
|
# (int) Android API to use (targetSdkVersion AND compileSdkVersion)
|
||||||
# note: when changing, Dockerfile also needs to be changed to install corresponding build tools
|
# note: when changing, Dockerfile also needs to be changed to install corresponding build tools
|
||||||
android.api = 28
|
android.api = 33
|
||||||
|
|
||||||
# (int) Minimum API required. You will need to set the android.ndk_api to be as low as this value.
|
# (int) Minimum API required. You will need to set the android.ndk_api to be as low as this value.
|
||||||
android.minapi = 21
|
android.minapi = 21
|
||||||
|
@ -243,6 +243,8 @@ android.allow_backup = True
|
||||||
# Usage example : android.manifest_placeholders = [myCustomUrl:\"org.kivy.customurl\"]
|
# Usage example : android.manifest_placeholders = [myCustomUrl:\"org.kivy.customurl\"]
|
||||||
# android.manifest_placeholders = [:]
|
# android.manifest_placeholders = [:]
|
||||||
|
|
||||||
|
android.release_artifact = apk
|
||||||
|
|
||||||
#
|
#
|
||||||
# Python for android (p4a) specific
|
# Python for android (p4a) specific
|
||||||
#
|
#
|
||||||
|
|
13
src/main-android-live.py
Normal file
13
src/main-android-live.py
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
"""This module is for thread start."""
|
||||||
|
import state
|
||||||
|
import sys
|
||||||
|
from bitmessagemain import main
|
||||||
|
from termcolor import colored
|
||||||
|
print(colored('kivy is not supported at the moment for this version..', 'red'))
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
state.kivy = True
|
||||||
|
print("Kivy Loading......")
|
||||||
|
main()
|
36
src/main.py
36
src/main.py
|
@ -1,13 +1,31 @@
|
||||||
"""This module is for thread start."""
|
# pylint: disable=unused-import, wrong-import-position, ungrouped-imports
|
||||||
|
# flake8: noqa:E401, E402
|
||||||
|
|
||||||
|
"""Mock kivy app with mock threads."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
from kivy.config import Config
|
||||||
|
from mockbm import multiqueue
|
||||||
import state
|
import state
|
||||||
import sys
|
|
||||||
from bitmessagemain import main
|
from mockbm.class_addressGenerator import FakeAddressGenerator # noqa:E402
|
||||||
from termcolor import colored
|
from bitmessagekivy.mpybit import NavigateApp # noqa:E402
|
||||||
print(colored('kivy is not supported at the moment for this version..', 'red'))
|
from mockbm import network # noqa:E402
|
||||||
sys.exit()
|
|
||||||
|
stats = network.stats
|
||||||
|
objectracker = network.objectracker
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
def main():
|
||||||
state.kivy = True
|
"""main method for starting threads"""
|
||||||
print("Kivy Loading......")
|
addressGeneratorThread = FakeAddressGenerator()
|
||||||
|
addressGeneratorThread.daemon = True
|
||||||
|
addressGeneratorThread.start()
|
||||||
|
state.kivyapp = NavigateApp()
|
||||||
|
state.kivyapp.run()
|
||||||
|
addressGeneratorThread.stopThread()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
os.environ['INSTALL_TESTS'] = "True"
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -805,6 +805,10 @@ def loadOpenSSL():
|
||||||
'libcrypto.dylib', '/usr/local/opt/openssl/lib/libcrypto.dylib'])
|
'libcrypto.dylib', '/usr/local/opt/openssl/lib/libcrypto.dylib'])
|
||||||
elif 'win32' in sys.platform or 'win64' in sys.platform:
|
elif 'win32' in sys.platform or 'win64' in sys.platform:
|
||||||
libdir.append('libeay32.dll')
|
libdir.append('libeay32.dll')
|
||||||
|
# kivy
|
||||||
|
elif 'ANDROID_ARGUMENT' in environ:
|
||||||
|
libdir.append('libcrypto1.1.so')
|
||||||
|
libdir.append('libssl1.1.so')
|
||||||
else:
|
else:
|
||||||
libdir.append('libcrypto.so')
|
libdir.append('libcrypto.so')
|
||||||
libdir.append('libssl.so')
|
libdir.append('libssl.so')
|
||||||
|
|
Reference in New Issue
Block a user