APK: native libraries name issues related to version number (SO.X.Y)
Issue
Built APK looks wrong and prevents my application from loading its native library because it cannot find a dependency when calling dlopen()
: dlopen failed: library "libboost_filesystem.so.1.68.0" not found
.
jniLibs content
My jniLibs
directory, for the target platform, contains the following files:
libboost_filesystem.so.1.68.0
is the "real" shared object.
libboost_filesystem.so
is a symlink tolibboost_filesystem.so.1.68.0
APK Content
After building, the APK contains a libboost_filesystem.so
which now is the binary object (not a symlink).
It seems like Android build system followed the symlink, grabbed content of the "pointed-to" file, but used the name of the symlink instead.
I have tried to remove the symlink from the jniLibs
folder, but doing that it seems that the xxx.so.VERSION
files are then ignored.
Question
How can I embed my "full name" shared object into the jniLibs
without the Android build system messing with it ?
android android-studio java-native-interface apk
add a comment |
Issue
Built APK looks wrong and prevents my application from loading its native library because it cannot find a dependency when calling dlopen()
: dlopen failed: library "libboost_filesystem.so.1.68.0" not found
.
jniLibs content
My jniLibs
directory, for the target platform, contains the following files:
libboost_filesystem.so.1.68.0
is the "real" shared object.
libboost_filesystem.so
is a symlink tolibboost_filesystem.so.1.68.0
APK Content
After building, the APK contains a libboost_filesystem.so
which now is the binary object (not a symlink).
It seems like Android build system followed the symlink, grabbed content of the "pointed-to" file, but used the name of the symlink instead.
I have tried to remove the symlink from the jniLibs
folder, but doing that it seems that the xxx.so.VERSION
files are then ignored.
Question
How can I embed my "full name" shared object into the jniLibs
without the Android build system messing with it ?
android android-studio java-native-interface apk
add a comment |
Issue
Built APK looks wrong and prevents my application from loading its native library because it cannot find a dependency when calling dlopen()
: dlopen failed: library "libboost_filesystem.so.1.68.0" not found
.
jniLibs content
My jniLibs
directory, for the target platform, contains the following files:
libboost_filesystem.so.1.68.0
is the "real" shared object.
libboost_filesystem.so
is a symlink tolibboost_filesystem.so.1.68.0
APK Content
After building, the APK contains a libboost_filesystem.so
which now is the binary object (not a symlink).
It seems like Android build system followed the symlink, grabbed content of the "pointed-to" file, but used the name of the symlink instead.
I have tried to remove the symlink from the jniLibs
folder, but doing that it seems that the xxx.so.VERSION
files are then ignored.
Question
How can I embed my "full name" shared object into the jniLibs
without the Android build system messing with it ?
android android-studio java-native-interface apk
Issue
Built APK looks wrong and prevents my application from loading its native library because it cannot find a dependency when calling dlopen()
: dlopen failed: library "libboost_filesystem.so.1.68.0" not found
.
jniLibs content
My jniLibs
directory, for the target platform, contains the following files:
libboost_filesystem.so.1.68.0
is the "real" shared object.
libboost_filesystem.so
is a symlink tolibboost_filesystem.so.1.68.0
APK Content
After building, the APK contains a libboost_filesystem.so
which now is the binary object (not a symlink).
It seems like Android build system followed the symlink, grabbed content of the "pointed-to" file, but used the name of the symlink instead.
I have tried to remove the symlink from the jniLibs
folder, but doing that it seems that the xxx.so.VERSION
files are then ignored.
Question
How can I embed my "full name" shared object into the jniLibs
without the Android build system messing with it ?
android android-studio java-native-interface apk
android android-studio java-native-interface apk
edited Nov 15 '18 at 17:17
Xaqq
asked Nov 15 '18 at 17:01
XaqqXaqq
3,69821738
3,69821738
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
No you can't. You should avoid versioning the so file. See https://stackoverflow.com/a/45058227/192373 for instructions.
It's also quite natural that Android does not support this technique, because your native libraries belong to your APK and no version conflict can occur.
Consider linking boost filesystem statically to avoid extra lookup.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53324499%2fapk-native-libraries-name-issues-related-to-version-number-so-x-y%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
No you can't. You should avoid versioning the so file. See https://stackoverflow.com/a/45058227/192373 for instructions.
It's also quite natural that Android does not support this technique, because your native libraries belong to your APK and no version conflict can occur.
Consider linking boost filesystem statically to avoid extra lookup.
add a comment |
No you can't. You should avoid versioning the so file. See https://stackoverflow.com/a/45058227/192373 for instructions.
It's also quite natural that Android does not support this technique, because your native libraries belong to your APK and no version conflict can occur.
Consider linking boost filesystem statically to avoid extra lookup.
add a comment |
No you can't. You should avoid versioning the so file. See https://stackoverflow.com/a/45058227/192373 for instructions.
It's also quite natural that Android does not support this technique, because your native libraries belong to your APK and no version conflict can occur.
Consider linking boost filesystem statically to avoid extra lookup.
No you can't. You should avoid versioning the so file. See https://stackoverflow.com/a/45058227/192373 for instructions.
It's also quite natural that Android does not support this technique, because your native libraries belong to your APK and no version conflict can occur.
Consider linking boost filesystem statically to avoid extra lookup.
answered Nov 15 '18 at 19:21
Alex CohnAlex Cohn
42.1k554192
42.1k554192
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53324499%2fapk-native-libraries-name-issues-related-to-version-number-so-x-y%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown