AndroidStudio3.0の開発とデバッグAndroid NDK C ++コード

まず、新しいプロジェクト

新しいプロジェクト、見つかりませんC ++サポートオプションを含みます。 このオプションの印象があるので、長い時間を探して見つけられませんでした。

後で不注意にウィンドウのサイズをドラッグし、元のは隠されて、本当にピット。

新しいテストプロジェクトを作成し、Include C ++ + Supportオプションをチェックして、プロジェクトの内容を確認します。

1、gradle

最初にgradleファイルを見て、アンドロイドノードの下に追加してください:

externalNativeBuild {
cmake {
パス "CMakeLists.txt"
}
}
1
2
3
4
5
defaultConfigノードの下に追加:

externalNativeBuild {
cmake {
cppFlags "-std = c ++ 14"
}
}
1
2
3
4
5
2、CPP

そして、同じレベルのディレクトリsrc \ main \ cppとsrc \ main \ javaに対応するcppノードよりも同じレベルのJavaノードは、デフォルトはnative-lib.cppファイルの1つのみであり、Mkファイルなどはありません。

#include <jni.h>
#include <文字列>

extern "C"
JNIEXPORT jstring

JNICALL
Java_com_bigsing_myapplication_MainActivity_stringFromJNI(
JNIEnv * env、
jobject / * this * /){
std :: string hello = "Hello from C ++";
return env-> NewStringUTF(hello.c_str());
}
1
2
3
4
5
6
7
8
9
10
11
12
13
3、CMakeLists.txt

appディレクトリに複数のCMakeLists.txtファイルがあります。

#CMakeをAndroidスタジオで使用する方法の詳細については、
#documentation:https://d.android.com/studio/projects/add-native-code.html

#ネイティブライブラリを構築するのに必要なCMakeの最小バージョンを設定します。

cmake_minimum_required(バージョン3.4.1)

#ライブラリを作成して名前を付け、STATIC
#またはSHAREDを指定し、そのソースコードに相対パスを指定します。
#複数のライブラリを定義することができ、CMakeはそれらをビルドします。
#Gradleは共有ライブラリをAPKに自動的にパッケージします。

add_library(#ライブラリの名前を設定します。
native-lib

#ライブラリを共有ライブラリとして設定します。
共有

#ソースファイルへの相対パスを提供します。

src / main / cpp / native-lib.cpp)

#指定された事前ビルドされたライブラリを検索し、そのパスをa
#変数.CMakeには検索パスにシステムライブラリが含まれているため
#default、パブリックNDKライブラリの名前を指定するだけです
#あなたが追加したい#CMakeは、ライブラリが前に存在することを確認します
#ビルドを完了する。

find_library(#path変数の名前を設定します。
log-lib

#NDKライブラリの名前を指定します。
#CMakeが見つけたい#。
ログ)

#代表的なライブラリCMakeはあなたのターゲットライブラリにリンクする必要があります。
#これで定義したライブラリなど、複数のライブラリをリンクすることができます
#構築スクリプト、構築済みサードパーティライブラリ、またはシステムライブラリ。

target_link_libraries(#ターゲットライブラリを指定します。
native-lib

#ターゲットライブラリをログライブラリにリンクします
#NDKに含まれています。
$ {log-lib})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
どのnative-libが最終的に生成されたSO(libnative-lib.so)の名前で、デフォルトのCPU armeabi-v7a

デフォルトのプロジェクトプロパティは、自動的にデフォルトのデバッガを構成する必要はありません、自動的にcppのブレークポイントで、アプリケーションのデバッグを実行し、自動的に壊れて、変数値は、デバッグ状態で見ることができます。

AndroidStudioの試用NDKのデバッグのサポートは悪くないので、私は過去のプロジェクトをサポートするつもりです、メソッドは、次のセクションを参照してください。

第二に、既存のプロジェクト

1、C ++デバッガLLDBをインストールする

AndroidStudioがネイティブコードをデバッグする前に使用されていなかったので、オンライン学習のAndroidStudio NDKデバッグはLLDBプラグインの必要性です。デフォルトはそうではありません。

これは別の方法です: "Edit Configurations"プロジェクト設定は常にJavaコードのみだったので、プログラム設定を開き、デバッガでNative(デフォルトは自動)を選択し、Appを実行します。ここでNativeを選択すると、AndroidStudioはプロンプトを表示しますインストールするプロンプトに従って、C ++デバッガはインストールされていません。

