多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > 綜合技術(shù) > 項(xiàng)目實(shí)戰(zhàn)①―高仿知乎日?qǐng)?bào)(0)-->NDK將私密數(shù)據(jù)隱藏起來(lái)

項(xiàng)目實(shí)戰(zhàn)①―高仿知乎日?qǐng)?bào)(0)-->NDK將私密數(shù)據(jù)隱藏起來(lái)

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-12-13 09:10:08 閱讀次數(shù):4461次

①安卓程序員真的很累 

GAP ,NDK,說(shuō)實(shí)話我基本算個(gè)了解的程度,如果你要準(zhǔn)備加深安卓基礎(chǔ)的話,好吧,NDK是1道門(mén)坎,還有后面的 架構(gòu)層,這尼瑪不花個(gè)1年你弄的定,GAP呢,如果你真要學(xué)的話,好吧,js css html5,還有web的框架,這尼瑪又是1年,你能學(xué)這些東西的條件,還是安卓基礎(chǔ)比較不錯(cuò)的情況下,gap對(duì)快速開(kāi)發(fā)是有著1定好處的,算了 不扯淡了,回到文章里面。


②開(kāi)始學(xué)NDK加入到自己的項(xiàng)目里面

基于本人水平,暫時(shí)只能用NDK拿到隱藏1些APP的隱私數(shù)據(jù),比如app的url連接,也算是1個(gè)小利用吧

1配置NDK環(huán)境 

你知道我對(duì)NDK環(huán)境的配置,最擔(dān)心的是啥不,就是ndk必備的cywin  PS:cywin是1款可以摹擬linux環(huán)境軟件
好了 到這里 大家可以移步到 android官網(wǎng)去下 NDK了。http://developer.android.com/

如果進(jìn)不去呢,可以參考我這篇帖子
讓你能閱讀谷歌網(wǎng)站,仔細(xì)研究androidAPI======有獨(dú)立看英語(yǔ)谷歌文檔的能力
  
OK,  相信大家進(jìn)了官網(wǎng)下NDK 還是會(huì)的 

解壓下載的android-ndk32-r10-windows-x86_64.zip,將其放到你想要的目錄下。

注:R7之前的版本,必須要安裝Cygwin才能使用NDK。從R7開(kāi)始,Windows版本的NDK提供了1個(gè)ndk-build.cmd腳本,可以直接利用這個(gè)腳本編譯。想要做到這1 點(diǎn),只要為Eclipse Android工程添加1個(gè)Builder,就可以實(shí)現(xiàn)Eclipse的自動(dòng)編譯NDK,這1點(diǎn)在后面的步驟會(huì)有介紹。

2,建立1個(gè)項(xiàng)目 

然后單獨(dú)建立1個(gè)包 C 建1個(gè)類(lèi) API.java   注意這1句System.loadLibrary("api"); 它可以用來(lái)裝載庫(kù)文件,不論是JNI庫(kù)文件還是非JNI庫(kù)文件
api.java
package com.qf.teach.project.zhihudaily.c; public class API { static { System.loadLibrary("api"); } /** * 主題 * @return */ public static native String getThemesUrl(); /** * 歡迎圖片 * @return */ public static native String getStartImageUrl(); /** * 本日熱聞 * @return */ public static native String getLatestUrl(); /** * 歷史新聞<br /> * 返回的字符串需要使用String.format();方法格式化<br /> * 例如:String.format(API.getBefore(), "20141201"); * @return */ public static native String getBefore(); /** * 主題列表<br /> * 返回的字符串需要使用String.format();方法格式化<br /> * 例如:String.format(API.getTheme(), "11"); * @return */ public static native String getTheme(); /** * 詳情 * 返回的字符串需要使用String.format();方法格式化<br /> * 例如:String.format(API.getStory(), "4354228"); * @return */ public static native String getStory(); /** * 詳情-評(píng)論 * 返回的字符串需要使用String.format();方法格式化<br /> * 例如:String.format(API.getStoryExtra(), "4354228"); * @return */ public static native String getStoryExtra(); }
// String.format 將指定字符串中的每一個(gè)格式項(xiàng)替換為相應(yīng)對(duì)象的值的文本等效項(xiàng)。

3,將NDK加入自己的項(xiàng)目了

1.生成java頭文件

接著就是重點(diǎn)了,在SRC目錄里建立1個(gè)jni的目錄,然后 找到api.java的目錄里 打開(kāi)CMD 命令 輸入 javah api的類(lèi)全名 
這模樣就會(huì)得到1個(gè)頭文件 ,然后將它拷貝放入 jni 目錄

2.編寫(xiě)C語(yǔ)言代碼

有人說(shuō)生成的頭文件都會(huì)出錯(cuò),我只能說(shuō),請(qǐng)留言 我把詳細(xì)教程發(fā)給你,按著步驟來(lái),ndk環(huán)境 3分鐘弄定
好吧 我先給大家看看我的頭文件吧  
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_xiaoxin_ZhiHuDateNews_c_API */ #ifndef _Included_com_xiaoxin_ZhiHuDateNews_c_API #define _Included_com_xiaoxin_ZhiHuDateNews_c_API #ifdef __cplusplus extern "C" { #endif /* * Class: com_xiaoxin_ZhiHuDateNews_c_API * Method: getThemesUrl * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getThemesUrl (JNIEnv *, jclass); /* * Class: com_xiaoxin_ZhiHuDateNews_c_API * Method: getStartImageUrl * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getStartImageUrl (JNIEnv *, jclass); /* * Class: com_xiaoxin_ZhiHuDateNews_c_API * Method: getLatestUrl * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getLatestUrl (JNIEnv *, jclass); /* * Class: com_xiaoxin_ZhiHuDateNews_c_API * Method: getBefore * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getBefore (JNIEnv *, jclass); #ifdef __cplusplus } #endif #endif


 

