當前位置:首頁 » 安卓系統 » lldbforandroid

lldbforandroid

發布時間: 2023-05-21 15:50:11

❶ android studio下為什麼我的sdk tools 下沒有 LLDB,and NDK選項

這篇文章主要介紹了Android開發的IDE、ADT、SDK、JDK、NDK等名詞解釋,對這些概念搞不清楚是一件痛苦的事,本文就簡潔講解了這些名詞的含義,一起掃盲吧,需要的朋友可以參考下 圓絕1. IDE: Intelligent Development Environm的簡稱。即智能開發環境。是一種開發工具。常用的IDE有adt-bundles和Android studio。兩個都需要配置jdk。 2. ADT: Android Development tools的簡稱。即Android開發工具。ADT為Eclipse的插件。在Eclipse和SDK之間起了一個橋梁的作用。 3. SDK: Soft Development Kit的簡稱。軟體開發工具包。在Android中,它為開發者提供中腔知了庫文件以及其它開發所用到的工具。 4. JDK: java的開發工具包。包括了Java運行環境、Java工具和Java基礎類庫。 5. NDK: 概念: 並能自動將so和Java應用一賣消起打包成apk。這些工具對開發者的幫助是巨大的。 (2).NDK將是Android平台開發支持C開發的開端。 作用: (1).代碼的保護。由於Java層代碼很容易被反編譯,而C/C++庫反編譯難度很大。 (2).可以方便的使用現存的開源庫。大部分現存的開源庫都是用C/C++代碼編寫的。 (3).提高程序的執行效率。將要求高性能的應用邏輯使用C開發,從而提高應用程序的執行效率。 (4).便於移植。用C/C++寫的庫可以方便的在其他的嵌入式平台上再次使用。

❷ android studio下為什麼我的sdk tools 下沒有 LLDB,and NDK選項

android studio 是需要配置sdk,如果沒有配置sdk,Android studio是不能運行Android程序的,配置方法如下: 1、首先在我的電腦右畝襲鍵"屬性"打開,點畢唯擊"高手耐培級系統設置"如圖: 2、點擊"環境變數",如下圖: 3、在系統變數里找到Android Home選項(如果沒有就創建一個),點擊下面的"編輯",添加android SDK的位置,如下圖:

❸ android用cmake怎麼導入cpp文件夾,undifined reference to

ndroid Studio升級到2.2之後,我們可以先配置好NDK開發的一些所需工具,如圖,在SDK Tools中勾選安裝CMake、LLDB、NDK。

CMake: 外部構建工具。如果你准備只使用 ndk-build 的話,可以不使用它。
LLDB: Android Studio上面調試本地代碼的工具。
Android Studio自帶DEMO了解CMAKE
Android Studio升級到2.2版本之後,在創建新的project時,界面上多了一個Include C++ Support的選項。勾選它之後將會創建一個默認的C++與JAVA混編的Demo程序。就讓我們先來看看這個官方標准Demo吧。
開始之前最好先下載好NDK,見NDK開發 從入門到放棄(一:基本流程入門了解),即在Project Structure界面Android NDK location處下載或選擇正確的路徑。或者使用上方提供的工具安裝方法來進行下載。否則,創建的新project也會報錯,需要配置好後clean。
File -> New -> New Project,在如下界面中勾選Include C++ Support,然後一路 Next,直到 Finish 為止即可。

項目打開後我們查看目錄結構,與常規項目不同的是多了.externalNativeBuild文件夾、cpp文件夾、CMakeLists.txt文件,如下圖:

這三個東西都是NDK部分:
1. .externalNativeBuild文件夾:cmake編譯好的文件, 顯示支持的各種硬體等信息。系統生成。
2. cpp文件夾:存放C/C++代碼文件,native-lib.cpp文件是該Demo中自帶的,可更改。需要自己編寫。
3. CMakeLists.txt文件:CMake腳本配置的文件。需要自己配置編寫。
Gradle中也有兩處不同:

java代碼:
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// Example of a call to a native method
TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
}

/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();

// Used to load the 'native-lib' library on application startup.
static {
System.loadLibrary("native-lib");
}
}2223

從native-lib.cpp的代碼中我們能看到它使用的是靜態注冊的方式,動態注冊的方式代碼同傳統JNI。
#include <jni.h>
#include <string>

extern "C"
jstring
Java_com_example_person_myapplication_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}12345678910111234567891011

CMakeLists.txt文件中我們需要注意的是下面這三個地方。兩個library的名字(需一致)以及一個cpp文件的路徑,彼此需要對應一致,當我們自己定義library以及自己創建cpp文件時需要對應修改。

