Không thể giải quyết R - Lỗi Android


1072

Tôi vừa tải xuống và cài đặt SDK Android mới. Tôi muốn tạo một ứng dụng đơn giản để lái thử nó.

Trình hướng dẫn đã tạo mã này:

package eu.mauriziopz.gps;

import android.app.Activity;
import android.os.Bundle;

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

nhưng Eclipse cho tôi lỗi

R không thể được giải quyết

Trực tuyến

setContentView(R.layout.main);

Tại sao?

PS: Tôi có một tệp XML được đặt tên main.xmltheo res/layout/.


Đối với những người vẫn gặp một số vấn đề với nhật thực không thể cập nhật / tạo R.java. Một giải pháp có thể là bằng cách tạo một xml giả và chỉ cần xóa xml đó. Trong trường hợp của tôi, đây là giải pháp
chối

Thành thật mà nói, điều này nghe có vẻ ngu ngốc (và đúng là như vậy), nhưng sửa đổi AndroidManifest.xml, sau đó hoàn tác chỉnh sửa đó, sau đó lưu tệp làm việc cho tôi. Nếu tôi làm sạch dự án sau đó, nó lại phá vỡ. Và tất cả thời gian này tôi nghĩ Xcode là IDE duy nhất có các loại lỗi bí ẩn này.
iwasrobbed

3
Bạn đã thử nhấp chuột phải vào dự án -> Công cụ Android -> Khắc phục cài đặt dự án?
Sergei

6
Vui lòng kiểm tra tệp bố cục XMl của bạn, nếu có bất kỳ lỗi nào trong xml, bạn không thể tạo R.java và lỗi cũng xuất hiện sau khi bị xóa và làm sạch.
swiftBoy

1
Chỉ là một mẹo: khi tôi chuyển IDE từ Eclipse sang Android Studio, điều này đã ngừng xảy ra với tôi.
mata

Câu trả lời:


840

Sau khi theo dõi vấn đề này, tôi cũng tìm thấy ghi chú này trong tài liệu Android:

http://source.android.com/source/USE-eclipse.html

* Lưu ý: Đôi khi Eclipse thích thêm một câu lệnh "nhập android.R" ở đầu các tệp của bạn sử dụng tài nguyên, đặc biệt là khi bạn yêu cầu Eclipse sắp xếp hoặc quản lý nhập. Điều này sẽ làm cho thực hiện của bạn để phá vỡ. Xem ra các báo cáo nhập sai này và xóa chúng. *

Trong khi đi qua các hướng dẫn mẫu Android, tôi thường sử dụng Ctrl+ Shift+ Olệnh để "Organize Imports" và tạo ra bất kỳ tuyên bố nhập khẩu mất tích. Đôi khi điều này sẽ tạo ra câu lệnh nhập không chính xác sẽ ẩn R.javalớp được tạo tự động khi bạn xây dựng.


32
Điều này cũng xảy ra, nhưng một tập tin bố trí bunged cũng có thể gây ra nó.
GHz

113
Lỗi kinh điển này đã có trong Eclipse cho NĂM và không bao giờ được sửa. 1000 người phải đối mặt với vấn đề tương tự.
Carol

52
Các nhà phát triển Eclipse, vui lòng xóa $ £% & "$ & / bug! Các nhà phát triển Google, vui lòng cung cấp cho tôi bộ công cụ £ & $"% & Android tương tự như Xcode cho iPhone!
Abramodj

18
@ 2-Stroker: Đây là một lỗi. Nó đã xảy ra với tôi khi tôi tạo một dự án andorid chi nhánh mới thông qua WIZARD nhật thực và nó phàn nàn về "R không thể giải quyết". Tôi đã phải nhận xét các dòng setContentView & getMothyInflater và sau đó nhật thực tạo ra R.java mà sau đó tôi có thể bỏ ghi chú setContentView & getMothyInflator. Abramodj đã đúng, môi trường có vấn đề nghiêm trọng nếu ngay cả ví dụ 'xin chào thế giới' của bạn không được biên dịch. Sửa nó google!
CF_Maintainer 17/03/13

5
Làm cách nào Google không cấp tiền cho eclipse.org để sửa các mục như thế này?
Cris

391

Mỗi lần tôi gặp sự cố với R không được tạo hoặc thậm chí biến mất, điều này là do một số vấn đề trong tệp bố cục XML khiến ứng dụng không được xây dựng.


