android - "কর্ডোভা বিল্ড অ্যান্ড্রয়েড" চালাচ্ছেন-অ্যান্ট্রিবিউট অ্যান্ড্রয়েড: ফন্টভিয়ারেশনসেটিংস এবং অ্যান্ড্রয়েড: ttcIndex সন্ধান করতে অক্ষম




cordova gradle (18)

@ ব্র্যাড পিচারের উত্তরে আপডেট:

hooks/copy_build_extras.js

#!/usr/bin/env node

var fs = require('fs');

module.exports = function (context) {
  var rootdir         = context.opts.projectRoot;
  var android_dir     = `${rootdir}/platforms/android`;
  var gradle_filename = 'build-extras.gradle';
  var gradle_file     = `${rootdir}/${gradle_filename}`;
  if (fs.existsSync(android_dir) && fs.existsSync(gradle_file)) {
    fs.createReadStream(gradle_file)
      .pipe(fs.createWriteStream(`${android_dir}/${gradle_filename}`));
  }
};

config.xml

<platform name="android">
    <allow-intent href="market:*" />
    <hook src="hooks/copy_build_extras.js" type="before_build" />
</platform>

মূল dir মধ্যে build-extras.gradle . build-extras.gradle

configurations.all {
  resolutionStrategy {
    force 'com.android.support:support-v4:27.1.0'
  }
}

আমি যখন cordova build android --buildConfig xxxx --release - দয়া করে আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex

আশ্চর্যের বিষয় হ'ল আমি সংকলনের জন্য দুটি ম্যাকোস মেশিন ব্যবহার করি এবং আমি একই কোডের জন্য কেবল একটির মধ্যে এই ত্রুটিটি পাই।

আমি দুটি মেশিনে। / ./gradlew cdvPrintProps আউটপুট দিচ্ছি:

:cdvPrintProps
cdvCompileSdkVersion=26
cdvBuildToolsVersion=27.0.3
cdvVersionCode=null
cdvMinSdkVersion=21
cdvBuildMultipleApks=true
cdvReleaseSigningPropertiesFile=release-signing.properties
cdvDebugSigningPropertiesFile=null
cdvBuildArch=null
computedVersionCode=152045989
computedArmv7VersionCode=1520459892
computedX86VersionCode=1520459894

নীচে ব্যবহৃত প্লাগইনগুলির তালিকা রয়েছে:

$ cordova plugins list
cordova-custom-config 5.0.2 "cordova-custom-config"
cordova-fabric-plugin 1.1.10 "cordova-fabric-plugin"
cordova-open-native-settings 1.5.0 "Native settings"
cordova-plugin-app-event 1.2.1 "Application Events"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-console 1.1.0 "Console"
cordova-plugin-crosswalk-webview 2.4.0 "Crosswalk WebView Engine"
cordova-plugin-datepicker 0.9.2 "DatePicker"
cordova-plugin-device 2.0.1 "Device"
cordova-plugin-email 1.2.7 "EmailComposer"
cordova-plugin-file 4.3.3 "File"
cordova-plugin-file-transfer 1.6.3 "File Transfer"
cordova-plugin-inappbrowser 1.7.2 "InAppBrowser"
cordova-plugin-network-information 1.3.4 "Network Information"
cordova-plugin-secure-storage 2.6.8 "SecureStorage"
cordova-plugin-splashscreen 4.1.0 "Splashscreen"
cordova-plugin-statusbar 2.4.1 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova.plugins.diagnostic 3.9.2 "Diagnostic"
de.appplant.cordova.plugin.local-notification 0.8.5 "LocalNotification"
ionic-plugin-keyboard 2.2.1 "Keyboard"

আমি কিভাবে এই সমস্যা ঠিক করতে পারবো?


আপনার build.gradle ফাইল অ্যাড

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

এবং আপনার project.properties cordova.system.library.3 ফাইলগুলি cordova.system.library.3 কে cordova.system.library.3=com.android.support:support-v13:27.+ cordova.system.library.3 cordova.system.library.3=com.android.support:support-v13:27.+


