https://bugs.documentfoundation.org/show_bug.cgi?id=156623

--- Comment #4 from eric li <[email protected]> ---
(In reply to Michael Weghorn from comment #1)
> Since you've set the "Version" field to 7.4.7.2: Is that the git tag/tarball
> from which you're building?
> 
> What happens when you use the version from F-Droid instead?
> https://f-droid.org/en/packages/org.documentfoundation.libreoffice/
> 
> Does it also crash when you build with current git master or the
> libreoffice-7-6 branch?

the build.gradle file in source is belowed:
apply plugin: 'com.android.application'
// buildhost settings - paths and the like
apply from: 'liboSettings.gradle'

allprojects {
    repositories {
        mavenCentral()
        maven {
            url "https://ipv6.repo1.maven.org/maven2";
        }
        google()
    }
}
//build-time dependencies - android plugin for gradle
buildscript {
    repositories {
        mavenCentral()
        maven {
            url "https://ipv6.repo1.maven.org/maven2";
        }
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.0.2'
    }
}

// compile-time dependencies
dependencies {
    implementation fileTree(dir: "${liboInstdir}/${liboUREJavaFolder}",
include: [
            "java_uno.jar",
            "libreoffice.jar",
            "unoloader.jar"
    ])
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation "androidx.multidex:multidex:2.0.1"
}

android {
    namespace 'org.libreoffice'
    compileSdkVersion 33
    // uses non-conventional source layout, so need to reconfigure accordingly
    // ToDo move to conventional layout, so stuff can be stripped down.

    sourceSets {
        main.manifest.srcFile 'AndroidManifest.xml'
        main.assets.srcDirs = ['assets']
        main.res.srcDirs = ['res', 'res_generated']
        main.java.srcDirs = ['../Bootstrap/src', 'src/java']
        main.jniLibs.srcDirs = ["${liboJniLibsdir}"]
       // main.jniLibs.srcDirs =
['/home/eric/libreoffice/android/jniLibs/armeabi-v7a/']
        // the configuration data that might be stripped or not
        fullUI.assets.srcDirs 'assets_fullUI'
        strippedUI.assets.srcDirs 'assets_strippedUI'
        strippedUIEditing.assets.srcDirs 'assets_strippedUI'
    }
    defaultConfig {
        // minSdkVersion is set in liboSettings.gradle
        targetSdkVersion 33
        // multidex needed when > 65,536 methods referenced with minSdKVersion
< 21
        // s. https://developer.android.com/studio/build/multidex
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
        ndk {
            abiFilters "armeabi-v7a"
        }
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_STL=none"
                cppFlags ""
            }
        }
    }
    buildTypes {
        debug {
            // make android studio happy...
            jniDebuggable true
            // would work just fine with external, but setting emulator up is a
little more work
            manifestPlaceholders = [installLocation: "auto"]
        }
        release {
            manifestPlaceholders = [installLocation: "preferExternal"]
        }
    }

    flavorDimensions "default"
    productFlavors {
        strippedUI {
            dimension "default"
            buildConfigField 'boolean', 'ALLOW_EDITING', 'false'
        }
        strippedUIEditing {
            dimension "default"
            buildConfigField 'boolean', 'ALLOW_EDITING', 'true'
            versionNameSuffix "-editing"
        }
        fullUI.dimension "default"
    }
    lint {
        // don't error-out on missing translations
        warning 'MissingTranslation'
    }
}

/* remark inherited from makefile:
Then "assets". Let the directory structure under assets mimic
that under solver for now.

Please note that I have no idea what all of this is really necessary and for
much of this stuff being copied, no idea whether it makes any sense at all.
Much of this is copy-pasted from android/qa/sc/Makefile (where a couple of
unit tests for sc are built, and those do seem to mostly work) and
android/qa/desktop/Makefile (mmeeks's desktop demo, also works to some
extent)
 */