21
+1 cho điều này. Tôi đã có một tệp kiểu tệp cũ hơn với Parent = "android: WindowTitleBackground" và nó đã phá vỡ bản dựng của tôi và ngăn chặn mọi thứ được tạo thành "gen". Lỗi không thực sự được báo cáo ngoại trừ trong cửa sổ Console ngay khi tôi mở dự án lần đầu tiên.
Scott Persinger

12
chính xác, nếu bạn đã sao chép bố cục từ một dự án khác và đang nhận được điều này, hãy tìm các bản vẽ bị thiếu - điều đó sẽ khắc phục nó ngay lập tức!
Gabor

4
Tôi có vấn đề tương tự, có cách nào để biết phù thủy một trong những bố cục không?
Serge Kucher

3
Có, tôi đã thiếu một tệp có thể vẽ được và điều đó ngăn không cho tệp R được tạo. Điều kỳ lạ là tôi đã có một android:icon="@drawable/XXX"tuyên bố về một <item>tài nguyên trong menu, nhưng không có hình vuông màu đỏ nào báo hiệu rằng tài nguyên có thể rút được mà XXX không tìm thấy. Trong các trường hợp khác, "@drawable/YYY" đã được gắn cờ khi không tìm thấy YYY, nhưng không phải trong trường hợp này. Đối với một số lý do.
taylor

5
Vâng, giải quyết tuyệt vời. Khi một người gặp lỗi này .. nhiều lần tất cả các tệp bố cục được đánh dấu là có lỗi .. Điều này là do tất cả họ đang tìm kiếm R. Tuy nhiên, một trong số họ có thể có lỗi không liên quan đến việc hủy bỏ bản dựng. Trong trường hợp của tôi, một mất tích có thể rút ra.
Todd Painton

201

Bất cứ khi nào bạn nhận được

R không thể được giải quyết

sau đó kiểm tra /resthư mục và phải có một số tệp có lỗi trong đó và điều đó ngăn ứng dụng được xây dựng. Ví dụ, nó có thể là một tệp bố cục hoặc có thể do một số tài nguyên bị thiếu, nhưng bạn đã xác định nó trong tệp XML.

Nếu bạn có bất kỳ hình ảnh bổ sung, thậm chí không sử dụng (!) Hoặc không được ước tính (!) Trong một thư mục như res / drawables-mdpi không tuân thủ các quy ước đặt tên tệp (chỉ có thể chứa [a-z0-9_.]), Lớp R.java có thể không tạo ra, gây ra chuỗi sự kiện tất cả các bài đăng khác được đề cập. Hy vọng nó giúp!


Tôi đã có vấn đề này với ApiDemos mẫu. Một số tài nguyên bị thiếu trong tệp String.xml. Lỗi XML được liệt kê trong bảng điều khiển của Eclipse.
lemotdit

cảm ơn bạn! đây là vấn đề của tôi, tôi có một bố cục bị lỗi nhưng không có tin nhắn nào về nó.

29
Làm thế nào bạn có thể kiểm tra lỗi? Tôi không nhận được gì trong bảng điều khiển của mình khi xây dựng / chạy
Vincent

4
Làm thế nào để tìm ra tập tin WHICH xml gây ra lỗi? Nhật thực không đánh dấu chúng!
Yar

1
Tôi đã có 2 hình ảnh có cùng tên trong thư mục hdpi (1 với png và 1 với định dạng jpg) xóa 1 trong số chúng đã giải quyết vấn đề
Haseeb Jadoon

134

Dự án của tôi đã bao gồm một r.java.at ngay từ đầu, R.layout.main hoạt động tốt. Nhưng, sau khi thêm một số mã, nó không hoạt động và lỗi là R.layout.main không thể giải quyết. Vấn đề là gì ?

Nhìn vào hàng nhập khẩu của bạn. Rất có thể là dòng:

import android.R;

sẽ ở đó. Nếu đó là trường hợp, hãy xóa nó, để dự án của bạn sẽ giải quyết R không phải bằng lớp Tài nguyên Android mặc định, mà bằng một lớp được tạo tự động từ thư mục / res / của bạn.


5
Cảm ơn @ Dimitar, đã khắc phục vấn đề của tôi! Eclipse và tính năng tự động nhập dường như đã giúp tôi tự động bằng cách thêm dòng nhập đó.
Steven