ご覧のように、インストールされているデバッガはLLDBです。

2、Link C ++プロジェクトとGradle

古いプロジェクトでNDKサポートを追加するには、プロジェクト選択メニューを右クリックします。Link C ++ + Project with Gradle

コンパイルするには2つの方法があります:CMakeとndk-buildです.ndk-buildは伝統的な方法で、AndroidStudioはデフォルトでCMakeの方法を推奨しています。これは主流の方法ですので、デフォルトのCMakeを選択します。

次に、CMakeLists.txtファイルへのパスを指定します。ここで、新しいプロジェクトのCMakeLists.txtファイルをアプリケーションの既存のプロジェクトディレクトリにコピーし、proguard-rules.proと同じフォルダに配置できます。 次に、このCMakeLists.txtファイルのフルパスを入力し、[OK]をクリックします。

今回は、gradleファイルが自動的に追加されます:

externalNativeBuild {
cmake {
パス "CMakeLists.txt"
}
}
1
2
3
4
5
しかし、C + +のバージョンを指定していない、あなたは新しいプロジェクトの内容を参照することができます手動で追加:

externalNativeBuild {
cmake {
cppFlags "-std = c ++ 14"
}
}
1
2
3
4
5
3、仕上げC + +のソースファイルの組織形式

同じレベルのsrc \ main \ cppとsrc \ main \ javaのcppディレクトリを作成し、このディレクトリに移動するC ++ソースファイルと整然とした編成を作成します。

4、CMakeLists.txtを変更する

それは、デモプロジェクトCMakeLists.txtファイルのコピーであるため、比較的単純で、既存のプロジェクトを満たすことができない、あなたはそれを変更する必要があります。 一般的に使用されている機能について説明します。
- 他の接尾辞ファイル(例:.Sアセンブリファイル)をコンパイル可能なソースファイルとして設定する:

set_property(SOURCE src / main / cpp / art / art_quick_dexposed_invoke_handler.SプロパティLANGUAGE C)
1
可変数のソースファイルを設定します(つまり、*アスタリスクのワイルドカードを使用します)。
src / main / cpp / src / main / cpp / *。cpp / src / main / cpp / * .S ")
add_library(#ライブラリの名前を設定します。
native-lib

#ライブラリを共有ライブラリとして設定します。
共有

#ソースファイルへの相対パスを提供します。
$ {native_srcs}

1
2
3
4
5
6
7
8
9
10
11
三者のSOライブラリファイルをリンクするには(例えば、私は三者libsubstrate.soライブラリを使ってテストする必要があります):
ファイル(GLOB libs src / main / cpp / 3rd / libsubstrate.so src / main / cpp / 3rd / libsubstrate-dvm.so)
target_link_libraries(#ターゲットライブラリを指定します。
native-lib

#ターゲットライブラリをログライブラリにリンクします
#NDKに含まれています。
$ {libs}
$ {log-lib})
1
2
3
4
5
6
7
8
5、デバッガのデフォルトの自動復元

"Edit Configurations"以前のNativeに変更されたため、プログラム設定を開き、デバッガでautoを選択します。 このようにして、JavaコードとC ++コードの両方をデバッグすることができます。

第三に、CMakeLists.txtの設定と学習リソース

結局のところ、新しい連絡先、いくつかの参考文献があります:
- 複数のCMakeList設定をコンパイルしたCppファイルクライアント
- CMake Learning(a):リンクサードパーティのライブラリを使用する

第四に、結論

C + +コードの動的なデバッグをサポートするために、間違いなく非常に強力な機能です、エディタのAndroidStudio C + +コードもうまくサポートされているので、全体的な提案は移行することです。

コンパイル速度が遅すぎると、VisualStudioのコンパイル済み秒数が完了し、AndroidStudioが10秒以上になります。 デバッグ時間内にLLDBを開始することも非常に遅く、時にはLLDBの開始サーバー

推奨されるVSと、AndroidStudioでデバッグする際にデバッグする必要がある場合にのみ使用する方法.C + +コードをコンパイルする場合はVS、VSメソッドを使用できます。参照:VisualStudioを使用して効率的な開発とデバッグAndroidNDK

www.meime168.cn

カテゴリ:モバイル開発 時間:2017-12-14 人気:108
この記事では、 C ++、アンドロイド

関連記事

Copyright (C) socapnw.com, All Rights Reserved.

Socapnw All Rights Reserved.

processed in 4.082 (s). 12 q(s)