小编Aam*_*ood的帖子

为Android ARMV7编译OpenSSL 1.1.0

我正在尝试在Ubuntu计算机上为Android ARMV7编译OpenSSL 1.1.0(k)。但我只能针对android,android-armabi,android64(-aarch64)进行编译。

我正在尝试的内容(在openssl-1.1.0k文件夹中):

export AR=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc-ar
export CC=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
export LD=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld
export RANLIB=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc-ranlib
export ANDROIDNDKVER=r11c
export ANDROIDAPI=24
export CROSS_SYSROOT=~/android-ndk-r11c/platforms/android-24/arch-arm64
export ANDROID_DEV=~/android-ndk-r11c/platforms/android-24/arch-arm64/usr/
export SYSROOT=~/android-ndk-r11c/platforms/android-24/arch-arm64/usr/
export PATH=$PATH:~/android-ndk-r11c/platforms/android-24/arch-arm64/usr/
Run Code Online (Sandbox Code Playgroud)

现在当我列出目标

./Configure LIST
Run Code Online (Sandbox Code Playgroud)

没有提到Armv7。当我在openssl-1.0.2l目录中输入相同的命令时,我希望有一个名为android-armv7的目标。

我想念什么?或者,如何在armv7 Android手机的兼容版本中编译Openssl-1.1.0?

同样使用NDK r18b或android-28并不能解决问题,甚至无法使用arch-arm代替arch-arm64。

背景:我现在使用的框架(Qt 5.13)要求使用OpenSSL 1.1.0,并且它可以在某些移动设备上使用。类似于HTC 10(armv8 64位),但在LG K7(armv7 32位)和Amazon Fire平板电脑上,它无法正常工作。

谢谢,

ubuntu qt android openssl armv7

7
推荐指数
1
解决办法
231
查看次数

将Firebase Framework添加到iOS未定义的符号

我正在尝试将Firebase Messaging添加到我的iOS项目中.我无法使用Pod,因为我的Developermachine会破坏它们.所以我手动添加框架.正如自述文件所述,我将分析和消息文件夹的所有框架以及Firebase.h添加到我的Xcode项目中.我添加了其他Stackoverflow问题中提到的Storekit.framework,libz,libc ++和libsqlite3.0,以消除大多数链接器错误.但由于以下错误,我仍然无法编译/链接我的项目:

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_SKPaymentQueue", referenced from:
      objc-class-ref in FirebaseAnalytics(FIRAInAppPurchaseTransactionReporter_ca1fe3eb82b823d5f96d3f8b4baedc9c.o)
  "_OBJC_CLASS_$_SKProductsRequest", referenced from:
      objc-class-ref in FirebaseAnalytics(FIRAProductsRequest_8f770071350872416d311668917f3a41.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么他们会丢失或者我需要添加哪个库来进行此操作.有人知道该怎么办吗?

我还应该提到我在这个项目上使用Qt.

提前致谢,

objective-c linker-errors ios firebase firebase-cloud-messaging

1
推荐指数
1
解决办法
588
查看次数

Android MediaPlayer(使用VideoView)没有视频,只播放音频

我正在尝试使用VideoView上的MediaPlayer播放视频.不幸的是我只播放了音频.没有显示视频.我需要使用Mediaplayer,因为我的视频位于受保护而不是Worldreadable的地方(并且在播放之前要复制很大)并且需要进行流式传输.

(视频很好,可以播放.在像Acer A210这样的安卓平板电脑上,对于不可读的文件不太合理我可以通过使用VideoViews setVideoURI方法直接播放视频,我需要以下代码来播放视频,例如三星平板电脑)

有人能告诉我我做错了什么吗?Thx提前.

public class VideoPlayer extends Activity implements SurfaceHolder.Callback {
private VideoView objVideoView;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);       
    this.setContentView(R.layout.activity_videoplayer);
    objVideoView = (VideoView) findViewById(R.id.myVideoView); 

    String strVideoNames = "";

    if (savedInstanceState == null) {
        Bundle extras = getIntent().getExtras();
        if(extras != null) strVideoNames = extras.getString("strVideoNames");
    } else {
        strVideoNames = (String) savedInstanceState.getSerializable("strVideoNames");
    }

    playVideo(getVideoUrl(strVideoNames));
}

ArrayList<String> listVideoNames;

public void playVideo(String strVideoNames) {

    if (strVideoNames.contains(";")) {          
        String[] strAVideoUrls = strVideoNames.split(";");
        listVideoNames = new ArrayList<String>(Arrays.asList(strAVideoUrls));           
    } else …
Run Code Online (Sandbox Code Playgroud)

audio android android-mediaplayer android-videoview

0
推荐指数
1
解决办法
3512
查看次数

无法在QT项目中添加iOS OpenCV Framework

我正在尝试将适用于iOS的OpenCV Framework绑定到Qt 5.2 iOS项目.迄今为止没有任何有用的结果.

什么是有效的是在没有任何OpenCV Framework绑定的情况下创建Qt项目,然后使用quake生成Xcode项目(使用命令"qmake -spec macx-xcode qtopencv.pro"),然后手动将iOS OpenCV Framework添加到Xcode项目.由此产生的应用程序与OpenCV支持完美运行.但是如果我想向项目中添加一个文件或者影响项目结构的东西,那么我需要每次都使用qmake并手动添加OpenCV Framework.

所以我需要一种方法来告诉QT项目使用已经存在的OpenCV iOS框架并自动使用它.在对qmake进行一些研究后,我发现有可能添加一个Mac/iOS框架.

使用QT Pro文件中的以下命令,Frameworkfiles似乎被添加到项目中(OpenCV框架似乎正确地添加到项目中,因为它可以在qmake生成的Xcode项目的Framework部分中找到):

QMAKE_LFlags += -F"/Users/divdurch0/Desktop/qtopencv/OpenCV.framework"
LIBS += -framework "/Users/divdurch0/Desktop/qtopencv/OpenCV.framework"
Run Code Online (Sandbox Code Playgroud)

但是现在项目没有编译说"ld:framework not found -L/Users/divdurch0/Qt5.2.1/ios/plugins/platforms".提到的路径不是一个框架它是一个lib,并且如果我不添加上面提到的行,则可以正确地找到它 - 所以它不应该是问题.

如果我改变第二行,如网上几个答案所述

LIBS += -framework OpenCV
Run Code Online (Sandbox Code Playgroud)

它说框架OpenCV没有找到,框架文件没有添加到qmake结果Xcode项目中.

我希望有人知道如何做到这一点.必须有一种方法可能我使用错误的语法.或者将OpenCV框架添加到iOS QT项目的任何其他方式都会有所帮助.

谢谢.

xcode qt opencv ios

0
推荐指数
1
解决办法
1089
查看次数