復(fù)制java頭文件的代碼 
JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getThemesUrl (JNIEnv *, jclass);

記住 加 env  thiz  也就變成這樣了
JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getThemesUrl (JNIEnv *env, jclass thiz){

好啦 下面就是C代碼了
# include "com_xiaoxin_ZhiHuDateNews_c_API.h" JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getThemesUrl (JNIEnv *env, jclass thiz){ return (*env)->NewStringUTF(env, "http://news-at.zhihu.com/api/3/themes"); } JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getStartImageUrl (JNIEnv *env, jclass thiz) { return (*env)->NewStringUTF(env, "http://news-at.zhihu.com/api/3/start-image/480*728"); } JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getLatestUrl (JNIEnv *env, jclass thiz) { return (*env)->NewStringUTF(env, "http://news-at.zhihu.com/api/3/stories/latest"); } JNIEXPORT jstring JNICALL Java_com_xiaoxin_ZhiHuDateNews_c_API_getBefore (JNIEnv *env, jclass thiz){ return (*env)->NewStringUTF(env, "http://news-at.zhihu.com/api/3/stories/before/%s"); }

類(lèi)里面有1個(gè) URL 也就是我要得到的URL在里面  
然后在復(fù)制1個(gè)Android.mk 進(jìn)去 
代碼以下
# Copyright (C) 2009 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE⑵.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := api LOCAL_SRC_FILES := com_xiaoxin_ZhiHuDateNews_c_API.c include $(BUILD_SHARED_LIBRARY)

LOCAL_MODULE 這個(gè)是 java代碼調(diào)用的類(lèi)的名稱(chēng),不是全類(lèi)名~~~~~~~~?
LOCAL_SRC_FILES 是 jni下C代碼 是名稱(chēng)不是全類(lèi)名~~~~~~~~~~~~~~~


3.java和c的混合編譯 

其實(shí)再次之前都還沒(méi)跟NDK扯上關(guān)系 到這里就開(kāi)始有關(guān)系了


新建并配置1個(gè)Builder

點(diǎn)擊Project->Properties->Builders->New,新建立1個(gè)Builder。在彈出的對(duì)話框上面點(diǎn)擊Program,OK!如圖所示




在彈出的對(duì)話框【Edit Configuration】中,配置選項(xiàng)卡【Main】:

Location中需要填入nkd-build.cmd的路徑(NDK安裝目錄下)。

Working Diretcoty中需要填入TestNDK的工程根目錄。如圖所示:

注:不要漏了




配置選項(xiàng)卡【Refresh】,如圖所示:

勾選“Refresh resources upon completion”,

勾選“The entire workspace”,

勾選“Recuresively include sub-folders”。


配置選項(xiàng)卡【Build Options】,如圖7所示:

勾選“After a Clean””,

勾選“During manual builds”,

勾選“During auto builds,

勾選“Specify working set of relevant resources”。

點(diǎn)擊“Specify Resources…”勾選TestNDK工程的“jni“目錄 ,Finish



然后你在按下 保存 eclipse就會(huì)自動(dòng)幫我們編譯了  如果你看到下圖 說(shuō)明你成功了


OK 下1節(jié)正式開(kāi)始講 知乎日?qǐng)?bào)的教程了~~~~~~~~~~~~~~~~~~```如果NDK配置環(huán)境出錯(cuò)了,請(qǐng)給我留言 我發(fā)詳細(xì)教程給你



生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久99爱爱 | 午夜在线观看免费观看大全 | 日韩欧美亚洲一区 | 一级aa免费视频毛片 | 国产综合成人久久大片91 | 最近视频中文在线播放 | 国产免费一区二区三区 | 尤物视频在线看 | 免费毛片网站 | 亚洲精品蜜桃久久久久久 | 国产欧美一区二区三区免费看 | 天天夜夜狠狠 | 亚洲毛片在线看 | 最近高清中文字幕在线国语5 | 国产精品亚洲精品一区二区三区 | 韩国理论片在线观看 | 噜噜噜在线视频 | 亚洲精品99久久久久久欧美版 | 日本网络视频www色高清免费 | 最猛黑人xxxⅹ黑人猛交 | 国产一区曰韩二区欧美三区 | 精品国产综合区久久久久久 | 亚洲国产成人精品不卡青青草原 | 高清欧美色欧美综合网站 | 大陆老太交xxxxxhd在线 | 婷婷亚洲国产成人精品性色 | 一牛精品视频在线观看免费 | 欧美日韩在线永久免费播放 | 一本之道无吗一二三区 | 天天久 | 337p欧洲亚洲大胆艺术 | 午夜精品久久久 | 欧美激情视频二区 | 波多野结衣与公中出中文字幕 | 色综合久久综合欧美综合图片 | 成人毛片18女人毛片免费视频未 | 亚洲精品久久久久久久无 | 欧美色综合天天综合高清网 | 日本欧美日韩 | 免费网站黄色 | 国产午夜精品不卡视频 |