// Assets that are unpacked at run-time into the app's data directory. These
// are files read by non-LO code, fontconfig and freetype for now, that doesn't
// understand "/assets" paths.
task copyUnpackAssets(type: Copy) {
    description "copies assets that need to be extracted on the device"
    into 'assets/unpack'
    into('program') {
        from("${liboInstdir}/${liboEtcFolder}/types") {
            includes = [
                    "offapi.rdb",
                    "oovbaapi.rdb"
            ]
        }
        from("${liboInstdir}/${liboUreMiscFolder}") {
            includes = ["types.rdb"]
            rename 'types.rdb', 'udkapi.rdb'
        }
    }
    into('user/fonts') {
        from "${liboInstdir}/share/fonts/truetype"
        // Note: restrict list of fonts due to size considerations - no
technical reason anymore
        // ToDo: fonts would be good candidate for using Expansion Files
instead
        includes = [
                "Liberation*.ttf",
                "Caladea-*.ttf",
                "Carlito-*.ttf",
                "Gen*.ttf",
                "opens___.ttf"
        ]
    }
    into('etc/fonts') {
        from "./"
        includes = ['fonts.conf']
        filter {
            String line ->
                line.replaceAll(
                        '@@APPLICATION_ID@@', new
String("${android.defaultConfig.applicationId}")
                )
        }
    }
}

task copyAssets(type: Copy) {
    description "copies assets that can be accessed within the installed apk"
    into 'assets'

    // include icons, Impress styles and required .ui files
    into ('share') {
        into ('config') {
            from ("${liboInstdir}/share/config")
            includes = ['images_**.zip',
                        '**/simpress/**.xml',
                        '**/annotation.ui',
                        '**/hfmenubutton.ui',
                        '**/inforeadonlydialog.ui',
                        '**/pbmenubutton.ui',
                        '**/scrollbars.ui',
                        '**/tabbuttons.ui',
                        '**/tabviewbar.ui'
                        ]
        }
    }

    into('program') {
        from "${liboInstdir}/program"
        includes = ['services.rdb', 'services/services.rdb']

        into('resource') {
            from "${liboInstdir}/${liboSharedResFolder}"
            includes = ['*en-US.res']
        }
    }
    into('share') {
        from("${liboInstdir}/share") {
            // Filter data is needed by e.g. the drawingML preset shape import.
            includes = ['registry/**', 'filter/**']
            // those two get processed by mobile-config.py
            excludes = ['registry/main.xcd', 'registry/res/registry_en-US.xcd']
        }
        // separate data files for Chinese and Japanese
        from("${liboWorkdir}/CustomTarget/i18npool/breakiterator/") {
            include '*.data'
        }
    }
}

task copyAppResources(type: Copy) {
    description "copies documents to make them available as app resources"
    into 'res_generated/raw'
    from("${liboInstdir}") {
        includes = ["LICENSE", "NOTICE"]
        rename "LICENSE", "license.txt"
        rename "NOTICE", "notice.txt"
    }
    from("${liboExampleDocument}") {
        rename ".*", "example.odt"
    }
}

task createFullConfig(type: Copy) {
    // grab dir to clear whole hierarchy on clean target
    outputs.dir "assets_fullUI"
    into 'assets_fullUI/share/config/soffice.cfg'
    from "${liboInstdir}/share/config/soffice.cfg"
}

task createStrippedConfig {
    def preserveDir = file("assets_strippedUI/share/config/soffice.cfg/empty")
    outputs.dir "assets_strippedUI"
    outputs.dir "assets_strippedUI/share/registry/res"
    outputs.file preserveDir

    doLast {
        file('assets_strippedUI/share/registry/res').mkdirs()
        file("assets_strippedUI/share/config/soffice.cfg").mkdirs()
        // just empty file
        preserveDir.text = ""
    }
}