7
Tôi cũng gặp vấn đề tương tự khi đặt tên bố cục bằng chữ in hoa
Travis

Đây là một trong 5 lý do hàng đầu khiến mọi người nhận được "R không tìm thấy". Tôi đã biên soạn một trang vấn đề / giải pháp với hình ảnh hiển thị 5 chính ở liên kết bên dưới. Thực sự hy vọng danh sách này giúp mọi người vì đây là một vấn đề phổ biến. spragucm.wordpress.com/2014/05/13/ khăn
Chris Sprague

sau khi xóa R, tại một số nơi R được sử dụng làm lớp & hiện đang báo lỗi, Làm thế nào để giải quyết vấn đề đó?
Narendra Jaggi

96

Và một điều nữa có thể gây ra vấn đề này:

Tôi đã cài đặt ADT mới (câu 22). Nó dừng tạo genthư mục bao gồm R.java. Giải pháp là cũng cài đặt Công cụ xây dựng SDK Android mới từ Trình quản lý SDK Android.

Giải pháp tìm thấy ở đây


Bản thân tôi cũng vậy. Và khi tôi chọn trình quản lý SDK, lo và kìa, các công cụ xây dựng sẽ tự động kiểm tra cài đặt, với một lưu ý rằng nó chưa được cài đặt! Đưa cái gì???
David tại HotspotOffice

Tôi gặp vấn đề tương tự. Tôi rất vui vì bạn đã chia sẻ điều này. Tôi đã tìm lỗi từ mã của riêng tôi hai ngày. Tôi rất thích Google, vì thông báo lỗi này rất khó giải quyết, nhưng nguyên nhân là do lỗi của chính họ, mặc dù các công cụ không báo cáo chính xác nguyên nhân gây ra nó. Tôi đã thực hiện các thay đổi đồng thời cho dự án của mình vì vậy tôi nghĩ rằng đó là lỗi của tôi một lần nữa.
Reijo Korhonen

5
Làm việc cho tôi, cảm ơn! Nó chỉ củng cố câu thần chú của tôi: "không bao giờ cập nhật bất cứ điều gì trong khi phát triển".
Rodrigo Dias

tôi đã đi loanh quanh tìm kiếm câu trả lời nhưng không có gì hiệu quả với tôi. Tôi nghĩ đó là một vấn đề nhật thực hoặc sdk. Vì vậy, như bạn đang nói, tôi chỉ cần xóa gói nhật thực và cài đặt lại. và sau đó nó đang làm việc. câu trả lời của bạn đã được trợ giúp
người mới bắt đầu

Đây là vấn đề trong trường hợp của tôi! Đã một ngày cố gắng sửa lỗi R, thêm / xóa tham chiếu và thử các tùy chọn khác. Mine là một thiết lập mới của ADT, và một dự án Android mới, và vẫn đang gặp lỗi. Hóa ra cuối cùng, tôi đã phải cài đặt tất cả các bản cập nhật có sẵn của Công cụ SDK Android, Công cụ nền tảng SDK Android và Công cụ xây dựng SDK: p
Saurabh Kumar

87

R.javalà một tệp mà các plugin Android Eclipse tạo ra trong khi xây dựng ứng dụng của bạn. R.javađược tạo trong thư mục "gen". Tập tin này được tạo từ thông tin trong thư mục "res". Nếu bạn chạy chọn "Project" -> "Clean ..." trên menu Eclipse, nó sẽ xóa và sau đó tạo lại R.javatệp.

Vấn đề "R không thể giải quyết" xảy ra khi bạn thay đổi tên gói trong AndroidManifest.xmltệp. Nó sử dụng tên gói Android của bạn để tạo thư mục con trong thư mục "gen" nơi lưu trữ R.javatệp.

Eclipse có thể có vấn đề khi thực hiện sạch, vì nó bị nhầm lẫn về vị trí của R.javatệp khi bạn đã thay đổi tên gói Android. Bạn có thể đổi tên thư mục con bên dưới genđể khớp với tên gói mới của bạn hoặc bạn có thể thay đổi tên gói của mình thành tên cũ. Làm sạch và sau đó thay đổi tên gói thành tên mới bạn muốn. Điều này hoạt động tốt nhất nếu bạn ngăn Eclipse cố gắng xây dựng trong khi bạn đang thay đổi tên gói. Trong menu "Dự án", bỏ chọn tùy chọn "Xây dựng tự động" và cả khi hộp thoại "Làm sạch ..." hỏi có nên "Bắt đầu xây dựng ngay lập tức" bỏ chọn hộp để nó không cố gắng xây dựng trong khi bạn đang thay đổi Tên gói. Sau khi thay đổi tên, bạn có thể bật lại "Xây dựng tự động".

