Cordova-plugin-firebase: 였λ₯˜: ν•­λͺ© String/google_app_idλ₯Ό 두 번 이상 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2017λ…„ 08μ›” 25일  Β·  23μ½”λ©˜νŠΈ  Β·  좜처: arnesson/cordova-plugin-firebase

μƒˆ νƒœκ·Έμ˜ μ£Όμš” λ³€κ²½ 사항: "cordova-plugin-firebase": "^0.1.24",

FAILURE: μ˜ˆμ™Έμ™€ ν•¨κ»˜ λΉŒλ“œμ— μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.

  • 무엇이 잘λͺ»λ˜μ—ˆλŠ”지:
    ':mergeReleaseResources' μž‘μ—…μ„ μ‹€ν–‰ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.
    > /Users/zoltan/Developer/myProject/platforms/android/res/values/strings.xml: 였λ₯˜: λ¬Έμžμ—΄/google_app_id ν•­λͺ©μ„ 두 번 이상 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.

string.xml의 λ‚΄μš©:

<?xml version='1.0' encoding='utf-8'?>
<resources>
    <string name="app_name">My app name</string>
    <string name="launcher_name">@string/app_name</string>
    <string name="activity_name">@string/launcher_name</string>
    <string name="google_app_id">xxxxxxx---xxxxxxx</string>
    <string name="google_api_key">xxxxxxx---xxxxxxx</string>
    <string name="google_app_id">@string/google_app_id</string>
    <string name="google_api_key">@string/google_api_key</string>
</resources>

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

string.xmlμ—μ„œ 이것을 μ œκ±°ν•˜μ‹­μ‹œμ˜€.

<string name="google_app_id">Your API ID</string>
<string name="google_api_key">Your API KEY</string>
<string name="google_app_id">@string/google_app_id</string>
<string name="google_api_key">@string/google_api_key</string>

λ‚˜λ₯Ό μœ„ν•΄ 일해

λͺ¨λ“  23 λŒ“κΈ€

google_app_id 및 google_api_key도 μΆ”κ°€ν•˜λŠ” λ‹€λ₯Έ ν”ŒλŸ¬κ·ΈμΈμ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

0.1.24μ—μ„œλ„ 같은 λ¬Έμ œμ— μ§λ©΄ν–ˆμŠ΅λ‹ˆλ‹€. ~그리고 이 λ¬Έμ œλŠ” 릴리슀 λΉŒλ“œμ—μ„œλ§Œ λ°œμƒν•©λ‹ˆλ‹€.~
google_app_id 및 google_api_key도 μΆ”κ°€ν•˜λŠ” λ‹€λ₯Έ ν”ŒλŸ¬κ·ΈμΈμ΄ μ—†μŠ΅λ‹ˆλ‹€.

문제λ₯Ό μž¬ν˜„ν•˜λ €λ©΄:

  1. ν”ŒλŸ¬κ·ΈμΈ 및 ν”Œλž«νΌ 폴더 μ‚­μ œ
  2. ν”Œλž«νΌ μ•ˆλ“œλ‘œμ΄λ“œ μΆ”κ°€
  3. ν”Œλž«νΌ ios μΆ”κ°€
  4. μ•ˆλ“œλ‘œμ΄λ“œ 버전을 λΉŒλ“œν•˜λ €κ³ 

λ¬Έμ œλŠ” ios ν”Œλž«νΌμ΄ μΆ”κ°€λ˜λ©΄ after_prepare 파일이 λ‹€μ‹œ μ‹€ν–‰λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
λ˜ν•œ λ‹€μŒμ„ μ‹œλ„ν•©λ‹ˆλ‹€.
if (directoryExists(IOS_DIR)) { copyKey(PLATFORM.IOS); } else if (directoryExists(ANDROID_DIR)) { copyKey(PLATFORM.ANDROID, updateStringsXml) }

λ”°λΌμ„œ copyKey(PLATFORM.ANDROID, updateStringsXml)κ°€ μ‹€ν–‰λ˜κ³ ,
ν‚€λ₯Ό λ³΅μ‚¬ν•œ λ‹€μŒ ν•¨μˆ˜ μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ―€λ‘œ 콜백 ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λˆ„κ΅¬λ‚˜μ΄ 문제의 해결책을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. λΉŒλ“œκ°€ μ„±κ³΅ν•œ ν›„ plugin.xmlμ—μ„œ λͺ‡ 쀄을 μ œκ±°ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ λ‘œκ·Έμ—μ„œ μ•„λž˜ 였λ₯˜λ₯Ό λ³΄μ•˜μŠ΅λ‹ˆλ‹€.
GoogleServiceλ₯Ό μ΄ˆκΈ°ν™”ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€. μƒνƒœ: 10, 이름이 google_app_id인 λ¬Έμžμ—΄ λ¦¬μ†ŒμŠ€μ—μ„œ Google μ•± ID 값이 μ—†μŠ΅λ‹ˆλ‹€.

μ•ˆλ…•, λ‚˜λŠ” λ˜ν•œμ΄ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 버전 0.1.22κ°€ μ €μ—κ²Œ λ§ˆμ§€λ§‰μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

@zerdosκ°€ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. 쒋은 λΆ„μ„μž…λ‹ˆλ‹€.

λ‚˜λŠ” μ½”λ₯΄λ„λ°” ν”Œλž«νΌμ΄ iosλ₯Ό μΆ”κ°€ν•˜κΈ° 전에 μ½”λ₯΄λ„λ°” ν”Œλž«νΌ μΆ”κ°€ μ•ˆλ“œλ‘œμ΄λ“œλ₯Ό ν•˜κ³  μžˆμ—ˆλŠ”λ° ... 이제 μž‘λ™ν•©λ‹ˆλ‹€.

cordova build android ν•  λ•Œλ§ˆλ‹€ 이 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. 맀번 google_app_id / keyλ₯Ό res/values/strings.xml에 λ‹€μ‹œ μΆ”κ°€ν•˜λ―€λ‘œ λΉŒλ“œκ°€ μ‹€νŒ¨ν•©λ‹ˆλ‹€.

@inidona λ₯Ό 0.1.22둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν•˜λŠ” 것도 μ €μ—κ²Œ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

같은 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‹€μ œ after_prepare의 λ‚΄μš©μ€ npm νŒ¨ν‚€μ§€ 버전보닀 μ΅œμ‹  λ²„μ „μ΄μ§€λ§Œ μŠ€ν¬λ¦½νŠΈλŠ” 같은 λ‚ μ§œ 버전에 λ³‘ν•©λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?

$ cordova clean android μ—¬κΈ°μ—μ„œ μΌν–ˆμŠ΅λ‹ˆλ‹€

λ‚΄κ°€ λ―ΏλŠ” λ¬Έμ œλŠ” κ΅¬μ„±μ—μ„œ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

<config-file parent="/resources" target="res/values/strings.xml">
    <string name="google_app_id">@string/google_app_id</string>
</config-file>
<config-file parent="/resources" target="res/values/strings.xml">
    <string name="google_api_key">@string/google_api_key</string>
</config-file>

λ‹¬μ„±ν•˜λ €λŠ” 것이 무엇인지 ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ λ‚΄ 것을 λ‹€μŒμœΌλ‘œ λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

<preference name="API_KEY"/>
<preference name="APP_ID"/>

<config-file parent="/resources" target="res/values/strings.xml">
    <string name="google_app_id">$APP_ID</string>
    <string name="google_api_key">$API_KEY</string>
</config-file>

μΆ”κ°€ν•˜μ—¬ ν”ŒλŸ¬κ·ΈμΈμ„ μ„€μΉ˜ν•©λ‹ˆλ‹€.

cordova plugin add ../plugins/my-firebase-plugin --variable APP_ID=my-app-id --variable API_KEY=my-api-key

이제 잘 μž‘λ™ν•©λ‹ˆλ‹€.

cordova-plugin-firebase/scripts/after_prepare.js λ₯Ό λ³€κ²½ν•˜μ—¬ ios와 androidκ°€ λͺ¨λ‘ μ‘΄μž¬ν•˜λŠ” 경우 λ‘˜ λ‹€ λ³΅μ‚¬λ˜λ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.

if (directoryExists(IOS_DIR)) {
    copyKey(PLATFORM.IOS);
}

if (directoryExists(ANDROID_DIR)) {
    copyKey(PLATFORM.ANDROID, updateStringsXml);
}

같은 문제! μ–΄λ–€ 해결책이 μžˆμŠ΅λ‹ˆκΉŒ?
λ¨Όμ € google-services.jsλ₯Ό λ³΅μ‚¬ν•œ ν›„ cliλ₯Ό 톡해 ν”ŒλŸ¬κ·ΈμΈμ„ μΆ”κ°€ν•˜κ³  λΉŒλ“œν•©λ‹ˆλ‹€. 그리고 μœ„μ˜ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€ ....

@rabinski99 이것은 μ•„μ£Ό 쒋은 μ œμ•ˆμž…λ‹ˆλ‹€!

string.xmlμ—μ„œ 이것을 μ œκ±°ν•˜μ‹­μ‹œμ˜€.

<string name="google_app_id">Your API ID</string>
<string name="google_api_key">Your API KEY</string>
<string name="google_app_id">@string/google_app_id</string>
<string name="google_api_key">@string/google_api_key</string>

λ‚˜λ₯Ό μœ„ν•΄ 일해

@stephdgenius ν›Œλ₯­ν•©λ‹ˆλ‹€! 그것이 μ˜¬λ°”λ₯Έ 해결책이며 μ‚­μ œν•˜κ³  λ‹€λ₯Έ 것은 μ—†μŠ΅λ‹ˆλ‹€. 그것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€. 맀우 κ°μ‚¬ν•©λ‹ˆλ‹€!

API ID
API ν‚€
@string/google_app_id
@string/google_api_key

@aaaaaaaaaaaaa
μ œκ±°ν–ˆμ§€λ§Œ μ§€κΈˆμ€ 이 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
였λ₯˜: null의 'ν…μŠ€νŠΈ' 속성을 μ„€μ •ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

string.xml λ˜λŠ” λΉŒλ“œ 쀑에 μƒμ„±λœ λͺ¨λ“  νŒŒμΌμ„ μ—…λ°μ΄νŠΈν•˜λŠ” 것은 μ†”λ£¨μ…˜μ΄ μ•„λ‹ˆλ©° 문제의 ν•΄κ²° λ°©λ²•μž…λ‹ˆλ‹€. μˆ˜λ™μœΌλ‘œ νŒŒμΌμ„ μ—…λ°μ΄νŠΈν•  ν•„μš” 없이 μ•ˆμ •μ μ΄κ³  반볡 κ°€λŠ₯ν•œ λΉŒλ“œκ°€ ν•„μš”ν•©λ‹ˆλ‹€.

https://github.com/arnesson/cordova-plugin-firebase/issues/407#issuecomment -337633326

μ•ˆμ •μ μ΄κ³  반볡 κ°€λŠ₯ν•˜λ©° μˆ˜λ™μœΌλ‘œ νŒŒμΌμ„ μ—…λ°μ΄νŠΈν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

Android ν”Œλž«νΌμ„ μ œκ±°ν–ˆλ‹€κ°€ λ‹€μ‹œ μΆ”κ°€ν–ˆλŠ”λ° 였λ₯˜(Found item String/google_app_idλ₯Ό 두 번 이상 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€)κ°€ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆλ‹€.

μ½”λ₯΄λ„λ°” ν”Œλž«νΌ rm μ•ˆλ“œλ‘œμ΄λ“œ
μ½”λ₯΄λ„λ°” ν”Œλž«νΌ μ•ˆλ“œλ‘œμ΄λ“œ μΆ”κ°€

문제의 원인을 찾은 것 κ°™μŠ΅λ‹ˆλ‹€ . https://github.com/phonegap/phonegap-plugin-push/issues/1660 이 문제λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

본질적으둜 이것은 phonegap-plugin-push cordova ν”ŒλŸ¬κ·ΈμΈμ˜ 버전 < 2.0을 μ‚¬μš©ν•˜λŠ” 경우 λ°œμƒν•˜λ―€λ‘œ λΆ„λͺ…νžˆ 이 ν”ŒλŸ¬κ·ΈμΈμ˜ 버전에 관계없이 좩돌이 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€(0.1.22둜 μ‹œλ„ν–ˆμ§€λ§Œ μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. ).

https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/INSTALLATION.md#co -existing-with-plugins-that-use-firebase도 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

μ§€κΈˆμ€ λ‹«κ³  ν”ŒλŸ¬κ·ΈμΈμ˜ μ΅œμ‹  버전에 μ—¬μ „νžˆ λ¬Έμ œκ°€ 있으면 λ‹€μ‹œ μ—½λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”,
제발 λ„μ™€μ£Όμ„Έμš” resultTextview 항상 였λ₯˜ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?
@μš°μ„Έν•˜λ‹€
보호된 무효 onCreate(μ €μž₯된 μΈμŠ€ν„΄μŠ€ μƒνƒœ λ²ˆλ“€) {
super.onCreate(μ €μž₯된 μΈμŠ€ν„΄μŠ€ μƒνƒœ);
setContentView(R.layout.activity_main);

    Button addBtn = (Button) findViewById(R.id.addBtn);
    addBtn.setOnClickListener(new View.OnClickListener()){
        <strong i="11">@Override</strong>
        public void OnClick(View View){
            EditText FirstNumEditText = (EditText) findViewById(R.id.firstNumEditText);
            EditText SecondNumEditText = (EditText) findViewById(R.id.secoundNumEditText);
            TextView Result = (TextView)findViewById(R.id.resultTextview);

            int num1 = Integer.parseInt(FirstNumEditText.getText() .toString());
            Resources secoundNumEditText;
            int num2 = Integer.parseInt(secoundNumEditText.getText() .toString());
            int result = num1 + num2;
            int result = num1 / num2;
            int result = num1 * num2;
            resultTextview.SetText{result + "");

@μš°μ„Έν•˜λ‹€
보호된 무효 onCreate(μ €μž₯된 μΈμŠ€ν„΄μŠ€ μƒνƒœ λ²ˆλ“€) {
super.onCreate(μ €μž₯된 μΈμŠ€ν„΄μŠ€ μƒνƒœ);
setContentView(R.layout.activity_main);

    Button addBtn = (Button) findViewById(R.id.addBtn);
    addBtn.setOnClickListener(new View.OnClickListener()){
        <strong i="9">@Override</strong>
        public void OnClick(View View){
            EditText FirstNumEditText = (EditText) findViewById(R.id.firstNumEditText);
            EditText SecondNumEditText = (EditText) findViewById(R.id.secoundNumEditText);
            TextView Result = (TextView)findViewById(R.id.resultTextview);

            int num1 = Integer.parseInt(FirstNumEditText.getText() .toString());
            Resources secoundNumEditText;
            int num2 = Integer.parseInt(secoundNumEditText.getText() .toString());
            int result = num1 + num2;
            int result = num1 / num2;
            int result = num1 * num2;
            resultTextview.SetText{result + "");

여기에 resultTextView 였λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄μœ κ°€ μ—†μŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