安照正常狀況是很慢的或者沒法下載成功的,這個時候能夠去下載NDK壓縮包進行解壓。下面給出兩個下載地址java
(1)官網:http://wear.techbrood.com/tools/sdk/ndk/android
(2)社區:http://tools.android-studio.org/android-studio
下載完成解壓:以下圖app
新建JAVA文件NdkJniUtils並定義本地接口ide
而後clean project 再rebuild project 生成class文件,
這時候打開以下圖的文件夾看是否生成了classes文件夾,沒有生成請從新來過。
再打開Terminal輸入指令進入debug文件夾下測試
cd app/build/intermediates/classes/debug
而後再輸入指令生成頭文件,這裏javah -jni後面跟的是NdkJniUtils類的全路徑gradle
com.boyoi.ysj.hello.jni.NdkJniUtilsjavah -jni
若是沒有報錯就說明生成頭文件成功,若是報錯請檢查環境是否配置錯誤。
這時候打開classes/debug下面的文件發現多了一個文件
com_boyoi_ysj_hello_jni_NdkJniUtils.h
而後在src/main下新建文件夾jni,把生成的.h文件複製或者剪切到jni文件夾下面去,新建一個c類隨便取一個名字,添加代碼以下ui
(1)在gradle.properties文件末尾添加android.useDeprecatedNdk=true
this
(2)在app文件下得build.gradle ->defaultConfig括號內添加以下代碼spa
ndk {
moduleName "NdkJniDemo" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //輸出指定三種abi體系結構下的so庫,目前無關緊要。
}
從新build項目,發現已經沒有變紅了。接下來就是運用了,在JniUtils類裏面添加以下代碼
static {
System.loadLibrary("HelloJNI");//以前在build.gradle裏面設置的so名字,必須一致
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
public class MainActivity extends AppCompatActivity {
private TextView mTextView;
NdkJniUtils jni = new NdkJniUtils();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) this.findViewById(R.id.test);
NdkJniUtils jni = new NdkJniUtils();
mTextView.setText(jni.hello());
}
另外:打開app->intermediates-ndk-debug發現生成了三個文件夾,而且對應了以前咱們在build.gradle配置的abiFilters
注意:我也在mac下android studio 經過重複如上步湊也是成功的,下圖爲證