Lưu ý rằng nếu AndroidManifest.xmltên gói tệp của bạn không khớp với tên gói Java của bạn, Eclipse sẽ tự động thêm "nhập <tên gói Android của bạn> .R;" trong tất cả các .javatệp của bạn có bất kỳ tham chiếu nào đến R. Nếu bạn thay đổi AndroidManifest.xml tên gói của mình , đôi khi Eclipse không cập nhật tất cả các nhập khẩu được thêm này. Nếu điều đó xảy ra, hãy sử dụng tái cấu trúc Eclipse ( ALT+ Shift+ R) để thay đổi câu lệnh nhập trong một trong các tệp Java của bạn thành AndroidManifest.xmltên gói mới của bạn . Tốt nhất là làm điều này trong khi bạn đã tắt "Xây dựng tự động".


21
Điều này trông giống như một vết cắt và dán mà không cần tham khảo
Casebash

1
Nhiều bản sao / Dán tệp và tái cấu trúc tên dẫn đến cùng một vấn đề, mặc dù tất cả tên và nội dung của tệp đều ổn. Làm sạch dự án, xóa R.java bằng tay và tất cả các tiêu đề nhập, sau đó xây dựng lại các tiêu đề nhập này (vẫn với CTRL + SHIFT + O) hoạt động tốt.
hornetbzz

Điều này làm việc cho tôi. Tôi đã thay đổi tên gói trong bảng kê khai. Tôi đã phải sử dụng ctrl-shift-O trong các lớp tham chiếu các giá trị lớp R được tạo để thêm nhập chính xác.
Chuck Krutsinger

CÁi này đã sửa nó giúp tôi. Cũng đã thấy vấn đề nhập xảy ra trong quá khứ, nhưng lần này vấn đề là tên gói trong tệp kê khai không khớp với tên gói trong thư mục src.
Jim Range

Tôi đã có hai hoạt động trong ứng dụng của tôi. Một cái có tên gói khác với tên mà R được tạo. Tôi đã phải nhập R thủ công bằng cách sử dụng một cái gì đó nhưimport com.example.main.package.name.R;
Oliver Moran

85

Điều Will nói là đúng

R là một lớp được tạo tự động chứa các hằng số được sử dụng để xác định các tài nguyên> của bạn. Nếu bạn không có tệp R.java (đó sẽ là gen / eu.mauriziopz.gps / R.java trong> Eclipse với 1.5 SDK) Tôi sẽ khuyên bạn nên đóng và mở lại dự án của bạn hoặc đi đến> Dự án> Xây dựng tất cả (và chọn "Xây dựng tự động" trong khi có khuyến nghị của> Josef). Nếu điều đó không hiệu quả hơn là thử làm một dự án mới, nếu vấn đề được tái tạo hơn> đăng lại ở đây và chúng ta sẽ đi vào chi tiết hơn.

nhưng tôi đã phát hiện ra rằng có một vấn đề khác gây ra vấn đề đầu tiên. Các công cụ trong thư mục SDK không có quyền được thực thi, do đó, nó giống như không tồn tại cho Eclipse, do đó nó không xây dựng R.javatệp.

Vì vậy, sửa đổi quyền và chọn "Xây dựng tự động" đã giải quyết vấn đề.


@Jignesh - cd $ANDROID_SDK_ROOT/build-tools/<version>. Sau đó, chmod a+xtrên các tập tin thích aapt, aidl, dexdump, dxvv ANDROID_SDK_ROOTnên được đặt trong môi trường của bạn, và nó sẽ trỏ đến cài đặt SDK của bạn. Ví dụ , /opt/android-sdk. Điều quan trọng là phải đặt cả hai ANDROID_SDK_ROOTANDROID_NDK_ROOTvì các công cụ Android sử dụng chúng trong nội bộ. Xem thư mục NDK được đề xuất? trong danh sách của người dùng NDK.
jww

