タイトルが言っているように-既存のAndroid Studioプロジェクトにネイティブコードを追加する方法、グラドルとプロガード設定を含む現在のプロジェクトを壊さずに?
既存のプロジェクトから次の手順を実行します。
apply plugin: 'com.Android.model.application'
model {
Android.signingConfigs {
create ("myConfig") {
keyAlias '--your-key-alias--'
keyPassword '--key-password--'
storeFile file('--/path/to/keystore.jks--')
storePassword '--store-password--'
}
}
Android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "--your.app.name--"
minSdkVersion.apiLevel 19
targetSdkVersion.apiLevel 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles.add(file('proguard-Android-optimize.txt'))
proguardFiles.add(file('proguard-rules.pro'))
signingConfig = $("Android.signingConfigs.myConfig")
}
}
ndk {
moduleName "--c-file--"
ldLibs.addAll(["Android", "log"])
}
}
Android.dexOptions {
javaMaxHeapSize "2048m"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:25.3.1'
}
上記のコードをコピーして貼り付け、少なくとも「--value--」で値を変更して自分のものに一致させることができます。
このようなことを言うところ:
dependencies {
classpath 'com.Android.tools.build:gradle:2.3.3'
}
これに:
dependencies {
classpath 'com.Android.tools.build:gradle-experimental:0.9.3'
}
私の例の数字0.9.3はgradle-experimentalの最新バージョンです here 。最終的に、gradle-wrapper.propertiesのgradleバージョンをAndroid Studioで推奨されていない場合はStudioが推奨するバージョンに変更します。
proguard-Android-optimize.txt
からapp/proguard-Android-optimize.txt
このような
static {
System.loadLibrary("--c-file--");
}
private native byte my_jni(Context context, byte[] mByte, int i);
ニーズに合わせて変更します。上記の例は、Cファイル(拡張子なしで書き込み)を読み込みます-gradleファイルで宣言されたものと同じで、関数my_jniを呼び出して、アプリケーションのコンテキスト、バイト配列、およびintを渡し、関数がバイトを返すことを期待します。
これで、関数の名前が赤で強調表示されます-Android Studioで作成できますCreate function ...
行の赤いランプをクリックして。これにより、cファイルに関数が作成され、フォーカスが変更されます。
さらに読む ここ 。
ヒント:
free
、すべてのmalloc
など、ReleaseByteArrayElements
、GetByteArrayElements
などすべてに注意してください
配列や文字列など、いくつかのdangerous値をCからJavaに適切に返す方法に注意してください
Android Studio 3.1の簡単な方法:
1。 app\src\main
内にcpp
フォルダーを作成します。
2。 <YOUR_FILE_NAME>.cpp
パスにapp\src\main\cpp
ファイルを作成します(例:native-lib.cpp)
3。 CMakeLists.txt
ファイルをapp
フォルダーに追加します。
ライブラリのそのファイル名で、.cpp
ファイルパスとその他の設定を定義する必要があります。 (新しい、空のAndroid C++をサポートするStudioプロジェクトから):
# For more information about using CMake with Android Studio, read the
# documentation: https://d.Android.com/studio/projects/add-native-code.html
# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.4.1)
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp )
^^^^^^^^^^^^^^
YOUR_CPP_FILE_NAME
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
target_link_libraries( # Specifies the target library.
native-lib
# Links the target library to the log library
# included in the NDK.
${log-lib} )
4。 build.gradle(モジュールアプリ)externalNativeBuild
をCMakeLists.txt
を参照してAndroid
セクションに追加します:
Android {
compileSdkVersion 26
defaultConfig {
...
}
buildTypes {
...
}
externalNativeBuild { <--- these lines should be added
cmake { <--- these lines should be added
path "CMakeLists.txt" <--- these lines should be added
} <--- these lines should be added
} <--- these lines should be added
}
5。 build.gradle(モジュールアプリ)externalNativeBuild
タグとcmake
タグをdefaultConfig
セクションに追加:
...
defaultConfig {
applicationId "<YOUR_APP_ID>"
minSdkVersion 26
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild { <--- these lines should be added
cmake { <--- these lines should be added
cppFlags "" <--- these lines should be added
} <--- these lines should be added
} <--- these lines should be added
}
...
( "basic" build.gradle
ファイルの例は、新しい空のAndroid C++をサポートするStudioプロジェクトでも利用可能)
6。プロジェクトをGradleファイルと再同期します
プロジェクトの同期をクリックして ツールバーで。 NB! Android Studio 3.3では、アイコンは 。
また、 公式チュートリアル もご覧ください。
PS。ファイルがcpp
フォルダーに表示されない場合:
File/Invalidate Caches & Restart
を Thinh V のコメントに記載されているように試してください。