欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

使用ndk-gdb調(diào)試AS下的Native程序-創(chuàng)新互聯(lián)

1.Create Android Studio Project

成都創(chuàng)新互聯(lián)是專業(yè)的惠東網(wǎng)站建設(shè)公司,惠東接單;提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行惠東網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

 (1)新建一個(gè)Empty Activity工程:TestNDK

 (2)在工程的主Activity中加入對(duì).so的引用.這步很關(guān)鍵,將System loadLibrary放入主Activity,是讓程序啟動(dòng)后立刻加載.so,否則后面調(diào)試時(shí),會(huì)有些麻煩

  static {

    // Load native library to invoke chreographerCallback().

    System.loadLibrary("DebugNDK");

  }

public native String  stringFromJNI();

 (3)使用javah生成相應(yīng)的.h文件

   在Android Studio的Terminal窗口中輸入:

cd app\src\main\java       #進(jìn)入工程的app\src\main\java目錄

javah stable.testndk.MainActivity  #生成.h文件,stable.testndk是包名,MainActivity是native函數(shù)所在的類名

接下來就可以編譯NDK了,NDK編譯完再回來

  (4)將NDK編譯出的libs目錄下的文件copy到app\libs目錄下,如下:

  app\libs\armeabi\

             gdb.setup

             gdbserver

             libDebugNDK.so

  app\libs\armeabi-v7a\

             gdb.setup

             gdbserver

             libDebugNDK.so

  app\libs\mips\

             gdb.setup

             gdbserver

             libDebugNDK.so

  app\libs\x86\

             gdb.setup

             gdbserver

             libDebugNDK.so

  (5)修改app\build.gradle,在android下加入如下代碼,告知jniLibs所在目錄

  sourceSets {

    main() {

      jniLibs.srcDirs = ['libs']

    }

  }

  (6)rebuild工程,可以通過Build->Build APK來生成APK,然后用7Zip看一下里面是將.so打包進(jìn)去了.

接下來進(jìn)入第三步調(diào)試NDK

2.NDK程序的編譯

(1)以 android-ndk-r10b\samples\hello-jni為模板,建立自己的NDK程序(DebugNDK).

  自己的程序需要修改Android.mk文件,增加工程及代碼文件,這里將所有的hello-jni更改為DebugNDK.

  修改DebugNDK.c中的jni對(duì)外接口函數(shù)名,修改為上面使用javah到處的.h中的相應(yīng)函數(shù)(Java_stable_testndk_MainActivity_stringFromJNI).

(2)編譯.so

  在windows命令行下,進(jìn)入工程目錄(TestNDK目錄),輸入如下命令:

  ndk-build NDK_DEBUG=1     #注意事先要將ndk-build所在目錄設(shè)置到系統(tǒng)環(huán)境變量中

  之后開始編譯,最終在工程目錄下會(huì)生成libs和obj兩個(gè)目錄,其中l(wèi)ibs目錄下的是發(fā)布到硬件的.so, obj下是用于調(diào)試的,后面會(huì)用到.

好了到此可以回到 上面?zhèn)€ Create Android Studio Project 的第4步了.

3.NDK調(diào)試

服務(wù)器端配置

(1)在手機(jī)上運(yùn)行TestNDK程序