@Lewis .. Tôi đã chọn "Xây dựng tự động" nhưng lỗi vẫn còn.
d_unknown

39

R là một lớp được tạo tự động chứa các hằng số được sử dụng để xác định tài nguyên của bạn. Nếu bạn không có tệp R.java (đó sẽ là gen / eu.mauriziopz.gps / R.java trong Eclipse với 1.5 SDK), tôi khuyên bạn nên đóng và mở lại dự án của bạn hoặc đi đến Dự án> Xây dựng tất cả (và chọn "Xây dựng tự động" trong khi có khuyến nghị của Josef). Nếu điều đó không hiệu quả hơn là thử làm một dự án mới, nếu vấn đề được tái tạo hơn là đăng lại ở đây và chúng ta sẽ đi vào chi tiết hơn.


8
Điều này làm việc cho tôi, nhưng trước tiên tôi phải "Dự án -> Làm sạch ...".
Matt Connolly

27

Đóng tất cả các tệp, làm sạch dự án, khởi động lại Eclipse.


23
+1 Nhưng đôi khi nó cần 3 lần khởi động lại nhật thực và 7 lần xóa dự án ở giữa. Hãy tiếp tục cố gắng ;-) #rant
Matthias Bauch

3
Trộn nó với việc chạm (chỉnh sửa + lưu) các tệp .xml (String.xml ...).
Ali Shakiba

24

Đó là giá trị kiểm tra trong AndroidManifest.xml. Thuộc tính packagecó giá trị chính xác.

Đó là:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="your.correct.package.name"
   ...

Sau khi bạn thay đổi điều đó, R.javasẽ được tạo lại.


Tên gói ban đầu của tôi là com.xxxxxdroid.router. Tôi đã tạo một phiên bản mới của ứng dụng com.xxxxxdroid2.router. Khi tôi đã hoàn thành việc này, tôi phải cập nhật tên gói trong AndroidManifest.xml, nhưng chỉ sau đó tôi đã bắt đầu sao chép và dán các lớp cũ. Cảm ơn con trỏ!
Eugene van der Merwe

điều này đã khắc phục sự cố của tôi, tôi đang làm việc trong một tệp xml, rất vui vì tôi đã nhớ được cái nào, tôi đã tải được chúng ... cảm ơn ...
GHz

19

Lỗi này cũng có thể được gây ra bằng cách thêm một hoạt động vào một không gian tên khác với không gian tên gốc cho gói của bạn.

Ví dụ: nếu com.example.myapplà không gian tên gốc cho gói của bạn, thì bạn có thể thêm một hoạt động vào com.example.myapp.activitieskhông gian tên.

Điều này sẽ tạo ra lỗi "R không thể giải quyết".

Để sửa lỗi nhập R trong không gian tên mặc định trong hoạt động của bạn phải là:

import com.example.myapp.R;

Điều này giúp tôi, tôi đã chuyển các hoạt động của mình vào một gói bên dưới gốc, thêm gói gốc dưới dạng nhập (nhập com.example.myapp.R;) đã giải quyết vấn đề.
háo hức

19

Cùng với các đề xuất tuyệt vời trong các câu trả lời trước, hãy đảm bảo mục tiêu Android của bạn được đặt:

  1. Nhấp chuột phải vào dự án của bạn
  2. Chọn thuộc tính
  3. Chọn Android trong menu bên trái
  4. Đánh dấu vào ô bên cạnh Mục tiêu xây dựng dự án thích hợp.
  5. Nhấp vào Áp dụng và OK

Chỉnh sửa: Một năm sau tôi tìm thấy một nguyên nhân khác. Tôi đã có một hình ảnh .jpg trong thư mục drawable của tôi có cùng tên với một hình ảnh .png. Tham chiếu hình ảnh này trong mã của tôi phải nhầm lẫn chương trình và nó đã báo lỗi "R không thể giải quyết".


17

Đảm bảo bạn đã cài đặt trình quản lý sdk của công cụ xây dựng Android

dự án nhấp chuột phải thuộc tính-> Java BuildPath chọn Thư viện và thêm android-support.jar theo các bước sau.

Chuyển đến Project-> Properties-> Java Build Path hơn là chọn tab Đặt hàng và xuất. Đặt thư viện .jar hỗ trợ android đã được kiểm tra và đưa nó lên đầu danh sách. Và làm sạch và xây dựng lại .. Nó hoạt động cho hầu hết các trường hợp