আপনার প্ল্যাটফর্ম / অ্যান্ড্রয়েড / বিল্ড.gradle এ নিম্নলিখিত লাইনগুলি যুক্ত করুন

  configurations.all {
        resolutionStrategy {
            force 'com.android.support:support-v4:27.1.0'
        }
    }

এখনও সমস্যা থাকলে এই কমান্ডটি চালনার চেষ্টা করুন:

cordova plugin add cordova-android-support-gradle-release --fetch

আপনার বিল্ড রান চালানোর জন্য যদি আপনার সত্যিই কেবল এই সমস্যার দ্রুত সমাধানের প্রয়োজন হয় তবে আপনি নিম্নলিখিত প্ল্যাটফর্মগুলি / অ্যান্ড্রয়েড / বিল্ড.gradle ফাইলে নিম্নলিখিত লাইনগুলি যুক্ত করার চেষ্টা করতে পারেন:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

যাইহোক, এখানে সংস্করণটি সেট করা একটি টেকসই সমাধান নয়।


আমার একই ত্রুটি আছে তবে কর্ডোভা বিল্ডে নেই। com.android.support:appcompat-v7 - com.android.support:appcompat-v7 এবং com.android.support:appcompat-v7 এর একটি নতুন সংস্করণ B তবে বেমানান সংস্করণটি তৃতীয় প্যাকেজে রয়েছে যা com.android.support:appcompat-v7 উপর নির্ভর করে com.android.support:appcompat-v7 আমি @avmatte সহ তৃতীয় প্যাকেজটি ঠিক করতে পারি না @avmatte এর সমাধান।

বেমানান প্যাকেজ সন্ধান করতে @ সাই টেজার সমাধানটি ব্যবহার করুন:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

তারপরে এটি সংশোধন করুন:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-compat:{the_same_version}'
        force 'com.android.support:appcompat-v7:{the_same_version}'
        force 'com.android.support:support-core-utils:{the_same_version}'
        force 'com.android.support:support-core-ui:{the_same_version}'
        force 'com.android.support:support-fragment:{the_same_version}'
        force 'com.android.support:support-annotations:{the_same_version}'
        ...
    }
}

উপরোক্ত কোডটি নির্ভরতা সংস্করণকে চাপ দিন।


আমারও একই ত্রুটি ঘটছে। স্পষ্টতই, com.android.support:support-v4:+ plugin.xml - plugin.xml লাইব্রেরির একটি নতুন সংস্করণ প্রকাশিত হয়েছিল এবং আমি যে প্লাগইনটি ব্যবহার করছি তা com.android.support:support-v4:+ কে plugin.xml নির্ভরতা হিসাবে ব্যাখ্যা করে। + চিহ্নটির অর্থ এটি সর্বশেষতম সংস্করণ (২৮.০.০) পাবে, যা অন্য প্লাগইনগুলির সাথে বেমানান বলে মনে হচ্ছে।

com.android.support:support-v4:+ থেকে com.android.support:support-v4:+ সমস্ত প্লাগইন নির্ভরতা পরিবর্তন করে আমি একটি উন্নয়ন সংস্করণ তৈরি করতে সক্ষম হয়েছি। এছাড়াও, আমি ionic cordova platform remove android এবং ionic cordova platform add android । আশা করি এটি কমপক্ষে উন্নয়নের জন্য সহায়তা করে।


আমি আয়নিক ফোরামটিতে সমাধানটি পেয়েছি, এটিই ছিল আমার জন্য একমাত্র সমাধান:

চালান:

আয়নিক কর্ডোভা প্ল্যাটফর্ম আরএম অ্যান্ড্রয়েড

চালান:

আয়নিক কর্ডোভা প্ল্যাটফর্মটি [email protected] যুক্ত করুন

চালান:

আয়নিক কর্ডোভা প্লাগইন কর্ডোভা-প্লাগইন-অ্যান্ড্রয়েডেক্স যুক্ত করে

চালান:

আয়নিক কর্ডোভা প্লাগইন কর্ডোভা-প্লাগইন-অ্যান্ড্রয়েডএক্স-অ্যাডাপ্টার যুক্ত করে

আপনার গ্রেড.প্রোপার্টি রয়েছে তা নিশ্চিত করুন:

