我正在尝试生成一个Android应用程序来使用一些额外的*.so库(特别是'libinterface.so').这些库是在外部生成的,并作为依赖包含在从Java端调用的包装类中.该库存储在'src/main/jniLibs/armeabi-v7a'中.系统将所有.so文件包含到生成的应用程序中.
以前,我使用Eclipse就是为了这个目的而且我能够使用这个库,但是我在使用Android Studio时遇到了问题.
生成的错误是:
/home/******/Libraries/android-sdk-linux/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9/../../../../aarch64-linux-android/bin/ld: cannot find -linterface
Run Code Online (Sandbox Code Playgroud)
由于链接器抛出错误,它看起来与库包含步骤有关.在Eclipse上,我使用'Android.mk'文件来包含新库,但我找不到使用Gradle执行此操作的方法.
#Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libinterface-prebuilt
LOCAL_SRC_FILES := prebuilt/libinterface.so
include $(PREBUILT_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
我试图用这个gradle定义包含库(注意:我已经包含了最后一个JNI支持和使用本教程的 gradle实验):
...
android.buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-android.txt'))
}
}
android.ndk {
moduleName = "custom_wrapper_jni"
cppFlags.add("-I" + file("src/main/jni").absolutePath)
cppFlags.add("-I" + file("../Integration/include").absolutePath) // <- New library header include path
cppFlags.add("-L" + file("src/main/jniLibs/armeabi-v7a").absolutePath) // <- Path where the library is stored
cppFlags.add("-std=c++11")
stl = "stlport_static" // Which STL library to use: gnustl or stlport …Run Code Online (Sandbox Code Playgroud) java-native-interface android shared-libraries android-studio gradle-experimental
我有两个使用相同库的示例应用程序,它们之间的主要区别在于一个使用qt而另一个应用程序是控制台应用程序.
在公共库中,我有这个测试代码:
double test = 0.1;
double test2 = atof("2.13134");
double test3 = atof("1,12345");
Run Code Online (Sandbox Code Playgroud)
如果我使用非qt应用程序的值是:
test = 0.10000000000001
test2 = 2.1323399999999999998
test3 = 1 // This is the expected result using a ',' as delimitation character
Run Code Online (Sandbox Code Playgroud)
但是使用qt应用程序:
test = 0.10000000000001
test2 = 2 // This is not expected!!!
test3 = 1.1234500000000000001
Run Code Online (Sandbox Code Playgroud)
有没有'atof'的行为因qt而改变的情况?
我正在尝试使用Mac应用程序中的NSSharingService发送电子邮件.我将HTML代码包含为电子邮件正文.出现"邮件"窗口时,将对内容进行格式化,但HTML结构中的图像将移至底部电子邮件中.此外,即使我将此图像定义为链接,也不会在电子邮件正文中执行链接.
这是我正在使用的代码:
NSString* htmlText = @"<html><body><p>Message body</p><br/><a href='http://www.google.com'><img border='0' src=http://blog.jimdo.com/wp-content/uploads/2014/01/tree-247122.jpg label='Video' width='512' height='512'></img></a><br/><p>Video: <a href='http://blog.jimdo.com/wp-content/uploads/2014/01/tree-247122.jpg'>http://blog.jimdo.com/wp-content/uploads/2014/01/tree-247122.jpg</a></p><br/><p>Another link to <a href='http://www.google.com' target='_blank'>google</a></p></body></html>";
NSData* textData = [NSData dataWithBytes:[htmlText UTF8String] length:[htmlText lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
NSAttributedString* textAttributedString = [[NSAttributedString alloc] initWithHTML:textData options:nil documentAttributes:nil];
NSSharingService *emailSharingService = [NSSharingService sharingServiceNamed:NSSharingServiceNameComposeEmail];
[emailSharingService setSubject:@"Subject"];
emailSharingService.delegate = self;
NSArray* shareItems = [NSArray arrayWithObjects: textAttributedString, nil];
[emailSharingService performWithItems:shareItems];
Run Code Online (Sandbox Code Playgroud)
图像应出现在"消息体"文本行之后和"视频:..."之前,但在我的情况下它出现在底部.
HTML代码在Firefox和Safari上进行测试.此外,我可以使用Safari打开HTML文本,然后选择"文件 - >共享 - >通过电子邮件发送此页面"它正是我正在尝试做的事情(但使用Safari,而不是我的应用程序).
任何想法都很好.提前致谢.
试图在Android上分析我的本机库,我担心这个平台缺乏免费的分析工具(特别是对本地库进行分析).
第一个选项会在分析器处于活动状态时干扰执行,并且作为android-ndk-profiler的自述文件:" 作为替代方案,请尝试使用Google自己的FPL实用程序 - NDK perf,它提供了一种非侵入性方式使用Linux perf " 分析您的应用程序.
但是,这个新工具看起来只适用于两个特定的设备:
## Set of tested devices that are known to support perf.
SUPPORTED_DEVICES = set([
'mantaray', # Nexus 10
'nakasi', # Nexus 7 (2012)
])
Run Code Online (Sandbox Code Playgroud)
看起来该设备应该具有"Linux Perf"支持才能使用fplutis profiler.
除了Nexus 10和Nexus 7(2012)之外还有其他任何设备可以使用这种分析工具吗?
有没有办法在其他设备上激活这种"Linux Perf"支持?(例如改变rom)
还有其他(更新)的选择吗?
谢谢.
我正在尝试使用 cmake 生成一个 Xcode 项目,但我无法在项目设置中定义“其他链接器标志”。我使用了“target_link_libraries”,但它不起作用。有什么线索吗?我想要做的是定义链接时必须包含哪些库。如果我手动执行,例如我输入“-lopencv_core”。
android ×2
android-ndk ×1
atof ×1
c++ ×1
cmake ×1
html-email ×1
macos ×1
objective-c ×1
profiling ×1
qt ×1
xcode ×1