nhập mô tả hình ảnh ở đây


15

Tôi mới gặp vấn đề này lần thứ một triệu và nhận ra điều gì đã gây ra nó: Tôi đã tạo một tệp XML có chữ in hoa trong tên. Tất cả tên tệp XML của bạn /resphải phù hợp [a-z0-9\\._].


Ngoài ra, tôi chỉ nhận thấy tràn ngăn xếp yêu cầu chúng tôi thoát khỏi tất cả các dấu gạch chéo ngược.

14

Giải pháp đơn giản nhất - Đôi khi bạn chỉ cần lưu tệp XML mà bạn đang làm việc để có trình phát tự động khởi động.

Lưu tệp (ví dụ: tệp main.xml) sau đó xóa tệp R.java và xem liệu R.java được tái tạo có giải quyết được vấn đề giải quyết R không.


Thật. Đôi khi, nếu nó nói rằng có vấn đề trong XML của bạn thì không có (dòng nguệch ngoạc màu đỏ hoặc dấu chấm than màu vàng), hãy xóa dòng vi phạm, lưu tệp XML, dán lại dòng đó và lưu lại. Nếu bạn không xây dựng tự động, hãy xây dựng lại sau đó và nó có thể hoạt động. Nhật thực đôi khi thật ngu ngốc. :)
hotshot309

Mặc dù các câu trả lời khác được liệt kê ở trên, nhưng câu trả lời này hóa ra là câu trả lời đúng cho tôi. Ban đầu, tôi nhận được thông báo "không thể tìm thấy APK" khi tôi biên dịch một số mã mẫu, sau đó thực hiện Clean tạo ra một tấn lỗi "R không thể giải quyết", sau đó chỉ cần mở tệp .xml và lưu lỗi thủ công. đã bị xóa và tôi có thể biên dịch.
sXe

Rất đúng: Sau khi làm sạch các dự án, R.java đã biến mất - chỉnh sửa và lưu chuỗi String giải quyết vấn đề.
BurninLeo

12

Kiểm tra tên tệp XML. Hãy chắc chắn rằng tất cả chúng đều viết thường.

Ngoài ra, hãy đảm bảo rằng bất kỳ tên tài nguyên hình ảnh nào cũng nằm trong LOWER CASE. Tôi đã có một chữ in hoa trong tên của tệp jpg của mình và nó đã gây ra lỗi R chưa được giải quyết ngay trong dự án của tôi.


+1 cho điều này là vấn đề của tôi. Bạn phải đặt tên cho hình ảnh của mình như vậy: eicon.png chứ không phải eIcon.png. Tôi tìm thấy lỗi bằng cách nhìn vào Consol. Nó đã trả về một lỗi trên tệp có Tên tệp không hợp lệ: ...
jasonflaherty


10

Lỗi này xuất hiện trên bản cài đặt x64 Linux Mint của tôi. Hóa ra kết quả là lỗi ADBnhị phân, vì ia32-libsgói không được cài đặt. Chỉ cần chạy apt-get install ia32-libsvà khởi chạy lại Eclipse đã sửa lỗi.

Nếu bản phân phối x64 của bạn không có ia32-libs, bạn sẽ phải truy cập Multiarch.

Kiểm tra số 4 và số 5 trên bài đăng này: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883

Hy vọng điều này sẽ giúp được ai đó.


Điều đáng chú ý là nếu bạn có bản cài đặt Linux 64 bit, bạn S need cần ia32-libs. Nếu bạn không có nó, cố gắng thực thi lệnh adb sẽ dẫn đến một thông báo lạ nói rằng nó không thể tìm thấy tệp hoặc thư mục.
rs_atl

10

Bạn có thể cần cập nhật / cài đặt các công cụ SDK. Khởi chạy lại Trình quản lý SDK Android một lần nữa và cài đặt một mục mới: Android SDK Build-tools.one bằng một lần xóa, sửa cái nào phù hợp với bạn.nhập mô tả hình ảnh ở đây


9

Bạn có thể cần cập nhật các công cụ SDK. Khởi chạy lại Trình quản lý SDK Android và cài đặt một mục mới: Công cụ xây dựng SDK Android.

nhập mô tả hình ảnh ở đây


8

