{"id":13405939,"url":"https://github.com/VoiSmart/pjsip-android-builder","last_synced_at":"2025-03-14T10:32:08.279Z","repository":{"id":49870155,"uuid":"43244860","full_name":"VoiSmart/pjsip-android-builder","owner":"VoiSmart","description":"Complete Android build environment for PJSIP with OpenSSL, OpenH264, Opus and G.729","archived":false,"fork":false,"pushed_at":"2024-02-24T15:30:16.000Z","size":1827,"stargazers_count":220,"open_issues_count":6,"forks_count":137,"subscribers_count":22,"default_branch":"master","last_synced_at":"2024-07-31T19:48:25.081Z","etag":null,"topics":["android","pjsip"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VoiSmart.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-09-27T11:57:17.000Z","updated_at":"2024-06-30T16:23:22.000Z","dependencies_parsed_at":"2023-11-28T11:44:06.289Z","dependency_job_id":"2f25c4c3-7de8-4bd1-9f8c-a1d42d86be24","html_url":"https://github.com/VoiSmart/pjsip-android-builder","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VoiSmart%2Fpjsip-android-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VoiSmart%2Fpjsip-android-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VoiSmart%2Fpjsip-android-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VoiSmart%2Fpjsip-android-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VoiSmart","download_url":"https://codeload.github.com/VoiSmart/pjsip-android-builder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221458265,"owners_count":16825278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","pjsip"],"created_at":"2024-07-30T19:02:16.536Z","updated_at":"2025-03-14T10:32:08.270Z","avatar_url":"https://github.com/VoiSmart.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# PJSIP Android Builder\n\nEasily build PJSIP with: OpenSSL, OpenH264, Opus and G.729 (without Intel IPP) for Android.\n\n## Purpose\n\nI needed an easily replicable build system to build PJSIP \u003chttp://www.pjsip.org/\u003e native library with NDK for Android. So, I created an Ubuntu docker container (20.04.4 LTS) and wrote some scripts to download, install all the requirements needed to make it a complete build environment and some automated build scripts.\nIf you want to contribute, your help is really appreciated :)\n\n## Support - PJSIP 2.9+\n\nUsing Android API `21`.\nDefault versions included:\n\n- Android Cmd Tools: `8512546`\n- Android NKD: `r21e`\n- OpenSSL: `1.1.1k` (Uses NDK Level 21)\n- OpenH264: `2.1.0` (Uses NDK Level 21)\n- Opus: `1.3.1`\n- bcg729: `1.1.1`\n- Swig: `4.0.2`\n\n## Legacy support\n\nCheckout tag `2.2.0` to build older pjsip (or other libs) versions.\n\n## Setup\n\nYou can install everything on your local machine, or (the way I do) use an Ubuntu Docker container and mount an external volume with this repo. E.g.:\n\n```bash\ndocker run -it --name pjsip-builder -v /path/to/host/repo:/home ubuntu bash\n```\n\n### Configuration\n\n1. Clone this repo on your machine or in the mounted volume inside your container.\n2. Properly configure the `config.conf` file. It's possible to configure libraries versions and build settings by editing it. The settings in the `Support` section above have been tested. Please read the comments in the file for more details. Now single libraries can be configured to be compiled with PJSIP without further editing, just enable the switches in the config file.\n3. In the `config.conf` file there are some toggles to apply patches ([`fixed_callid`](patches/fixed_callid)). See the respective README for more info.\n\n### Prepare Environment\n\n1. Execute `./prepare-build-system`\n2. If everything goes well you should see all the compiled libraries (opus, openh264, openssl, bcg729) in the **output** folder.\n\n## Build PJSIP\n\nAfter you have successfully set up everything, to build PJSIP execute `./build`\n\nThe script is going to create a new folder inside the output named **pjsip-output-build** organized as follows:\n\n```none\npjsip-output-build\n |-- logs/  contains the full build log for each target architecture\n |-- lib/   contains the compiled libraries for each target architecture\n |-- java/   contains PJSUA Java wrapper to work with the library\n```\n\nIf something goes wrong during the compilation of a particular target architecture, the main script will be terminated and you can see the full log in `./pjsip-output-build/logs/\u003carch\u003e.log`. So for example if there's an error for **x86**, you can see the full log in `./pjsip-output-build/logs/x86.log`\n\n#### x86 Relocation\n\nTo fix the issue, popping up in recent NDK versions. I've used the fix proposed by @alexmelnikov [here](https://github.com/VoiSmart/pjsip-android-builder/pull/28/commits/b4b1868b741f7eae037ea8b7ab274c8f1ac2c3e8), but I have applied it only for `x86` arch.\n\n## Build Libraries only\n\nThis project has separate independent script to build only single libraries:\n\n- Bcg729\n- OpenSSL\n- OpenH264\n- Opus\n\nIf you want to build a single library, or just change it's version, you can disable everything except the library you want to build from the `config.conf` file and specify the version you want (of course you would also need the NDK). Then execute the `prepare-build-system` script. If the environment is ready you can also just run the lib dedicated script.\n\n## License\n\n```text\nCopyright (C) 2015-2022 VoiSmart Srl\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FVoiSmart%2Fpjsip-android-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FVoiSmart%2Fpjsip-android-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FVoiSmart%2Fpjsip-android-builder/lists"}