(2)將編譯NDK程序時(shí)生成的gdbserver pull到手機(jī)(我是放到/data/data/stable.testndk.

  gdbserver在app\libs\x86\下,可以將其放到手機(jī) /data/data/stable.testndk/lib 下

  在windows命令行下,執(zhí)行:

  adb push .\app\libs\x86\gdbserver /data/data/stable.testndk/lib/

(3)在手機(jī)上啟動(dòng)gdbserver并attach你想調(diào)試的進(jìn)程,并指定監(jiān)聽調(diào)試命令的端口(此端口是手機(jī)上的端口)

  在windows命令行下,執(zhí)行:

  adb shell  #進(jìn)入手機(jī)

  cd /data/data/stable.testndk/lib

  ps | grep stable.testndk  #查看要調(diào)試進(jìn)程的PID

  gdbserver :1818 --attach 19906  #:1818是端口號(hào),19906 是進(jìn)程ID

此時(shí),終端終端上會(huì)顯示:

  Attached; pid = 19906

Listening on port 1818

臺(tái)式機(jī)端配置

(1)使用adb做端口映射,將pc機(jī)上的端口定向到手機(jī)上gdbserver監(jiān)聽的端口

  adb forward tcp:1818 tcp:1818  #端口映射,將pc機(jī)的1818端口映射到手機(jī)的1818端口

(2)將設(shè)備上的app_process32拉到臺(tái)式機(jī),用于gdb調(diào)試.

  adb pull /system/bin/app_process32 ./

(3)使用android-ndk-r10b\toolchains下的gdb客戶端去連接gdbserver,gdb的類型要選擇針對(duì)手機(jī)平臺(tái)的,由于我使用的手機(jī)是x86 PC模擬器,因此要選擇:

  android-ndk-r10b\toolchains\x86-4.8\prebuilt\windows-x86_64\bin\i686-linux-android-gdb.exe

  并且gdb版本要和gdbserver一致。(可以通過--version來確認(rèn))

  在windows命令行下,執(zhí)行如下命令,app_process32_path 表示app_process32所在目錄。

  android-ndk-r10b\toolchains\x86-4.8\prebuilt\windows-x86_64\bin\i686-linux-android-gdb.exe {app_process32_path}\app_process32

  上面的命令執(zhí)行完后,便進(jìn)入gdb命令模式了(命令行前有(gdb)),然后執(zhí)行:

  target remote :1818 #連接本地的:1234端口,此端口已經(jīng)和手機(jī)的1234端口做好映射。

  set solib-search-path {solibpath}  #加載所有的動(dòng)態(tài)連接庫,solibpath的路徑位置可以參考:NDK編譯輸出文件 gdb.setup 中的"set solib-search-path XXX"的目錄,但注意要使用絕對(duì)目錄.

  #我的是set solib-search-path D:/Android/android-ndk-r10b/samples/TestNDK/obj/local/x86

  然后用info shared命令查看是否libDebugNDK.so的符號(hào)庫已經(jīng)加載,我的顯示的是:

  0xaabd92e0  0xaabd93c8  Yes D:\Android\android-ndk-r10b\samples\TestNDK\obj\local\x86\libDebugNDK.so  #如果符號(hào)庫未加載則在Yes后有個(gè)(*).

(4)設(shè)置斷點(diǎn),開始調(diào)試

  在gdb模式,執(zhí)行:

  b Java_stable_testndk_MainActivity_stringFromJNI  #設(shè)置斷點(diǎn)

  c  #運(yùn)行

  然后在函數(shù)調(diào)用時(shí),斷點(diǎn)就可以停住了! Over!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

標(biāo)題名稱:使用ndk-gdb調(diào)試AS下的Native程序-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://aaarwkj.com/article18/cdppgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、品牌網(wǎng)站建設(shè)、定制開發(fā)、網(wǎng)頁設(shè)計(jì)公司、小程序開發(fā)靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
一个人看的视频天堂色| 丁香六月色婷婷亚洲激情| 欧美成人一区二区三区片| 午夜福利中文在线观看| 日本岛国一区二区在线 | 亚洲成人日韩成人av| 在线看电影亚洲一区| 国产精品亚洲在线视频| 亚洲av毛片免费在线| 久久国产三级久久久久久| 日韩亚洲中文一区三级黄片| 日韩新片一区二区三区| 五月婷婷丁香在线观看| 国产女同av一区二区三区 | 欧美大片在线观看高清| 午夜夫妻生活视频在线观看| 久国产精品一区国产精品| 亚洲精品偷拍在线观看| 国产成人精品一二三四区| 欧美亚洲清纯唯美另类| 亚洲成在人天堂一区二区| 偷拍一区二区三区夫妻| 午夜神马福利激情视频| 亚洲综合国产一区二区| 男人一插就想射的原因| 亚洲av毛片免费在线| 国产爆操美女在线观看| 国产精品六区久久综合亚洲av| 精品爆白浆一区二区三区| 国产高清剧情av网站| 国产又粗又长又爽网站| 亚洲国产精品成人女人| 中文欧美一区二区精品| 四虎在线观看免费资源| 亚洲午夜一区二区三区精品影院 | 亚洲中文字幕乱码熟女在线| 久草尤物视频在线观看| 日韩在线视频一区二区三| 亚洲精品国产精品粉嫩av| 国产亚洲精品久久久9| 国产三级传媒视频在线观看|