cdvMinSdkVersion = 19

আপনার বিল্ড.gradle রয়েছে তা নিশ্চিত করুন:

project.ext { defaultBuildToolsVersion="28.0.3" //String 

defaultMinSdkVersion=19 //Integer - Minimum requirement is Android 4.4 

defaultTargetSdkVersion=28 //Integer - We ALWAYS target the latest by default 

defaultCompileSdkVersion=28 //Integer - We ALWAYS compile with the latest by default }

আপনার কনফিগারেশন.এক্সএমএল রয়েছে তা নিশ্চিত করুন:

<preference name="android-minSdkVersion" value="19" />

থেকে: https://forum.ionicframework.com/t/firebase-app-unable-to-compile-on-android-with-aapt-error/166564/7

যা স্ট্যাকওভারফ্লো উত্তরেও পরিচালিত হয়: https://.com/a/56656680/839691


আমি এই সমস্যাটি সবেমাত্র প্ল্যাটফর্ম / অ্যান্ড্রয়েড ফোল্ডারে গিয়ে project.properties সম্পাদনা) ফাইল সম্পাদনা করে com.android.support:support-v4:+ সাথে com.android.support:support-v4:27.1.0 প্রতিস্থাপন করেছি।


আমি দেশীয় প্রতিক্রিয়া সহ এই সমস্যাটি নিয়ে android/app/build.gradle এবং এটি আমার android/app/build.gradle এ নিম্নলিখিত লাইনগুলির কারণে android/app/build.gradle :

implementation ("com.google.android.gms:play-services-base:+") {
  force = true;
}
implementation ("com.google.android.gms:play-services-maps:+") {
  force = true;
}

ইত্যাদি ...

স্পষ্টতই এটি + নতুন 17.0.0 সংস্করণে সমাধান হয়েছে যা আমার বিল্ডটি ভেঙে দিয়েছে।
+ 16.0.0 (অথবা প্লে-পরিষেবাদি-বেসের জন্য 16.0.1) তে পরিবর্তন করা আমার সমস্যার সমাধান করেছে


একই সমাধান সহ আরেকটি অ্যাপ্রোচ হুক তৈরি করা। এটি অবিচল (প্ল্যাটফর্ম পুনরায় ইনস্টল করার পরে), আপনি এটি প্রতিশ্রুতিবদ্ধ করতে পারেন এবং এটি পুনরায় যুক্ত করার প্ল্যাটফর্মের প্রয়োজন হয় না।

% প্রকল্পের% \ স্ক্রিপ্ট \ অ্যান্ড্রয়েড \ অ্যান্ড্রয়েড-সমর্থন-version.js

#!/usr/bin/env node

var fs = require('fs');

function replace_strings_in_file(filename, replacementsObject) {
  if (fs.existsSync(filename)) {
    var data = fs.readFileSync(filename, 'utf8');
    Object.keys(replacementsObject).forEach(function (to_replace) {
      var replace_with = replacementsObject[to_replace];
      data = data.replace(to_replace, replace_with);
    });
    console.log(data);
    fs.writeFileSync(filename, data, 'utf8');
  } else {
    console.log('file not found');
  }
}

module.exports = function (context) {
  var rootdir = process.argv[2];
  if (rootdir) {
    replace_strings_in_file("platforms/android/project.properties", {'com.android.support:support-v4:+': 'com.android.support:support-v4:27.1.0'});
    console.log('com.android.support version fix');
  }
};

কনফিগার ইন হুক

% প্রকল্পের% \ config.xml

...
<platform name="android">
  <hook src="scripts/android/android-support-version.js" type="before_build" />
  ...

আপনার প্রকল্পে fs নির্ভরতা ইনস্টল করুন:

এনপিএম আমি এফএস - সেভ-দেব

রান বিল্ড:

কর্ডোভা বিল্ড অ্যান্ড্রয়েড


এটি অদ্ভুত, তবে যখন আমি একই সংস্করণগুলির সাথে নীচের লাইনগুলি যুক্ত করি তখন এটি কার্যকর হয়।

platforms/android/build.gradle ফাইলটিতে এটি আমার সম্পর্কিত লাইনগুলি:

dependencies {
  compile fileTree(dir: 'libs', include: '*.jar')
  // SUB-PROJECT DEPENDENCIES START
  debugCompile(project(path: "CordovaLib", configuration: "debug"))
  releaseCompile(project(path: "CordovaLib", configuration: "release"))
  compile "com.android.support:support-v4:26.+"
  compile "com.android.support:appcompat-v7:26.+"
  // SUB-PROJECT DEPENDENCIES END
}

// ADDED THESE LINES
configurations.all {
  resolutionStrategy.force 'com.android.support:support-v4:26+'
}

আমার প্রকল্পে, 'কর্ডোভা-প্লাগইন-ক্রসওয়াক-ওয়েবভিউ' প্লাগইনের কারণে সমস্যাটি দেখা দিয়েছে।


এটি সহজতর করার সহজ এবং সঠিক উপায়!

কেবল এসডিকে আপডেট করুন এবং অ্যান্ড্রয়েডের সর্বশেষ 2 সংস্করণ যুক্ত করুন ... এবং কম্পিউটারটি পুনরায় চালু করুন! সম্পন্ন...

এখন আমাদের গাড়ি এবং খেলাধুলার বিষয়ে কথা বলার সময় হয়েছে ...


কেবল বিল্ড-এক্সট্রাস.gradle এ নিম্নলিখিতটি রাখুন

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

কোটলিন বিকাশকারীদের জন্য কেবল কয়েকটি টিপস:

আপনি যদি এই উত্তরগুলি এখানে অনুসরণ করেন তবে আপনি নিশ্চিত যে আপনার প্রকল্পে support-v4 লাইব্রেরি নেই তবে আপনি এখনও এই ত্রুটিটি দেখছেন, দয়া করে ktx লাইব্রেরিটি একবার দেখুন।

আমি কেবল এটি আবিষ্কার করেছি যে আমি কেটিএক্স লাইব্রেরির জন্য সর্বশেষতম 1.0.0-alpha1 সংস্করণটি ব্যবহার করছি এবং এই ত্রুটিটি দেখিয়েছি; আমি সংস্করণ 0.3 ফিরে যাওয়ার পরে সবকিছু এখন স্বাভাবিক অবস্থায় ফিরে আসছি।


গুগল com.android.support:support-v4 এর নতুন সংস্করণটি 28.0.0-alpha1 প্রকাশ করেছে যা 2 টি নতুন বৈশিষ্ট্য যুক্ত করছে (অ্যান্ড্রয়েড: ফন্টভিয়ারেশনসেটিংস এবং অ্যান্ড্রয়েড: ttcIndex)। কিছু প্লাগইন সর্বশেষতম অ্যান্ড্রয়েড-সমর্থন লাইব্রেরি ব্যবহার করছে যার ফলশ্রুতিতে অযাচিত অসুবিধাগুলি রয়েছে।

বিকল্প 1: কর্ডোভা-অ্যান্ড্রয়েড-সমর্থন-গ্রেডেল-রিলিজ প্লাগইন ইনস্টল করুন।

ওয়েল ডকুমেন্টেড প্লাগইন যা "অন্যান্য প্লাগইনগুলি দ্বারা নির্দিষ্ট অ্যান্ড্রয়েড সমর্থন লাইব্রেরির নির্দিষ্ট সংস্করণে নির্দিষ্ট সংস্করণে প্রান্তিক করে তোলে"। কোনও ধ্বংসাত্মক আচরণ ছাড়াই পরীক্ষিত।

cordova plugin add cordova-android-support-gradle-release --fetch

বিকল্পগুলির একটি সম্পূর্ণ সেটের জন্য ডকুমেন্টেশন পড়ুন: Readme

বিকল্প 2 : প্ল্যাটফর্মগুলি / অ্যান্ড্রয়েডের অধীনে বিল্ড . gradle এ পরবর্তী কোড স্নিপেট যুক্ত করুন

/** 
IMPORTANT - Manually added
Problem: 8 March 2018 - Google released version support-v4:28.0.0-alpha1 
which breaks the project with following error: unable to find attribute 
android:fontVariationSettings and android:ttcIndex

Effect: Force a specific version of the library
*/

configurations.all {
    resolutionStrategy.force 'com.android.support:support-v4:27.1.0'
}

সতর্কতা: আপনি অ্যান্ড্রয়েড প্ল্যাটফর্মটি সরিয়ে / যুক্ত করলে বিল্ড . gradle এর কোড ওভাররাইট করা হবে। আপনি যদি কোনও কারণে প্লাগইনটি ব্যবহার করতে না চান বা কোনওভাবে আপনার জন্য কাজ না করে থাকেন তবে পরিবর্তে একটি হুক তৈরি করুন এবং প্রতিবার ফাইলটি ওভাররাইট করুন। here দ্বিতীয় মন্তব্য চেক here ।

সমস্যা যদি অবিরাম থাকে তবে আপনি চেষ্টা করতে পারেন:

cordova platform rm android
cordova platform add android

অথবা

আপনার পরীক্ষা করা ডিভাইসে অ্যাপ্লিকেশনটির পূর্ববর্তী সংস্করণটি ইনস্টল করা নেই তা নিশ্চিত করুন কারণ এটি বিদ্যমান সংস্করণটি ডাউনগ্রেড করার চেষ্টা করলে আপনি একটি দ্বিধাদ্বন্দ্বপূর্ণ ত্রুটি পাবেন: "INSTALL_FAILED_VERSION_DOWNGRADE" এবং "UnhandledPromiseRejectWarning: Unhandled वचन প্রত্যাখ্যান"


প্ল্যাটফর্ম ডিরেক্টরিটি পুনর্নির্মাণ করা অব্যাহত থাকলে এটি স্থির করার একটি সহজ উপায় এখানে রয়েছে এবং কোনও অপরাধীকে চেষ্টা করার জন্য এবং আপনার সমস্ত প্লাগইন পেরিয়ে যাওয়ার দরকার নেই। এই বিষয়বস্তুগুলির সাথে একটি ফাইল build-extras.gradle তৈরি করুন:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:27.1.0'
    }
}

তারপরে নিম্নলিখিত বিষয়বস্তু সহ after_platform_add/010_copy_build_extras.js তৈরি করুন:

#!/usr/bin/env node

var fs = require('fs');

var rootdir = process.argv[2];
var android_dir = `${rootdir}/platforms/android`;
var gradle_filename = 'build-extras.gradle';
var gradle_file = `${rootdir}/${gradle_filename}`;
if (fs.existsSync(android_dir) && fs.existsSync(gradle_file)) {
  fs.createReadStream(gradle_file)
    .pipe(fs.createWriteStream(`${android_dir}/${gradle_filename}`));
}

এখন অ্যান্ড্রয়েড প্ল্যাটফর্মটি পুনরায় তৈরি করুন এবং এটি পিনড সমর্থন লাইব্রেরিটি ব্যবহার করবে।


সমাধান লিঙ্ক

এটি কমপ্যাট প্লাগইনের কারণে। আপনার যদি পুরানো সংস্করণ ( 1.2.0 এর কম) থাকে এবং কর্ডোভা- অ্যান্ড্রয়েড@6.3.0 সেট করে থাকেন তবে সেই প্লাগইনটি সরান

কর্ডোভা প্লাগইন আরএম কর্ডোভা-প্লাগইন-কম্প্যাট - ফোর্স

কর্ডোভা প্লাগইন কর্ডোভা- প্লাগিন[email protected] যোগ করুন

কর্ডোভা প্ল্যাটফর্ম আরএম অ্যান্ড্রয়েড

আয়নিক কর্ডোভা প্ল্যাটফর্মটি [email protected] যুক্ত করুন

আমার ক্ষেত্রে কাজ করছি। ধন্যবাদ :)


প্ল্যাটফর্ম / অ্যান্ড্রয়েড / অ্যাপ্লিকেশন / বিল্ড.gradle ফাইলে বিল্ডস্ক্রিপ্ট}} ব্লকের ঠিক পরে নিম্নলিখিত কোডগুলির লাইন রেখে এই সমস্যাটি ঠিক করুন:

configurations.all {
    resolutionStrategy {
            force 'com.android.support:support-v4:27.1.0'
    }
}




gradle