task createStrippedConfigMain(type: Exec) {
    dependsOn 'createStrippedConfig'
    inputs.files "${liboInstdir}/share/registry/main.xcd",
"${liboSrcRoot}/android/mobile-config.py"
    outputs.file "assets_strippedUI/share/registry/main.xcd"
    executable "${liboSrcRoot}/android/mobile-config.py"
    args = ["${liboInstdir}/share/registry/main.xcd",
"assets_strippedUI/share/registry/main.xcd"]
}

task createStrippedConfigRegistry(type: Exec) {
    dependsOn 'createStrippedConfig'
    inputs.files "${liboInstdir}/share/registry/res/registry_en-US.xcd",
"${liboSrcRoot}/android/mobile-config.py"
    outputs.file "assets_strippedUI/share/registry/res/registry_en-US.xcd"
    executable "${liboSrcRoot}/android/mobile-config.py"
    args = ["${liboInstdir}/share/registry/res/registry_en-US.xcd",
"assets_strippedUI/share/registry/res/registry_en-US.xcd"]
    doFirst {
        file('assets_strippedUI/share/registry/res').mkdirs()
    }
}

task createRCfiles {
    inputs.file "liboSettings.gradle"
    dependsOn copyUnpackAssets, copyAssets
    def sofficerc     = file('assets/unpack/program/sofficerc')
    def fundamentalrc = file('assets/program/fundamentalrc')
    def bootstraprc   = file('assets/program/bootstraprc')
    def unorc         = file('assets/program/unorc')
    def versionrc     = file('assets/program/versionrc')

    outputs.files sofficerc, fundamentalrc, unorc, bootstraprc, versionrc

    doLast {
        sofficerc.text = '''\
            [Bootstrap]
            Logo=1
            NativeProgress=1
            URE_BOOTSTRAP=file:///assets/program/fundamentalrc
            HOME=$APP_DATA_DIR/cache
            OSL_SOCKET_PATH=$APP_DATA_DIR/cache
            '''.stripIndent()

        fundamentalrc.text =  '''\
            [Bootstrap]
            LO_LIB_DIR=file://$APP_DATA_DIR/lib/
            BRAND_BASE_DIR=file:///assets
            BRAND_SHARE_SUBDIR=share
            CONFIGURATION_LAYERS=xcsxcu:${BRAND_BASE_DIR}/share/registry
res:${BRAND_BASE_DIR}/share/registry
           
URE_BIN_DIR=file:///assets/ure/bin/dir/nothing-here/we-can/exec-anyway
            '''.stripIndent()

        bootstraprc.text =  '''\
            [Bootstrap]
            InstallMode=<installmode>
            ProductKey=LibreOffice '''+
"${liboVersionMajor}.${liboVersionMinor}" + '''
            UserInstallation=file://$APP_DATA_DIR
            '''.stripIndent()

        unorc.text = '''\
            [Bootstrap]
            URE_INTERNAL_LIB_DIR=file://$APP_DATA_DIR/lib/
            UNO_TYPES=file://$APP_DATA_DIR/program/udkapi.rdb
file://$APP_DATA_DIR/program/offapi.rdb
file://$APP_DATA_DIR/program/oovbaapi.rdb
            UNO_SERVICES=file:///assets/program/services.rdb
file:///assets/program/services/services.rdb
            '''.stripIndent()

        versionrc.text = '''\
            [Version]
            AllLanguages=en-US
            buildid=''' + "${liboGitFullCommit}" + '''
            ReferenceOOoMajorMinor=4.1
            '''.stripIndent()
    }
}

// creating the UI stuff is cheap, don't bother only applying it for the
flavor...
preBuild.dependsOn 'createRCfiles',
        'createStrippedConfigMain',
        'createStrippedConfigRegistry',
        'createFullConfig',
        'copyAppResources'

clean.dependsOn 'cleanCopyAssets',
        'cleanCreateStrippedConfig',
        'cleanCreateFullConfig'

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to