1. 程式人生 > >安卓防破解自用筆記(1)android studio 開發生成so檔案

安卓防破解自用筆記(1)android studio 開發生成so檔案

1. 我這使用的是mac book pro,安裝的Android studio版本在此時此刻還算可以用, 可能不是最新的,但我不要求一定要最新的。為了防止今後看到這個文章跟自己的出現的問題無法對上,我先登記一下我使用的系統版本及as版本號。


2. 在官方或其它渠道下載一個NDK的包, 並解壓到本地的目錄,記錄好路徑,我下載的是android-ndk64-r10b-darwin-x86_64.tar.bz2,解壓後的目錄結構如下所示


3. 首先建立一個空的工程,名稱按自己要求寫上,我這選的Minimum SDK版本是4.0.3 ---> Blank Activity




4. 接下來工程建立完成,展開App Module -》 Java   -》wo.flowbank.com.fb_lr_lib 選中後新建一個Java Class 我這邊將他命名為NativeUtils



5.  建立完成後,會看到MainActiviey 下面多出了一個NativeUtils的class


6. 雙擊該檔案,進行編譯,為該檔案新增兩個對外的介面,今後的so檔案對外將提供這兩個介面以供使用。


7. 接下來Build 一下, 程式應該是可以編譯成功的。


8. 開啟AS自帶的終端命令列


9. 轉換目錄到當前工程的app/src/main/java目錄下,然後執行javah 命令生成jni 的介面檔案。

javah -d ../jni wo.flowbank.com.fb_lr_lib.NativeUtils


10. 執行完成後, 會生成 jni目錄以及對應的.h 檔案,如下圖所示。


11. 接下來要建立一個main.c 的檔案, 用來對應.h檔案中宣告的實現函式。選中jni資料夾後,右健建立一個C/C++ source file.

12. 雙擊main.c檔案後,將.h 檔案中的宣告COPY進來, 將函式的實現體加上。然後執行Make Project 會看到如下圖的出錯資訊。


13. 接下來要使用我們第一步時下載的NDK的包了,開啟File選單下的Project Structure,然後指定Android NDK Location



14. 開啟工程中Gradle Scripts 下的local.properties檔案, 看一下目錄是否已經新增, 如果沒有自動加上,ndk.dir 需要手動新增, 如果已經新增請確認目錄正確性。


相關推薦

破解自用筆記1android studio 開發生成so檔案

1. 我這使用的是mac book pro,安裝的Android studio版本在此時此刻還算可以用, 可能不是最新的,但我不要求一定要最新的。為了防止今後看到這個文章跟自己的出現的問題無法對上,我先登記一下我使用的系統版本及as版本號。 2. 在官方或其它渠道下載一

《學做智慧車——晴》學習筆記1——智慧汽車智慧控制器方案設計

差速器: 汽車差速器能夠使左、右(或前、後)驅動輪實現以不同轉速轉動的機構。主要由左右半軸齒輪、兩個行星齒輪及齒輪架組成。功用是當汽車轉彎行駛或在不平路面上行駛時,使左右車輪以不同轉速

使用記錄筆記5Android studio 相機呼叫

這裡使用自己已經做好的相機模板,相關許可權申請都已包含在內,並且提供了影象的rgb資料,可以供opencv呼叫 模板連結看這裡看這裡---->    稍後提供   模板可以直接作為框架來使用,如果想要匯入到自己的工程中,也很簡單,步驟如下:

使用記錄筆記4Android studio 使用PCL庫

個人查資料,看到的關於PCL在安卓端使用,是需要重新編譯的,,,,, 編譯方式詳見:https://github.com/bashbug/pcl-for-android   pcl-for-android Bash scripts for cross compiling P

使用記錄筆記3Android studio 使用openMP

這個是個小坑,在studio較高版本時,更多的是使用clang編譯,而openMP更多的依賴c或者c++中一些特有的庫,忘記叫啥了,這裡就要改成c++編譯。。所以在匯入時,在gradle中修改一下: android{ ... defaultConfig{ ...

Dalvik虛擬機器學習1----Dalvik虛擬機器執行原理

安卓Dalvik虛擬機器相關知識點總結 0x01 Java虛擬機器與Dalvik虛擬機器的區別 Java虛擬機器執行的是Java位元組碼(儲存在class檔案中),Dalvik執行的是Dalvik位元組碼(由Java位元組碼轉化而來,打包到DEX檔案中

android BSP與硬件相關子系統讀書筆記1android BSP移植綜述

tin 不用 googl csdn splay 編寫 app開發 意圖過濾器 trac 從linux驅動轉行至Android驅動開發大半年了,一開始就產生了一個很糾結目標和問題,就是不停的google如何porting android!這個問題得到的結果對於初出茅廬的我,感

Android開發——Android-Studio 開發環境配置

第一步:下載Android-Studio 地址1:https://developer.android.com/studio/index.html?hl=zh-cn第二步:安裝JDK和配置環境變數 由於我下載Android-Studio的版本JDK需要在8.0版本以上,所以如果

工程化開發筆記1

測試 商業 軟件開發 界面 計算機 數學 開發流程 str sof 2018.3.8日 一、什麽是軟件工程? 1、軟件工程 是把系統的、有序的、可量化的方法應用到軟件的開發、運營和維護上的過程。 2、軟件工程包括下列領域 軟件需求分析、軟件設計、軟件構建、軟件測試和軟件

使用記錄筆記1ndk使用之Java呼叫c++程式碼

1.在Java中新建一個Utils類     1)指定路徑下新建一個資料夾 ,包名為Utils     2)   新建類 NativeUtils.java package com.sample.Utils; publi

Angular 4 - The Basics 筆記1: Install

install rst logs nod first log 筆記 npm app Install Node.js Install Angular CLI sudo npm install -g @angular/cli Set-up new app

JAVA學習筆記1——a++與++a的區別

col int 演示 opera 解析 代碼 數據 ++i div 需求:此博客用於解釋i++與++i的區別。 過程: 1、名稱解釋 ++:自增,即在原有數據基礎上+1,再賦給原有數據。 2、程序演示 (1)代碼: 1 class OperateDemo 2 { 3

vray學習筆記1

com .cn 過程 分組 是把 皮膚 mon image 基本 vray是個什麽東西? 它是個渲染器。 渲染器是個什麽東西? 渲染器就是3d軟件裏面把模型畫成一張圖片的東西,渲染的過程就是把3D物體變成2D畫面的過程。 模型是個什麽東西? 模型就是模型,它由兩部分組成,第

Python學習手冊筆記1:Python對象類型

python 在Python中一切皆對象,Python程序可以分解為模塊、語句、表達式及對象。如下所示:1 程序由模塊組成2 模塊包含語句3 語句包含表達式4 表達式建立並處理對象 內置對象(核心類型):1)數字:>>> 2+2 #整數加法4>>&g

《深入理解C指針》學習筆記1--- 指針之外

結構 def form 學習 編程 stdlib.h struct 一個 char   C語言從誕生之初就非常善於和硬件打交道,經過這麽多年的發展之後,其靈活性和超強的特征是受到幾乎所有程序員的肯定。C語言的這種靈活性很大一部分程度來源與C指針,指針為C語言動態操控內存提供

CS231n 學習筆記1 Image CLassification

eight function 分享 便是 數據驅動 rain 分類問題 很難 特征 圖像分類是計算機視覺中的一項核心任務,那麽什麽是圖像分類? 例如,給你一個標簽集,其中包括(貓、狗、鳥、卡車、飛機...等) 然後給你一張圖片,那麽這張圖片屬於哪個類別呢?這就是一個分類

數據結構與算法刺猬書讀書筆記1----數組

split() ring 此外 結果 shift 即使 cnblogs 操作符 main 在JavaScript中,數組其實是一種特殊的對象,用來表示偏移量的索引是該對象的屬性,所以JavaScript的數組本質上是對象。同時這些數字索引在內部會被轉換成為字符串類型,因為J

bootstrap 學習筆記1---介紹bootstrap和柵格系統

優先 cal 圖片 應用 尺寸 文件中 lin png ice   學習前端許久,對於布置框架和響應瀏覽器用html 和javascript 寫的有點繁瑣,無意間看到這個框架,覺得挺好用的就開始學習了,但是這個框架上面有很多知識,不是所有的都要學的,故將學習筆記和覺得重點的

《挑戰程序設計競賽》學習筆記 1

設計 allow 而且 硬幣 ack ket 程序設計 all 不能 2.2 貪心法 貪心法是遵循某種規則,不斷貪心選取當前最優策略的算法設計方法。 貪心法的求解思想是通過叠代地選取當前問題的局部最優解法來達成總體最優解,在叠代的過程中不斷地產生局部最優解和下一個與之前

AngularJs學習筆記1——ng-app

oot you ctrl span fun 代碼 問題 筆記 doctype 眾所周知: ng-app 指令用於告訴 AngularJS 應用當前這個元素是根元素。 所有 AngularJS 應用都必須要要一個根元素。 HTML 文檔中只允許有一個 ng-app 指令,如果