❹ android studio下為什麼我的sdk tools 下沒有 LLDB,and NDK選項

Android studio安裝完後會自帶 sdk 的,如果沒哪春有 sdk 的話,程序是無法編譯運行的,sdk的路徑自己可談緩虧以含神修改,它的目錄結構如下所示:Android Studio里的設置界面如下:進入SDK Manager可以對 sdk 版本進行下載更新。注意:自帶的 sdk 版本可能會比較低,因此可以根據需要下載對應的版本。

❺ android studio下為什麼我的sdk tools 下沒有 LLDB,and NDK選項

1.首先安裝鉛緩LLDB,在tools->Android->sdkmanager中的SDKtools中找到LLDB並安裝.2.gradle-experimental:0.7.0中debuggable默認設置為了true,如果是早期版本,需要在gradle中ndk下設槐檔模置debuggable=「蠢塌true」

python能看微信記錄嗎

python是一種編程語言,它看記錄怎麼看。應該是說能不能用它寫個程序,用來看記錄。這個在理論上是可以的!

❼ 如何實現在android studio中附加模式調試app

我在學習的過程中,親歷的這件事:項目組要做一個復雜的工程,分為sdk工程和demo工程,裡面有java和jni層
而so和aar是sdk工程中生成的,拷貝到demo工程中編譯成最終apk。
java層的調試,是簡單的。可以在運行的時候用sdk工程的android studio附加app,如果直接用demo附加,sdk中的源碼有些並不好顯現,只能通過工程目錄jar文件來查看。
而so層的附加,默認情況下是不可行的,因為jni層調試是啟動型調試,我們來看下android studio處理各種調試行為的過程:

java層調試:
adb push 1.apk /data/local/tmp/1.apk
am start -D -n com.example.test/.MainActivity
android studio等待app狀態正常
設置斷點
執行remote connect,使用java調試協議附加

jni層調試:
adb push 1.apk /data/local/tmp/1.apk
am start -D -n com.example.test/.MainActivity
android studio等待app狀態正常
adb push lldb_server
./lldb_server ..............建立Lldb調試伺服器
lldbfrontend.exe ...........連接lldb調試伺服器
向lldb_server發送附加調試命令
設置java/c層斷點
執行remote connect,使用java調試協議附加

附加調試:
設置斷點
執行remote connect,使用java調試協議附加

1.在研究過程中發現jni層在編譯時生成2個so,帶符號的是obj/local目錄下的so,apk中編譯好的的so是可以不帶符號的,此時用gdb調試,吧文件設置為帶符號的so,即可調試。繼續研究發現帶符號的so和無符號的so,前面位元組完全相同。
2.android studio建立jni工程,需要自動安裝lldb,修改gradle腳本,build.gradle
debug {
jniDebuggable true
}
3.android studio附加按鈕只是採用Run/Debug Configuration中的Remote Configuaration

從上述過程可見,附加並不能觸發jni層調試步驟,而jni層調試步驟又是寫死的,必須把前面載入apk部分去掉,於是對android-ndk.jar做修改
最終實現了效果。其中一些重要的類:
IDevice:描述移動設備
Client:描述app包進程
AndroidNativeDebugProcess 控制jni調試,和lldb_server通信
AndroidNativeDeubgRunner 控制調試器部分
AndroidNativeRunConfiguration 配置Run/Debug Configuration中的Natvie-Debug選項,我在裡面添加了用戶app進程列表方便調試
配置界面控制項
AndroidLLDBDebuggerContext jni層建立lldb調試器
AndroidLLDBDriver 實現基本調試功能

❽ 2019年十大最佳深度學習框架

作者 | Python語音識別

來源 | 濤哥聊Python

雖然我們大多數人都驚嘆為什麼DL這么好?在使用大量數據進行訓練時,它在准確性方面非常出色。近幾年隨著深度學習演算法的發展,出現了很多深度學習的框架,這些框架各有所長,各具特色。下面將為大家介紹2019年最受歡迎的十大深度學習框架。

TensorFlow

谷歌的Tensorflow可以說是當今最受歡迎的深度學習框架。Gmail,Uber,Airbnb,Nvidia以及其他許多知名品牌都在使用。TF是目前深度學習的主流框架,Tensorflow主要特性:

TensorFlow支持python、JavaScript、C ++、Java和Go,C#和Julia等多種編程語言。 TF不僅擁有強大的計算集群,還可以在iOS和Android等移動平台上運行模型。 TF編程入門難度較大。初學者需要仔細考慮神經網路的架構,正確評估輸入和輸出數據的維度和數量。 TF使用靜態計算圖進行操作 。也就是說我們需要先定義圖形,然後運行計算,如果我們需要對架構進行更改,我們會重新訓練模型。選擇這樣的方法是為了提高效率,但是許多現代神經網路工具能夠在學習過程中考慮改進而不會顯著降低學習速度。在這方面,TensorFlow的主要競爭對手是PyTorch 。

TensorFlow優點:

它非常適合創建和試驗深度學習架構,便於數據集成,如輸入圖形,SQL表和圖像。 它得到谷歌的支持,這就說明該模型短期內不會被拋棄,因此值得投入時間來學習它。 PyTorch

Tensorflow之後用於深度學習的主要框架是PyTorch。PyTorch框架是Facebook開發的,已被Twitter和Salesforce等公司使用。

PyTorch基本特性:

與TensorFlow不同,PyTorch庫使用動態更新的圖形進行操作 。這意味著它可以在流程中更改體系結構。 在PyTorch中,您可以使用標准調試器 ,例如pdb或PyCharm。

PyTorch優點:

訓練神經網路的過程簡單明了。同時,PyTorch支持數據並行和分布式學習模型,並且還包含許多預先訓練的模型。 PyTorch更適合小型項目和原型設計。 Sonnet

Sonnet深度學習框架是建立在TensorFlow的基礎之上。它是DeepMind用於創建具有復雜架構的神經網路。

Sonnet基本特性:

面向對象的庫,在開發神經網路(NN)或其他機器學習(ML)演算法時更加抽象。 Sonnet的想法是構造對應於神經網路的特定部分的主要Python對象。此外,這些對象獨立地連接到計算TensorFlow圖。分離創建對象並將其與圖形相關聯的過程簡化了高級體系結構的設計。

Sonnet優點:

Sonnet的主要優點是可以使用它來重現DeepMind論文中展示的研究,比Keras更容易,因為DeepMind論文模型就是使用Sonnet搭建的。 Keras

Keras是一個機器學習框架,如果您擁有大量數據和/或你想快速入門深度學習,那麼Keras將非常適合學習。Keras是TensorFlow高級集成APi,可以非常方便的和TensorFlow進行融合。這是我強烈推薦學習的一個庫。

Keras基本特性:

除了Tensorflow之外,Keras還是其他流行的庫(如Theano和CNTK)的高級API。 在Keras中更容易創建大規模的深度學習模型,但Keras框架環境配置比其他底層框架要復雜一些。

Keras優點:

對於剛剛入門的人來說,Keras是最好的深度學習框架。它是學習和原型化簡單概念的理想選擇,可以理解各種模型和學習過程的本質。 Keras是一個簡潔的API。 可以快速幫助您創建應用程序。 Keras中代碼更加可讀和簡潔。 Keras模型序列化/反序列化API,回調和使用Python生成器的數據流非常成熟。

順便說一下TensorFlow和Keras的對比:

PS:Tensorflow處於底層框架:這和MXNet,Theano和PyTorch等框架一樣。包括實現諸如廣義矩陣 - 矩陣乘法和諸如卷積運算的神經網路原語之類的數學運算。

Keras處於高度集成框架。雖然更容易創建模型,但是面對復雜的網路結構時可能不如TensorFlow。

MXNet

MXNet是一種高度可擴展的深度學習工具,可用於各種設備。雖然與TensorFlow相比,它似乎沒有被廣泛使用,但MXNet的增長可能會因為成為一個Apache項目而得到提升。

MXNet基本特性:

該框架支持多種語言,如C ++,Python,R,Julia,JavaScript,Scala,Go,甚至Perl。 可以在多個GPU和許多機器上非常有效地並行計算。

MXNet優點:

支持多個GPU(具有優化的計算和快速上下文切換) 清晰且易於維護的代碼(Python,R,Scala和其他API) 快速解決問題的能力(對於像我這樣的深度學習新手至關重要)

雖然它不像TF那麼受歡迎,但MXNet具有詳細的文檔並且易於使用,能夠在命令式和符號式編程風格之間進行選擇,使其成為初學者和經驗豐富的工程師的理想選擇。

GLUON

Gluon是一個更好的深度學習框架,可以用來創建復雜的模型。GLUON基本特性:

Gluon的特殊性是具有一個靈活的界面,簡化了原型設計,構建和培訓深度學習模型,而不會犧牲學習速度。 Gluon基於MXNet,提供簡單的API,簡化深度學習模型的創建。 與PyTorch類似,Gluon框架支持使用動態圖表 ,將其與高性能MXNet相結合。從這個角度來看,Gluon看起來像是分布式計算的Keras非常有趣的替代品。