Tôi đã có vấn đề này là tốt. Hóa ra tôi đã vô tình xóa tài nguyên chuỗi "app_name" khỏi strings.xmltệp, điều này gây ra lỗi im lặng. Khi tôi thêm nó trở lại, lớp R đã được tạo thành công và mọi thứ đều được sao lưu và chạy.


6

Cố gắng làm cho tên tệp bố cục XML mới của bạn viết thường. Ví dụ, sử dụng my_file.xmlthay vì myFile.xml.


+1 CÓ! Hãy chắc chắn rằng nó tuân theo các quy ước đặt tên chính xác ... [a-z0-9_.]
jasonflaherty

6

Tuy nhiên, một lý do khác R.javacó thể không được tự động phát sinh là nếu bạn có các thư mục như res / drawable-hdpi , res / drawable-mdpi hoặc res / drawable-ldpi .

1.6+ có vẻ ổn với các thư mục này, nhưng 1.5 không muốn chúng. Khi tôi xóa các thư mục đó, R.javabắt đầu tự động tạo lại cho tôi.


6

Kiểm tra đầu tiên có bất kỳ lỗi trong bất kỳ bố trí xml nào hay không, nếu sau đó giải quyết nó trước.

Nếu không thì loại bỏ sự phụ thuộc của Junit khỏi dự án và xây dựng lại dự án.

nhập mô tả hình ảnh ở đây


5

Thường thì điều này là do số phiên bản MinSDK bạn đã cung cấp khi tạo dự án. Thí dụ:

Nếu bạn muốn 2.1 là mức tối thiểu, Android 2.1 thực sự là API cấp 7.

Bạn có thể thấy những gì tôi đang nói khi duyệt qua SDK bạn đã tải xuống và cài đặt. Điều hướng đến nơi bạn đã cài đặt SDK tới ( C:\android-sdk-windowsví dụ) và mở thư mục có tên "nền tảng". Bạn sẽ thấy một cái gì đó như "android-7" được liệt kê dưới dạng thư mục và nếu bạn mở có một source.propertiestệp, khi được mở bằng trình chỉnh sửa văn bản, sẽ hiển thị cho bạn phiên bản nền tảng tương ứng.

Khi bạn tạo dự án và bạn phải chọn API "Xây dựng mục tiêu", cột cuối cùng trong danh sách đó có tên "Cấp độ API" hiển thị số bạn đang tìm kiếm khi điền vào cài đặt MinSDK.

Đây có lẽ là một trong những lỗi phổ biến nhất dẫn đến việc R.javatệp không được tạo trong Project> gen> packagename> R.java.


5

Loại bỏ main.out.xml. Tôi chưa quen với điều này và chưa biết tập tin này được sử dụng để làm gì, nhưng việc xóa nó đã giải quyết vấn đề.


5

Chỉ cần vào danh sách menu Android Top. nhấp vào Build Menu, trong mục Build click vào Rebuild Project .

nhập mô tả hình ảnh ở đây


4

Tôi đã có các ví dụ về Android 8 và đang cố gắng sử dụng SDK Android 7. Khi tôi đóng dự án và mở lại thư mục ứng dụng và chọn sử dụng SDK Android 8, nó có thể tìm thấy tệp R. Hi vọng điêu nay co ich.


4

Trong trường hợp của tôi, tôi đã có một lỗi trong tôi AndroidManifest.xml. Những người khác đã nói rằng các tệp XML của bạn phải không có lỗi, nhưng tôi chỉ tìm trong thư mục res /. Tìm và sửa càng nhiều lỗi có thể và vấn đề có thể tự giải quyết.


Đây là thủ phạm trong trường hợp của tôi. BẤT K error lỗi nào trong tệp manifest.xml có thể gây ra sự cố này nếu R.java chưa được xây dựng.
Scott Bigss

4

Trong trường hợp bất cứ ai quan tâm (tôi có thể cứu mạng bạn ở đây), tôi đã gặp lỗi, R.xmlkhông thể giải quyết, hơi khác một dự án GLS. Hừm. Sau khi nhìn vào R.java, tôi thấy một lớp được tạo tự động XML.java, (tôi nghĩ) không có ở đó.

Giải pháp? Nó cần một thư mục mới trong res: res\xmlvà một tệp được gọi default_values.xml trong đó. Sau đó tất cả đều ổn.

Chỉ trong trường hợp bạn chưa có tập tin đó, nó:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">
</PreferenceScreen>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.