6

解決できないようなこの問題に直面しています。ここにシナリオがあります:ABI分割による特定のアーキテクチャーのための依存関係依存性

私はグラデル依存性を使用している建物apkとこの依存関係はアーキテクチャに特化していますこれはx86用のapkのために私は別の依存関係が必要です。

私は、製品の味とそれを解決:

productFlavors { 

    dev { ... } 
    develx86 { ... } 
    production { ... } 
    productionx86 { ... } 

} 

は、それでは私はこのような依存関係を定義した:

develCompile 'dependency_for_arm' 
develx86Compile 'dependency_for_x86' 

これは良い作品。しかし、最近私は自分のアプリケーションにレンダスクリプトの使用法を追加しなければならなかった。私はこの方法でそれをやった:

renderscriptTargetApi 22 
renderscriptSupportModeEnabled true 

そして、この後、私はGoogle PlayのAPKをアップロードするとき、それはそれはAPKはアーム、x86ので適していると言います。私はこれがいかに可能かわかりません。あなたは別のCPUを持つデバイス上でクラッシュすると思う(私はアームのためのAPKを生成し、ユーザーがx86アプリケーションでそれを実行するクラッシュする場合)。

だから私は、ABIを使用するdecitedは分割:

splits { 
     abi { 
      enable true 
      reset() 
      include 'armeabi', 'x86' 
      universalApk false 
     } 
    } 

//Ensures architecture specific APKs have a higher version code 
//(otherwise an x86 build would end up using the arm build, which x86 devices can run) 
ext.versionCodes = [armeabi:0, x86:1] 

import com.android.build.OutputFile 

android.applicationVariants.all { variant -> 
    // assign different version code for each output 
    variant.outputs.each { output -> 
     int abiVersionCode = project.ext.versionCodes.get(output.getFilter(OutputFile.ABI)) ?: 0 
     output.versionCodeOverride = android.defaultConfig.versionCode + abiVersionCode 
    } 

しかし、私は、生成されたAPKファイルを参照するとき、私はセクションを開いたときに今、味固有がAPKとAPKに含まれていないで、私の依存関係がクラッシュしますこの依存関係からAPIを使用します。

誰かがこの問題を解決する方法を知っていますか?または、誰かが私がレンダスクリプトを含んでいたときにapkが両方のアーキテクチャ用であるとGoogle Playに言う理由を知っていますか? (それがなければ正常に動作しますが、レンダスクリプトが必要です)。

ありがとうございます。私はどんな助けにも感謝します。

+0

任意の運?あなたがそれを見つけた場合は答えを投稿してください –

答えて

0

申し訳ありません。インラインではまだコメントできません。

apkには、特にres/raw /とlib /には何がありますか? また、gradle-plugin 2.1.0を使用していますか? (renderscriptTargetApi 22を使用しているため)、Build-Tools 23.0.3を試してみましたか?

2

フォルダーの下にあるAPKを見ると、レンダースクリプトのサポートモードでは、サポートしているアーキテクチャ以外のアーキテクチャ用のライブラリが追加されているはずです。

以前の設定をABI固有のフレーバーで保持することができます。 しかし、他のアーキテクチャのためのLIBSが含まれていないことを確実にするために、あなたの味にabiFiltersを追加してみてください:

productFlavors { 

    dev { ... ndk.abiFilters 'armeabi-v7a' } 
    develx86 { ... ndk.abiFilters 'x86' } 
    production { ... ndk.abiFilters 'armeabi-v7a' } 
    productionx86 { ... ndk.abiFilters 'x86' } 

} 
+0

ありがとう、私はあなたに知らせてくれます。 – Sajmon

関連する問題