GLUON優點:

在Gluon中,您可以使用簡單,清晰和簡潔的代碼定義神經網路。 它將訓練演算法和神經網路模型結合在一起,從而在不犧牲性能的情況下提供開發過程的靈活性。 Gluon可以定義動態的神經網路模型,這意味著它們可以動態構建,使用任何結構,並使用Python的任何本機控制流。 SWIFT

當你聽到Swift時,您可能會考慮iOS或MacOS的應用程序開發。但是如果你正在學習深度學習,那麼你一定聽說過Swens for Tensorflow。通過直接與通用編程語言集成,Swift for TensorFlow可以以前所未有的方式表達更強大的演算法。SWIFT基本特性:

可以輕松獲得可微分的自定義數據結構。 下一代API 。通過實踐和研究獲得的新API更易於使用且更強大。 在TensorFlow的基礎上 ,Swift API為您提供對所有底層TensorFlow運算符的直接調用。 基於Jupyter、LLDB或者Swift in Colab的編程工具提高了您的工作效率。

SWIFT優點:

如果動態語言不適合您的任務,那麼這將是一個很好的選擇。當你訓練運行了幾個小時,然後你的程序遇到類型錯誤,那麼使用Swift,一種靜態類型語言。您將看到代碼錯誤的地方。 Chainer

直到CMU的DyNet和Facebook的PyTorch出現之前,Chainer是動態計算圖或網路的領先神經網路框架,它允許輸入數據長度不一致。chainer基本特性:

Chainer代碼是在Numpy和CuPy庫的基礎之上用純Python編寫的, Chainer是第一個使用動態架構模型的框架。

Chainer優點:

通過自己的基準測試,Chainer明顯比其他面向Python的框架更快,TensorFlow是包含MxNet和CNTK的測試組中最慢的。 比TensorFlow更好的GPU和GPU數據中心性能。最近Chainer成為GPU數據中心性能的全球冠軍。 DL4J

那些使用Java或Scala的人應該注意DL4J(Deep Learning for Java的簡稱)。DL4J的基本特性:

DL4J中的神經網路訓練通過簇的迭代並行計算。 該過程由Hadoop和Spark架構支持。 使用Java允許您在Android設備的程序開發周期中使用。

DL4J優點:

如果您正在尋找一個良好的Java深度學習框架,這會是一個非常好的平台。 ONNX

ONNX項目誕生於微軟和Facebook,旨在尋找深度學習模型呈現的開放格式。ONNX簡化了在人工智慧的不同工作方式之間傳遞模型的過程。因此ONNX具有各種深度學習框架的優點。

ONNX基本特性:

ONNX使模型能夠在一個框架中進行訓練並轉移到另一個框架中進行推理。ONNX模型目前在Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch中得到支持,並且還有許多其他常見框架和庫的連接器。

ONNX優點:

對於PyTorch開發人員來說,ONNX是一個好的選擇。但是對於那些喜歡TensorFlow的人來說,Keras等可能好一點。 總結

那麼您應該使用哪種深度學習框架?下面是幾點建議:

如果你剛剛開始學習,那麼最好的選擇是Keras 。 出於研究目的,請選擇PyTorch 。 對於生產,您需要關注環境。因此對於Google Cloud,最好的選擇是TensorFlow ,適用於AWS - MXNet和Gluon 。 Android開發人員應該關注D4LJ ,對於iOS來說, Core ML會破壞類似的任務范圍。 最後, ONNX將幫助解決不同框架之間的交互問題。
熱點內容
光遇安卓服周年傘在哪裡領取 發布:2025-02-13 02:22:18 瀏覽:673
寫mv腳本軟體 發布:2025-02-13 02:21:56 瀏覽:695
超內核源碼 發布:2025-02-13 02:12:54 瀏覽:443
趣粉腳本 發布:2025-02-13 02:11:23 瀏覽:951
壓縮的茶葉怎麼弄開 發布:2025-02-13 02:11:16 瀏覽:738
n1ftp伺服器 發布:2025-02-13 02:10:39 瀏覽:347
沒有卡沒有密碼怎麼辦啊 發布:2025-02-13 01:51:53 瀏覽:460
linux2個ftp伺服器 發布:2025-02-13 01:44:31 瀏覽:14
戴爾r730網路配置後如何保存 發布:2025-02-13 01:38:27 瀏覽:344
php用什麼編譯 發布:2025-02-13 01:37:12 瀏覽:703